{"version":3,"file":"static/js/edc81a76606753dee908.bundle.js","mappings":";gKAEA,SAASA,EAAcC,GACrB,IAAIC,ECFN,SAAqBD,EAAGE,GACtB,GAAI,WAAY,OAAQF,KAAOA,EAAG,OAAOA,EACzC,IAAIG,EAAIH,EAAEI,OAAOC,aACjB,QAAI,IAAWF,EAAG,CAChB,IAAIF,EAAIE,EAAEG,KAAKN,EAAGE,GAAK,WACvB,GAAI,WAAY,OAAQD,GAAI,OAAOA,EACnC,MAAM,IAAIM,UAAU,gDAEtB,OAAQ,WAAaL,EAAIM,OAASC,QAAQT,GDNlCK,CAAYL,EAAG,UACvB,MAAO,WAAY,OAAQC,GAAKA,EAAIA,EAAI,GEH1C,SAASS,EAAgBP,EAAGD,EAAGF,GAC7B,OAAQE,EAAIH,EAAcG,MAAOC,EAAIQ,OAAOC,eAAeT,EAAGD,EAAG,CAC/DW,MAAOb,EACPc,YAAY,EACZC,cAAc,EACdC,UAAU,IACPb,EAAED,GAAKF,EAAGG,cCPjB,OAOC,WACA,aAEA,IAAIc,EAAS,GAAGC,eAEhB,SAASC,IAGR,IAFA,IAAIC,EAAU,GAELnB,EAAI,EAAGA,EAAIoB,UAAUC,OAAQrB,IAAK,CAC1C,IAAIsB,EAAMF,UAAUpB,GAChBsB,IACHH,EAAUI,EAAYJ,EAASK,EAAWF,KAI5C,OAAOH,EAGR,SAASK,EAAYF,GACpB,GAAmB,iBAARA,GAAmC,iBAARA,EACrC,OAAOA,EAGR,GAAmB,iBAARA,EACV,MAAO,GAGR,GAAIG,MAAMC,QAAQJ,GACjB,OAAOJ,EAAWS,MAAM,KAAML,GAG/B,GAAIA,EAAIM,WAAalB,OAAOmB,UAAUD,WAAaN,EAAIM,SAASA,WAAWE,SAAS,iBACnF,OAAOR,EAAIM,WAGZ,IAAIT,EAAU,GAEd,IAAK,IAAIY,KAAOT,EACXN,EAAOX,KAAKiB,EAAKS,IAAQT,EAAIS,KAChCZ,EAAUI,EAAYJ,EAASY,IAIjC,OAAOZ,EAGR,SAASI,EAAaX,EAAOoB,GAC5B,OAAKA,EAIDpB,EACIA,EAAQ,IAAMoB,EAGfpB,EAAQoB,EAPPpB,EAU4BqB,EAAOC,SAC3ChB,EAAWiB,QAAUjB,EACrBe,EAAOC,QAAUhB,QAKhB,KAFwB,EAAF,WACtB,OAAOA,GACP,QAFoB,OAEpB,aAjEH,+HCSA,IAAIkB,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgB1B,OAAO6B,gBAClB,CAAEC,UAAW,cAAgBf,OAAS,SAAUY,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAErB,eAAewB,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAGrB,SAASI,EAAUL,EAAGC,GAEzB,SAASK,IAAOC,KAAKC,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAER,UAAkB,OAANS,EAAa5B,OAAOoC,OAAOR,IAAMK,EAAGd,UAAYS,EAAET,UAAW,IAAIc,GAG5E,IAAII,EAAW,WAQlB,OAPAA,EAAWrC,OAAOsC,QAAU,SAAkBjD,GAC1C,IAAK,IAAIkD,EAAGjD,EAAI,EAAGkD,EAAI9B,UAAUC,OAAQrB,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIyC,KADTQ,EAAI7B,UAAUpB,GACOU,OAAOmB,UAAUZ,eAAeZ,KAAK4C,EAAGR,KAAI1C,EAAE0C,GAAKQ,EAAER,IAE9E,OAAO1C,IAEK4B,MAAMiB,KAAMxB,YAGzB,SAAS+B,EAAOF,EAAG/C,GACtB,IAAIH,EAAI,GACR,IAAK,IAAI0C,KAAKQ,EAAOvC,OAAOmB,UAAUZ,eAAeZ,KAAK4C,EAAGR,IAAMvC,EAAEkD,QAAQX,GAAK,IAC9E1C,EAAE0C,GAAKQ,EAAER,IACb,GAAS,MAALQ,GAAqD,mBAAjCvC,OAAO2C,sBACtB,KAAIrD,EAAI,EAAb,IAAgByC,EAAI/B,OAAO2C,sBAAsBJ,GAAIjD,EAAIyC,EAAEpB,OAAQrB,IAC3DE,EAAEkD,QAAQX,EAAEzC,IAAM,GAAKU,OAAOmB,UAAUyB,qBAAqBjD,KAAK4C,EAAGR,EAAEzC,MACvED,EAAE0C,EAAEzC,IAAMiD,EAAER,EAAEzC,KAE1B,OAAOD,EAGJ,SAASwD,EAAWC,EAAYC,EAAQ1B,EAAK2B,GAChD,IAA2HrB,EAAvHsB,EAAIvC,UAAUC,OAAQpB,EAAI0D,EAAI,EAAIF,EAAkB,OAATC,EAAgBA,EAAOhD,OAAOkD,yBAAyBH,EAAQ1B,GAAO2B,EACrH,GAAuB,iBAAZG,SAAoD,mBAArBA,QAAQC,SAAyB7D,EAAI4D,QAAQC,SAASN,EAAYC,EAAQ1B,EAAK2B,QACpH,IAAK,IAAI1D,EAAIwD,EAAWnC,OAAS,EAAGrB,GAAK,EAAGA,KAASqC,EAAImB,EAAWxD,MAAIC,GAAK0D,EAAI,EAAItB,EAAEpC,GAAK0D,EAAI,EAAItB,EAAEoB,EAAQ1B,EAAK9B,GAAKoC,EAAEoB,EAAQ1B,KAAS9B,GAChJ,OAAO0D,EAAI,GAAK1D,GAAKS,OAAOC,eAAe8C,EAAQ1B,EAAK9B,GAAIA,EAOzD,SAAS8D,EAAWC,EAAaC,GACpC,GAAuB,iBAAZJ,SAAoD,mBAArBA,QAAQK,SAAyB,OAAOL,QAAQK,SAASF,EAAaC,GAG7G,SAASE,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU/D,GAAS,IAAMgE,EAAKL,EAAUM,KAAKjE,IAAW,MAAOV,GAAKwE,EAAOxE,IACpF,SAAS4E,EAASlE,GAAS,IAAMgE,EAAKL,EAAiB,MAAE3D,IAAW,MAAOV,GAAKwE,EAAOxE,IACvF,SAAS0E,EAAKG,GAAUA,EAAOC,KAAOP,EAAQM,EAAOnE,OAJzD,SAAeA,GAAS,OAAOA,aAAiB0D,EAAI1D,EAAQ,IAAI0D,GAAE,SAAUG,GAAWA,EAAQ7D,MAI7BqE,CAAMF,EAAOnE,OAAOsE,KAAKP,EAAWG,GAClGF,GAAML,EAAYA,EAAU5C,MAAMyC,EAASC,GAAc,KAAKQ,WAI/D,SAASM,EAAYf,EAASgB,GACjC,IAAsGC,EAAGC,EAAGvF,EAAGwF,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAP3F,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAO4F,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,mBAAX1F,SAA0BoF,EAAEpF,OAAO2F,UAAY,WAAa,OAAOlD,OAAU2C,EACvJ,SAASM,EAAK3C,GAAK,OAAO,SAAU6C,GAAK,OACzC,SAAcC,GACV,GAAIX,EAAG,MAAM,IAAI/E,UAAU,mCAC3B,KAAOkF,OACH,GAAIH,EAAI,EAAGC,IAAMvF,EAAY,EAARiG,EAAG,GAASV,EAAU,OAAIU,EAAG,GAAKV,EAAS,SAAOvF,EAAIuF,EAAU,SAAMvF,EAAEM,KAAKiF,GAAI,GAAKA,EAAET,SAAW9E,EAAIA,EAAEM,KAAKiF,EAAGU,EAAG,KAAKhB,KAAM,OAAOjF,EAE3J,OADIuF,EAAI,EAAGvF,IAAGiG,EAAK,CAAS,EAARA,EAAG,GAAQjG,EAAEa,QACzBoF,EAAG,IACP,KAAK,EAAG,KAAK,EAAGjG,EAAIiG,EAAI,MACxB,KAAK,EAAc,OAAXR,EAAEC,QAAgB,CAAE7E,MAAOoF,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGQ,EAAEC,QAASH,EAAIU,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKR,EAAEI,IAAIK,MAAOT,EAAEG,KAAKM,MAAO,SACxC,QACI,KAAMlG,EAAIyF,EAAEG,MAAM5F,EAAIA,EAAEsB,OAAS,GAAKtB,EAAEA,EAAEsB,OAAS,KAAkB,IAAV2E,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAER,EAAI,EAAG,SACjG,GAAc,IAAVQ,EAAG,MAAcjG,GAAMiG,EAAG,GAAKjG,EAAE,IAAMiG,EAAG,GAAKjG,EAAE,IAAM,CAAEyF,EAAEC,MAAQO,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYR,EAAEC,MAAQ1F,EAAE,GAAI,CAAEyF,EAAEC,MAAQ1F,EAAE,GAAIA,EAAIiG,EAAI,MAC7D,GAAIjG,GAAKyF,EAAEC,MAAQ1F,EAAE,GAAI,CAAEyF,EAAEC,MAAQ1F,EAAE,GAAIyF,EAAEI,IAAIM,KAAKF,GAAK,MACvDjG,EAAE,IAAIyF,EAAEI,IAAIK,MAChBT,EAAEG,KAAKM,MAAO,SAEtBD,EAAKZ,EAAK/E,KAAK+D,EAASoB,GAC1B,MAAOtF,GAAK8F,EAAK,CAAC,EAAG9F,GAAIoF,EAAI,EAAK,QAAUD,EAAItF,EAAI,EACtD,GAAY,EAARiG,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEpF,MAAOoF,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,GArB9BJ,CAAK,CAAC1B,EAAG6C,MAkCtD,SAASI,EAASC,GACrB,IAAInD,EAAsB,mBAAX9C,QAAyBA,OAAO2F,SAAUO,EAAIpD,GAAKmD,EAAEnD,GAAIjD,EAAI,EAC5E,GAAIqG,EAAG,OAAOA,EAAEhG,KAAK+F,GACrB,GAAIA,GAAyB,iBAAbA,EAAE/E,OAAqB,MAAO,CAC1CwD,KAAM,WAEF,OADIuB,GAAKpG,GAAKoG,EAAE/E,SAAQ+E,OAAI,GACrB,CAAExF,MAAOwF,GAAKA,EAAEpG,KAAMgF,MAAOoB,KAG5C,MAAM,IAAI9F,UAAU2C,EAAI,0BAA4B,mCAGjD,SAASqD,EAAOF,EAAGlD,GACtB,IAAImD,EAAsB,mBAAXlG,QAAyBiG,EAAEjG,OAAO2F,UACjD,IAAKO,EAAG,OAAOD,EACf,IAAmBnG,EAAYC,EAA3BF,EAAIqG,EAAEhG,KAAK+F,GAAOG,EAAK,GAC3B,IACI,WAAc,IAANrD,GAAgBA,KAAM,MAAQjD,EAAID,EAAE6E,QAAQG,MAAMuB,EAAGL,KAAKjG,EAAEW,OAExE,MAAO4F,GAAStG,EAAI,CAAEsG,MAAOA,GAC7B,QACI,IACQvG,IAAMA,EAAE+E,OAASqB,EAAIrG,EAAU,SAAIqG,EAAEhG,KAAKL,GAElD,QAAU,GAAIE,EAAG,MAAMA,EAAEsG,OAE7B,OAAOD,EASJ,SAASE,IACZ,IAAK,IAAIxD,EAAI,EAAGjD,EAAI,EAAG0G,EAAKtF,UAAUC,OAAQrB,EAAI0G,EAAI1G,IAAKiD,GAAK7B,UAAUpB,GAAGqB,OACxE,IAAIpB,EAAIwB,MAAMwB,GAAI0D,EAAI,EAA3B,IAA8B3G,EAAI,EAAGA,EAAI0G,EAAI1G,IACzC,IAAK,IAAI4G,EAAIxF,UAAUpB,GAAI6G,EAAI,EAAGC,EAAKF,EAAEvF,OAAQwF,EAAIC,EAAID,IAAKF,IAC1D1G,EAAE0G,GAAKC,EAAEC,GACjB,OAAO5G,8OCzJX,IACI8G,EAAc,GAClBrG,OAAOsG,OAAOD,GACd,IAAIE,EAAe,GACnBvG,OAAOsG,OAAOC,GACd,IAAIC,EAAa,GACjB,SAASC,IACL,MAAsB,oBAAXC,OACAA,YAEW,IAAX,EAAA7B,EACA,EAAAA,EAES,oBAAT8B,KACAA,KAEJH,EAEX,SAASI,IACL,QAASC,GAAYC,SAEzB,SAASC,EAAKC,GAEV,MADAC,GAAU,EAAOD,GACX,IAEV,SAASC,EAAUC,EAAOF,GACtB,IAAKE,EACD,MAAM,IAAIC,MAAM,WAAaH,GA3Bd,8FAiDvB,SAASI,EAAKC,GACV,IAAIC,GAAU,EACd,OAAO,WACH,IAAIA,EAGJ,OADAA,GAAU,EACHD,EAAKpG,MAAMiB,KAAMxB,YAGhC,IAAI6G,EAAO,aASX,SAASC,EAAStH,GACd,OAAiB,OAAVA,GAAmC,iBAAVA,EAEpC,SAASuH,EAAcvH,GACnB,GAAc,OAAVA,GAAmC,iBAAVA,EACzB,OAAO,EACX,IAAIwH,EAAQ1H,OAAO2H,eAAezH,GAClC,OAAOwH,IAAU1H,OAAOmB,WAAuB,OAAVuG,EAyBzC,SAASE,EAAcC,EAAQC,EAAU5H,GACrCF,OAAOC,eAAe4H,EAAQC,EAAU,CACpC3H,YAAY,EACZE,UAAU,EACVD,cAAc,EACdF,MAAOA,IAGf,SAAS6H,EAAmBF,EAAQC,EAAU5H,GAC1CF,OAAOC,eAAe4H,EAAQC,EAAU,CACpC3H,YAAY,EACZE,UAAU,EACVD,cAAc,EACdF,MAAOA,IAWf,SAAS8H,EAA0BC,EAAMC,GACrC,IAAIJ,EAAW,SAAWG,EAE1B,OADAC,EAAM/G,UAAU2G,IAAY,EACrB,SAAUK,GACb,OAAOX,EAASW,KAAsB,IAAhBA,EAAEL,IAYhC,SAASM,EAASC,GACd,YAAwBC,IAApB7B,IAAY8B,KAAqBF,aAAiB5B,IAAY8B,IAItE,SAASC,EAASH,GACd,OAAOA,aAAiBI,IAG5B,SAASC,EAAgBC,GAErB,IADA,IAAIC,EAAM,KACG,CACT,IAAIrJ,EAAIoJ,EAAGxE,OACX,GAAI5E,EAAE+E,KACF,MACJsE,EAAIpD,KAAKjG,EAAEW,OAEf,OAAO0I,EAEX,SAASC,IAEL,MAA0B,mBAAXpJ,QAAyBA,OAAOC,aAAgB,gBAEnE,SAASA,EAAYQ,GACjB,OAAiB,OAAVA,EAAiB,KAAwB,iBAAVA,EAAqB,GAAKA,EAAQA,EAG5E,SAAS4I,EAAMC,EAAMC,GAEjB,IADA,IAAI7E,EAAO4E,EAAK5E,QACRA,EAAKG,MACT0E,EAAS7E,EAAKjE,OACdiE,EAAO4E,EAAK5E,OAIpB,SAAS8E,IACL,MAA0B,mBAAXxJ,QAAyBA,OAAO2F,UAAa,aAEhE,SAAS8D,EAAgBC,EAAYC,GACjCrB,EAAmBoB,EAAYF,IAAkBG,GAErD,SAASC,EAAajE,GAElB,OADAA,EAAS6D,KAAoBK,EACtBlE,EAEX,SAASmE,IACL,MAA0B,mBAAX9J,QAAyBA,OAAO+J,aAAgB,gBAEnE,SAASF,IACL,OAAOpH,KASX,IAAIuH,EAAsB,WAKtB,SAASA,EAAKxB,QACG,IAATA,IAAmBA,EAAO,QAAUrB,KACxC1E,KAAK+F,KAAOA,EACZ/F,KAAKwH,wBAAyB,EAC9BxH,KAAKyH,iBAAkB,EACvBzH,KAAK0H,UAAY,GACjB1H,KAAK2H,iBAAmB,GACxB3H,KAAK4H,UAAY,EACjB5H,KAAK6H,eAAiB,EACtB7H,KAAK8H,oBAAsBC,GAAiBC,aA0BhD,OAxBAT,EAAKtI,UAAUgJ,mBAAqB,aAGpCV,EAAKtI,UAAUiJ,iBAAmB,aAOlCX,EAAKtI,UAAUkJ,eAAiB,WAC5B,OAAOA,GAAenI,OAK1BuH,EAAKtI,UAAUmJ,cAAgB,WAC3BC,KA66CR,SAA0BC,GAEtB,GAAIA,EAAWR,sBAAwBC,GAAiBQ,MACpD,OACJD,EAAWR,oBAAsBC,GAAiBQ,MAClD,IAAIb,EAAYY,EAAWZ,UACvBtK,EAAIsK,EAAUjJ,OAClB,KAAOrB,KAAK,CACR,IAAIqC,EAAIiI,EAAUtK,GACdqC,EAAE+I,oBAAsBT,GAAiBU,aACrChJ,EAAEiJ,YAAcC,GAAUC,MAC1BC,GAAapJ,EAAG6I,GAEpB7I,EAAEqJ,iBAENrJ,EAAE+I,kBAAoBT,GAAiBQ,OA37CvCQ,CAAiB/I,MACjBgJ,MAEJzB,EAAKtI,UAAUD,SAAW,WACtB,OAAOgB,KAAK+F,MAETwB,EAxCc,GA0CrB0B,EAASnD,EAA0B,OAAQyB,GAC/C,SAAS2B,EAAWnD,EAAMoD,EAAyBC,QACf,IAA5BD,IAAsCA,EAA0B9D,QAClC,IAA9B+D,IAAwCA,EAA4B/D,GACxE,IAw6DmCgE,EAx6D/BC,EAAO,IAAI/B,EAAKxB,GAGpB,OAs6DOwD,GAAc,mBAx6DJD,EAAMH,EAw6D+BE,GAv6DtDpB,GAAmBqB,EAAMF,GAClBE,EAGX,SAASE,EAAiBxF,EAAGtE,GACzB,OAAOsE,IAAMtE,EAWjB,IAAI+J,EAAW,CACXC,SAAUF,EACVG,WAXJ,SAA4B3F,EAAGtE,GAC3B,OAAOkK,GAAU5F,EAAGtE,IAWpBH,QANJ,SAAyByE,EAAGtE,GACxB,OAjIJ,SAAoBsE,EAAGtE,GACnB,MAAoB,iBAANsE,GAA+B,iBAANtE,GAAkBmK,MAAM7F,IAAM6F,MAAMnK,GAgIpEoK,CAAW9F,EAAGtE,IAAM8J,EAAiBxF,EAAGtE,IAM/CqK,QAVJ,SAAyB/F,EAAGtE,GACxB,OAAOkK,GAAU5F,EAAGtE,EAAG,KA4BvBF,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgB1B,OAAO6B,gBAClB,CAAEC,UAAW,cAAgBf,OAAS,SAAUY,EAAGC,GAAKD,EAAEG,UAAYF,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOA,EAAErB,eAAewB,KAAIJ,EAAEI,GAAKH,EAAEG,MACpDJ,EAAGC,IAG5B,SAASI,EAAUL,EAAGC,GAElB,SAASK,IAAOC,KAAKC,YAAcR,EADnCD,EAAcC,EAAGC,GAEjBD,EAAER,UAAkB,OAANS,EAAa5B,OAAOoC,OAAOR,IAAMK,EAAGd,UAAYS,EAAET,UAAW,IAAIc,GAGnF,IAAII,EAAW,WAQX,OAPAA,EAAWrC,OAAOsC,QAAU,SAAkBjD,GAC1C,IAAK,IAAIkD,EAAGjD,EAAI,EAAGkD,EAAI9B,UAAUC,OAAQrB,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIyC,KADTQ,EAAI7B,UAAUpB,GACOU,OAAOmB,UAAUZ,eAAeZ,KAAK4C,EAAGR,KAAI1C,EAAE0C,GAAKQ,EAAER,IAE9E,OAAO1C,IAEK4B,MAAMiB,KAAMxB,YAGhC,SAASkF,EAAOF,EAAGlD,GACf,IAAImD,EAAsB,mBAAXlG,QAAyBiG,EAAEjG,OAAO2F,UACjD,IAAKO,EAAG,OAAOD,EACf,IAAmBnG,EAAYC,EAA3BF,EAAIqG,EAAEhG,KAAK+F,GAAOG,EAAK,GAC3B,IACI,WAAc,IAANrD,GAAgBA,KAAM,MAAQjD,EAAID,EAAE6E,QAAQG,MAAMuB,EAAGL,KAAKjG,EAAEW,OAExE,MAAO4F,GAAStG,EAAI,CAAEsG,MAAOA,GAC7B,QACI,IACQvG,IAAMA,EAAE+E,OAASqB,EAAIrG,EAAU,SAAIqG,EAAEhG,KAAKL,GAElD,QAAU,GAAIE,EAAG,MAAMA,EAAEsG,OAE7B,OAAOD,EAGX,SAASqG,IACL,IAAK,IAAIrG,EAAK,GAAIvG,EAAI,EAAGA,EAAIoB,UAAUC,OAAQrB,IAC3CuG,EAAKA,EAAGsG,OAAOvG,EAAOlF,UAAUpB,KACpC,OAAOuG,EAGX,IAAIuG,EAA4B,GAC5BC,EAA+B,GACnC,SAASC,EAAoCC,EAAMpM,GAC/C,IAAIqM,EAAQrM,EAAaiM,EAA4BC,EACrD,OAAQG,EAAMD,KACTC,EAAMD,GAAQ,CACXnM,cAAc,EACdD,WAAYA,EACZsM,IAAK,WAED,OADAC,EAAmBxK,MACZA,KAAKqK,IAEhBI,IAAK,SAAUzM,GACXwM,EAAmBxK,MACnBA,KAAKqK,GAAQrM,KAI7B,SAASwM,EAAmB3J,GACxB,IAA4C,IAAxCA,EAAO6J,6BAAX,CAEA,IAAI9J,EAAaC,EAAO8J,iBACxB,GAAI/J,EAEA,IAAK,IAAIzB,KADTuG,EAAc7E,EAAQ,gCAAgC,GACtCD,EAAY,CACxB,IAAInB,EAAImB,EAAWzB,GACnBM,EAAEmL,gBAAgB/J,EAAQpB,EAAE4K,KAAM5K,EAAEoL,WAAYpL,EAAEqL,gBAAiBrL,EAAEsL,sBAIjF,SAASC,EAAoBC,EAA6BL,GACtD,OAAO,WACH,IAAIG,EACAG,EAAY,SAAkBrK,EAAQwJ,EAAMQ,EAAYM,GAIxD,IAAyB,IAArBA,EAEA,OADAP,EAAgB/J,EAAQwJ,EAAMQ,EAAYhK,EAAQkK,GAC3C,KAIX,IAAKjN,OAAOmB,UAAUZ,eAAeZ,KAAKoD,EAAQ,oBAAqB,CACnE,IAAIuK,EAAsBvK,EAAO8J,iBACjCjF,EAAc7E,EAAQ,mBAAoBV,EAAS,GAAIiL,IAS3D,OAPAvK,EAAO8J,iBAAiBN,GAAQ,CAC5BA,KAAMA,EACNO,gBAAiBA,EACjBC,WAAYA,EACZC,gBAAiBjK,EACjBkK,mBAAoBA,GAEjBX,EAAoCC,EAAMY,IAErD,OAAII,EAAqB7M,YAErBuM,EAAqB5G,EACd+G,EAAUnM,MAAM,KAAMP,aAI7BuM,EAAqBlM,MAAMI,UAAUqM,MAAM7N,KAAKe,WACzC0M,IAInB,SAASG,EAAqBE,GAC1B,OAA0B,IAAhBA,EAAK9M,QAAgC,IAAhB8M,EAAK9M,SAAoC,iBAAZ8M,EAAK,IAC5C,IAAhBA,EAAK9M,SAA4B,IAAZ8M,EAAK,GAGnC,SAASC,EAAarI,EAAGP,EAAGmD,GAExB,OAAI0F,GAAatI,GACNA,EAEPtE,MAAMC,QAAQqE,GACPmF,GAAWoD,MAAMvI,EAAG,CAAE4C,KAAMA,IACnCR,EAAcpC,GACPmF,GAAW3C,OAAOxC,OAAGiD,EAAW,CAAEL,KAAMA,IAC/CG,EAAS/C,GACFmF,GAAWqD,IAAIxI,EAAG,CAAE4C,KAAMA,IACjCO,EAASnD,GACFmF,GAAWmC,IAAItH,EAAG,CAAE4C,KAAMA,IAC9B5C,EAkBX,SAASyI,EAAkBC,GAEvB,OAAOA,EAUX,SAASC,EAA2BC,GAChChH,EAAUgH,GACV,IAAIb,EAAYF,GAAoB,GAAM,SAAUnK,EAAQmL,EAAcnB,EAAYoB,EAAkBC,GASpGC,GAAyBtL,EAAQmL,EALdnB,EACbA,EAAWuB,YACPvB,EAAWuB,YAAY3O,KAAKoD,GAC5BgK,EAAW7M,WACfoI,EACuD2F,MAE7DrF,GAEe,oBAAZ2F,SAA2BA,QAAQC,IAQpCpB,GAEN,OADAxE,EAAIqF,SAAWA,EACRrF,EAKX,IAAI6F,EAAiC,CACjCC,MAAM,EACNzG,UAAMK,EACNqG,sBAAkBrG,GAElBsG,EAAiC,CACjCF,MAAM,EACNzG,UAAMK,EACNqG,sBAAkBrG,GAQtB,SAASuG,EAA0BxG,GAC/B,OAAIA,MAAAA,EACOoG,EACU,iBAAVpG,EACA,CAAEJ,KAAMI,EAAOqG,MAAM,GAMzBrG,EAEX,SAASyG,EAAuBC,GAC5B,OAAOA,EAAQJ,iBACTI,EAAQJ,iBAAiBV,UACR,IAAjBc,EAAQL,KACJZ,EACAJ,EAvBd1N,OAAOsG,OAAOmI,GACdzO,OAAOsG,OAAOsI,GAwBd,IAAII,EAAgBhB,EAA2BN,GAC3CuB,EAAmBjB,GA9FvB,SAAyB3I,EAAGP,EAAGmD,GAC3B,OAAI5C,MAAAA,GAEA6J,GAAmB7J,IAAM8J,GAAkB9J,IAAM+J,GAAgB/J,IAAMgK,GAAgBhK,GADhFA,EAGPtE,MAAMC,QAAQqE,GACPmF,GAAWoD,MAAMvI,EAAG,CAAE4C,KAAMA,EAAMyG,MAAM,IAC/CjH,EAAcpC,GACPmF,GAAW3C,OAAOxC,OAAGiD,EAAW,CAAEL,KAAMA,EAAMyG,MAAM,IAC3DtG,EAAS/C,GACFmF,GAAWqD,IAAIxI,EAAG,CAAE4C,KAAMA,EAAMyG,MAAM,IAC7ClG,EAASnD,GACFmF,GAAWmC,IAAItH,EAAG,CAAE4C,KAAMA,EAAMyG,MAAM,IAC1C3H,GAAK,MAkFZuI,EAAetB,EAA2BF,GAC1CyB,GAAqBvB,GA5EzB,SAA2B3I,EAAGmK,EAAUvH,GAGpC,OAAI6D,GAAUzG,EAAGmK,GACNA,EACJnK,KAqGX,IAAIoK,GAAsB,CACtBC,IAAK,SAAUxP,EAAO6O,GACdrO,UAAUC,OAAS,GACnBgP,GAA2B,OAC/B,IAAIjK,EAAImJ,EAA0BE,GAClC,OAAO,IAAIa,GAAgB1P,EAAO4O,EAAuBpJ,GAAIA,EAAEuC,MAAM,EAAMvC,EAAEmK,SAEjFC,WAAY,SAAU5P,EAAO+H,GAIzB,OAHIvH,UAAUC,OAAS,GACnBgP,GAA2B,cAExBnF,GAAWkF,IAAIxP,EAAO,CAAE+H,KAAMA,EAAMyG,MAAM,KAErDd,MAAO,SAAUmC,EAAehB,GACxBrO,UAAUC,OAAS,GACnBgP,GAA2B,SAC/B,IAAIjK,EAAImJ,EAA0BE,GAClC,OAAO,IAAIiB,GAAgBD,EAAejB,EAAuBpJ,GAAIA,EAAEuC,OAE3EgI,aAAc,SAAUF,EAAe9H,GAInC,OAHIvH,UAAUC,OAAS,GACnBgP,GAA2B,gBAExBnF,GAAWoD,MAAMmC,EAAe,CAAE9H,KAAMA,EAAMyG,MAAM,KAE/Db,IAAK,SAAUkC,EAAehB,GACtBrO,UAAUC,OAAS,GACnBgP,GAA2B,OAC/B,IAAIjK,EAAImJ,EAA0BE,GAClC,OAAO,IAAImB,GAAcH,EAAejB,EAAuBpJ,GAAIA,EAAEuC,OAEzEkI,WAAY,SAAUJ,EAAe9H,GAIjC,OAHIvH,UAAUC,OAAS,GACnBgP,GAA2B,cAExBnF,GAAWqD,IAAIkC,EAAe,CAAE9H,KAAMA,EAAMyG,MAAM,KAE7D/B,IAAK,SAAUoD,EAAehB,GACtBrO,UAAUC,OAAS,GACnBgP,GAA2B,OAC/B,IAAIjK,EAAImJ,EAA0BE,GAClC,OAAO,IAAIqB,GAAcL,EAAejB,EAAuBpJ,GAAIA,EAAEuC,OAEzEJ,OAAQ,SAAUwI,EAAOvN,EAAYiM,GACL,iBAAjBrO,UAAU,IACjBiP,GAA2B,UAC/B,IAAIjK,EAAImJ,EAA0BE,GAClC,OAAOuB,GAAiB,GAAID,EAAOvN,EAAY4C,IAEnD6K,cAAe,SAAUF,EAAOpI,GAI5B,MAH4B,iBAAjBvH,UAAU,IACjBiP,GAA2B,iBAExBnF,GAAW3C,OAAOwI,EAAO,GAAI,CAAEpI,KAAMA,EAAMyG,MAAM,KAE5D8B,IAAKlB,EACLrD,QAASgD,EACTP,KAAMM,EACNyB,OAAQlB,IAER/E,GArFJ,SAA0BnF,EAAGqL,EAAMnF,GAE/B,GAA4B,iBAAjB7K,UAAU,GACjB,OAAOsO,EAAc/N,MAAM,KAAMP,WAGrC,GAAIiN,GAAatI,GACb,OAAOA,EAEX,IAAIuD,EAAMnB,EAAcpC,GAClBmF,GAAW3C,OAAOxC,EAAGqL,EAAMnF,GAC3BxK,MAAMC,QAAQqE,GACVmF,GAAWoD,MAAMvI,EAAGqL,GACpBtI,EAAS/C,GACLmF,GAAWqD,IAAIxI,EAAGqL,GAClBlI,EAASnD,GACLmF,GAAWmC,IAAItH,EAAGqL,GAClBrL,EAElB,GAAIuD,IAAQvD,EACR,OAAOuD,EAEX7B,GAAK,IAkET,SAAS4I,GAA2BgB,GAChC5J,EAEA,+CAAiD4J,EAAa,gDAAkDA,EAAa,kBAJjI3Q,OAAO4Q,KAAKnB,IAAqBoB,SAAQ,SAAU5I,GAAQ,OAAQuC,GAAWvC,GAAQwH,GAAoBxH,MAO1G,IAsCIgC,GAoBAY,GA1DAiG,GAAoB5D,GAAoB,GAAO,SAAU6D,EAAU7C,EAAcnB,EAAYC,EAAiBoB,GAI9G,IAAI3B,EAAMM,EAAWN,IAAKE,EAAMI,EAAWJ,IAIvCoC,EAAUX,EAAc,IAAM,IAomHtC,SAAgCrL,EAChC+E,EAAUiH,GACN,IAAIiC,EAAMC,GAAmBlO,GAC7BgM,EAAQ9G,KAAO+I,EAAI/I,KAAO,IAAMH,EAChCiH,EAAQmC,QAAUnO,EAClBiO,EAAIG,OAAOrJ,GAAY,IAAIsJ,GAAcrC,GACzC/O,OAAOC,eAAe8C,EAAQ+E,EA2BlC,SAAoCA,GAChC,OAAQuJ,GAAwBvJ,KAC3BuJ,GAAwBvJ,GAAY,CACjC1H,aAAcyG,GAAYyK,qBAC1BnR,YAAY,EACZsM,IAAK,WACD,OAAO8E,GAAsCrP,MAAMsP,KAAKtP,KAAM4F,IAElE6E,IAAK,SAAUtH,GACXkM,GAAsCrP,MAAMuP,MAAMvP,KAAM4F,EAAUzC,MApCtCqM,CAA2B5J,IAzmHnE6J,CAAuBZ,EAAU7C,EAAc7L,EAAS,CAAEoK,IAAKA,EAAKE,IAAKA,GAAOoC,OAEhF6C,GAA0Bd,GAAkB,CAAEjB,OAAQlE,EAASE,aAK/DgG,GAAW,SAAkBC,EAAMpB,EAAMnF,GACzC,GAAoB,iBAATmF,EAEP,OAAOI,GAAkB7P,MAAM,KAAMP,WAEzC,GAAa,OAAToR,GAAiC,iBAATA,GAA0C,IAArBpR,UAAUC,OAEvD,OAAOmQ,GAAkB7P,MAAM,KAAMP,WAOzC,IAAIqR,EAAuB,iBAATrB,EAAoBA,EAAO,GAI7C,OAHAqB,EAAKtF,IAAMqF,EACXC,EAAKpF,IAAsB,mBAAT+D,EAAsBA,EAAOqB,EAAKpF,IACpDoF,EAAK9J,KAAO8J,EAAK9J,MAAQ6J,EAAK7J,MAAQ,GAC/B,IAAImJ,GAAcW,IAE7BF,GAASpB,OAASmB,GAGlB,SAAW3H,GAGPA,EAAiBA,EAA+B,cAAK,GAAK,eAI1DA,EAAiBA,EAA6B,WAAI,GAAK,aAOvDA,EAAiBA,EAAiC,eAAI,GAAK,iBAG3DA,EAAiBA,EAAwB,MAAI,GAAK,QAjBtD,CAkBGA,KAAqBA,GAAmB,KAE3C,SAAWY,GACPA,EAAUA,EAAgB,KAAI,GAAK,OACnCA,EAAUA,EAAe,IAAI,GAAK,MAClCA,EAAUA,EAAiB,MAAI,GAAK,QAHxC,CAIGA,KAAcA,GAAY,KAC7B,IAAImH,GACA,SAAyBC,GACrB/P,KAAK+P,MAAQA,GAKrB,SAASC,GAAkB1S,GACvB,OAAOA,aAAawS,GAaxB,SAASG,GAAcC,GACnB,OAAQA,EAAW1H,mBACf,KAAKT,GAAiBU,WAClB,OAAO,EACX,KAAKV,GAAiBC,aACtB,KAAKD,GAAiBQ,MAClB,OAAO,EACX,KAAKR,GAAiBoI,eAKlB,IAHA,IAAIC,EAAsBC,IAAqB,GAC3CC,EAAgBC,KAChBC,EAAMN,EAAWO,UAAWC,EAAIF,EAAI/R,OAC/BrB,EAAI,EAAGA,EAAIsT,EAAGtT,IAAK,CACxB,IAAIuT,EAAMH,EAAIpT,GACd,GAAIwT,GAAgBD,GAAM,CACtB,GAAIhM,GAAYkM,uBACZF,EAAIpG,WAGJ,IACIoG,EAAIpG,MAER,MAAOjN,GAIH,OAFAwT,GAAaR,GACbS,GAAmBX,IACZ,EAMf,GAAIF,EAAW1H,oBAAsBT,GAAiBQ,MAGlD,OAFAuI,GAAaR,GACbS,GAAmBX,IACZ,GAOnB,OAHAY,GAA2Bd,GAC3BY,GAAaR,GACbS,GAAmBX,IACZ,GAgBnB,SAASa,GAAoC3H,GACzC,IAAI4H,EAAe5H,EAAK5B,UAAUjJ,OAAS,EAEvCkG,GAAYwM,iBAAmB,GAAKD,GACpCrM,GAAK,GAGJF,GAAYyM,oBAAsBF,GAA+C,WAA/BvM,GAAY0M,gBAC/DxM,GAAK,GAkBb,SAASyM,GAAqBpB,EAAYzN,EAAGuM,GACzC,IAAIoB,EAAsBC,IAAqB,GAG/CW,GAA2Bd,GAC3BA,EAAWqB,aAAe,IAAI1S,MAAMqR,EAAWO,UAAUhS,OAAS,KAClEyR,EAAWsB,iBAAmB,EAC9BtB,EAAWuB,QAAU9M,GAAY8M,MACjC,IAEItP,EAFAuP,EAAe/M,GAAYgN,mBAG/B,GAFAhN,GAAYgN,mBAAqBzB,GAEU,IAAvCvL,GAAYkM,uBACZ1O,EAASM,EAAEhF,KAAKuR,QAGhB,IACI7M,EAASM,EAAEhF,KAAKuR,GAEpB,MAAO1R,GACH6E,EAAS,IAAI2N,GAAgBxS,GASrC,OANAqH,GAAYgN,mBAAqBD,EAoBrC,SAA0BxB,GAStB,IAPA,IAAI0B,EAAgB1B,EAAWO,UAC3BA,EAAaP,EAAWO,UAAYP,EAAWqB,aAC/CM,EAAoC9J,GAAiBU,WAIrDqJ,EAAK,EAAGpB,EAAIR,EAAWsB,iBAClBpU,EAAI,EAAGA,EAAIsT,EAAGtT,IAAK,CAEF,KADlB2U,EAAMtB,EAAUrT,IACZwK,YACJmK,EAAInK,UAAY,EACZkK,IAAO1U,IACPqT,EAAUqB,GAAMC,GACpBD,KAIAC,EAAIvJ,kBAAoBqJ,IACxBA,EAAoCE,EAAIvJ,mBAGhDiI,EAAUhS,OAASqT,EACnB5B,EAAWqB,aAAe,KAI1Bb,EAAIkB,EAAcnT,OAClB,KAAOiS,KAAK,CAEc,KADlBqB,EAAMH,EAAclB,IAChB9I,WACJoK,GAAeD,EAAK7B,GAExB6B,EAAInK,UAAY,EAKpB,KAAOkK,KAAM,CACT,IAAIC,EACkB,KADlBA,EAAMtB,EAAUqB,IACZlK,YACJmK,EAAInK,UAAY,EAChBqK,GAAYF,EAAK7B,IAKrB2B,IAAsC9J,GAAiBU,aACvDyH,EAAW1H,kBAAoBqJ,EAC/B3B,EAAWpH,iBArEfoJ,CAAiBhC,GACbA,EAAWO,UAAUhS,OAGzBsS,GAAmBX,GACZjO,EAmEX,SAASgQ,GAAejC,GAEpB,IAAIM,EAAMN,EAAWO,UACrBP,EAAWO,UAAY,GAEvB,IADA,IAAIrT,EAAIoT,EAAI/R,OACLrB,KACH4U,GAAexB,EAAIpT,GAAI8S,GAC3BA,EAAW1H,kBAAoBT,GAAiBC,aAEpD,SAASoK,GAAUC,GACf,IAAIC,EAAO/B,KACP7J,EAAM2L,IAEV,OADAvB,GAAawB,GACN5L,EAEX,SAAS6J,KACL,IAAI+B,EAAO3N,GAAYgN,mBAEvB,OADAhN,GAAYgN,mBAAqB,KAC1BW,EAEX,SAASxB,GAAawB,GAClB3N,GAAYgN,mBAAqBW,EAErC,SAASjC,GAAqBkC,GAC1B,IAAID,EAAO3N,GAAY4N,gBAEvB,OADA5N,GAAY4N,gBAAkBA,EACvBD,EAEX,SAASvB,GAAmBuB,GACxB3N,GAAY4N,gBAAkBD,EAMlC,SAAStB,GAA2Bd,GAChC,GAAIA,EAAW1H,oBAAsBT,GAAiBU,WAAtD,CAEAyH,EAAW1H,kBAAoBT,GAAiBU,WAGhD,IAFA,IAAI+H,EAAMN,EAAWO,UACjBrT,EAAIoT,EAAI/R,OACLrB,KACHoT,EAAIpT,GAAG0K,oBAAsBC,GAAiBU,YAKtD,IAAI+J,GAAkB,EAClBC,GAAe,EACfC,GAAyB5U,OAAOkD,0BAAyB,cAAiB,QAC7C0R,IAA0BA,GAAuBxU,aAClF,SAASyU,GAAaC,EAAYC,GAM9B,IAAInM,EAAM,WACN,OAAOoM,GAAcF,EAAYC,EAAI7S,KAAMxB,YAQ/C,OADAkI,EAAIqM,cAAe,EACZrM,EAEX,SAASoM,GAAcF,EAAYC,EAAIG,EAAOzH,GAC1C,IAAI0H,EAYR,SAAsBL,EAAYI,EAAOzH,GACrC,IAAI2H,EAAYC,QAAoBP,EAChCQ,EAAY,EAChB,GAAIF,EAAW,CACXE,EAAYC,KAAKC,MACjB,IAAI5C,EAAKnF,GAAQA,EAAK9M,QAAW,EAC7B8U,EAAe,IAAI1U,MAAM6R,GAC7B,GAAIA,EAAI,EACJ,IAAK,IAAItT,EAAI,EAAGA,EAAIsT,EAAGtT,IACnBmW,EAAanW,GAAKmO,EAAKnO,GAC/BoW,GAAe,CACXC,KAAM,SACN1N,KAAM6M,EACNjN,OAAQqN,EACRxU,UAAW+U,IAGnB,IAAIG,EAAiBnD,KACrBlI,KACA,IAAIsL,EAAwBC,IAAuB,GAC/CxD,EAAsBC,IAAqB,GAC3C4C,EAAU,CACVS,eAAgBA,EAChBC,sBAAuBA,EACvBvD,oBAAqBA,EACrB8C,UAAWA,EACXE,UAAWA,EACXS,SAAUpB,KACVqB,eAAgBtB,IAGpB,OADAA,GAAkBS,EAAQY,SACnBZ,EA3COc,CAAanB,EAAYI,EAAOzH,GAC9C,IACI,OAAOsH,EAAG9T,MAAMiU,EAAOzH,GAE3B,MAAOyI,GAEH,MADAf,EAAQrP,MAAQoQ,EACVA,EAEV,SAqCJ,SAAoBf,GACZT,KAAoBS,EAAQY,UAC5BhP,EAAK,6DAET2N,GAAkBS,EAAQa,oBACJ1N,IAAlB6M,EAAQrP,QACRe,GAAYsP,wBAAyB,GAEzCC,GAAqBjB,EAAQU,uBAC7B5C,GAAmBkC,EAAQ7C,qBAC3BpH,KACA8H,GAAamC,EAAQS,gBACjBT,EAAQC,WACRiB,GAAa,CAAEC,KAAMf,KAAKC,MAAQL,EAAQG,YAE9CzO,GAAYsP,wBAAyB,EAnDjCI,CAAWpB,IAqDnB,SAAS7B,GAAkBA,EAAmBjM,GAC1C,IACIuB,EADA4L,EAAOsB,GAAuBxC,GAElC,IACI1K,EAAMvB,IAEV,QACI+O,GAAqB5B,GAEzB,OAAO5L,EAEX,SAASkN,GAAuBxC,GAC5B,IAAIkB,EAAO3N,GAAYyM,kBAEvB,OADAzM,GAAYyM,kBAAoBA,EACzBkB,EAEX,SAAS4B,GAAqB5B,GAC1B3N,GAAYyM,kBAAoBkB,EAepC,IAAI5E,GAAiC,SAAU4G,GAE3C,SAAS5G,EAAgB1P,EAAO+N,EAAUhG,EAAMmN,EAAWvF,QAC1C,IAAT5H,IAAmBA,EAAO,mBAAqBrB,UACjC,IAAdwO,IAAwBA,GAAY,QACzB,IAAXvF,IAAqBA,EAASlE,EAASlK,SAC3C,IAAIgV,EAAQD,EAAO7W,KAAKuC,KAAM+F,IAAS/F,KAUvC,OATAuU,EAAMxI,SAAWA,EACjBwI,EAAMxO,KAAOA,EACbwO,EAAM5G,OAASA,EACf4G,EAAMC,qBAAsB,EAC5BD,EAAMvW,MAAQ+N,EAAS/N,OAAOoI,EAAWL,GACrCmN,GAAaC,MAEbsB,GAAU,CAAEhB,KAAM,SAAU1N,KAAMwO,EAAMxO,KAAM8F,SAAU,GAAK0I,EAAMvW,QAEhEuW,EAgFX,OA/FAzU,EAAU4N,EAAiB4G,GAiB3B5G,EAAgBzO,UAAUyV,aAAe,SAAU1W,GAC/C,YAAsBoI,IAAlBpG,KAAK2U,SACE3U,KAAK2U,SAAS3W,GAClBA,GAEX0P,EAAgBzO,UAAUwL,IAAM,SAAUoB,GACtC,IAAIyB,EAAWtN,KAAKhC,MAEpB,IADA6N,EAAW7L,KAAK4U,gBAAgB/I,MACflH,GAAYkQ,UAAW,CACpC,IAAI3B,EAAYC,KACZD,GACAM,GAAe,CACXC,KAAM,SACN1N,KAAM/F,KAAK+F,KACX8F,SAAUA,EACVyB,SAAUA,IAGlBtN,KAAK8U,YAAYjJ,GACbqH,GACAiB,OAGZzG,EAAgBzO,UAAU2V,gBAAkB,SAAU/I,GAElD,GADAoF,GAAoCjR,MAChC+U,GAAgB/U,MAAO,CACvB,IAAIgV,EAASC,GAAgBjV,KAAM,CAC/B2F,OAAQ3F,KACRyT,KAAM,SACN5H,SAAUA,IAEd,IAAKmJ,EACD,OAAOrQ,GAAYkQ,UACvBhJ,EAAWmJ,EAAOnJ,SAItB,OADAA,EAAW7L,KAAK+L,SAASF,EAAU7L,KAAKhC,MAAOgC,KAAK+F,MAC7C/F,KAAK2N,OAAO3N,KAAKhC,MAAO6N,GAAYlH,GAAYkQ,UAAYhJ,GAEvE6B,EAAgBzO,UAAU6V,YAAc,SAAUjJ,GAC9C,IAAIyB,EAAWtN,KAAKhC,MACpBgC,KAAKhC,MAAQ6N,EACb7L,KAAKoI,gBACD8M,GAAalV,OACbmV,GAAgBnV,KAAM,CAClByT,KAAM,SACN9N,OAAQ3F,KACR6L,SAAUA,EACVyB,SAAUA,KAItBI,EAAgBzO,UAAUsL,IAAM,WAE5B,OADAvK,KAAKmI,iBACEnI,KAAK0U,aAAa1U,KAAKhC,QAElC0P,EAAgBzO,UAAUmW,UAAY,SAAUC,GAC5C,OAAOC,GAAoBtV,KAAMqV,IAErC3H,EAAgBzO,UAAUsW,QAAU,SAAUC,EAAUC,GAQpD,OAPIA,GACAD,EAAS,CACL7P,OAAQ3F,KACRyT,KAAM,SACN5H,SAAU7L,KAAKhC,MACfsP,cAAUlH,IAEXsP,GAAiB1V,KAAMwV,IAElC9H,EAAgBzO,UAAU0W,OAAS,WAC/B,OAAO3V,KAAKuK,OAEhBmD,EAAgBzO,UAAUD,SAAW,WACjC,OAAOgB,KAAK+F,KAAO,IAAM/F,KAAKhC,MAAQ,KAE1C0P,EAAgBzO,UAAU2W,QAAU,WAChC,OAAOpY,EAAYwC,KAAKuK,QAErBmD,EAhGyB,CAiGlCnG,GACFmG,GAAgBzO,UAAU0H,KAAqB+G,GAAgBzO,UAAU2W,QACzE,IAAIC,GAAoB/P,EAA0B,kBAAmB4H,IAqBjEwB,GAA+B,WAa/B,SAASA,EAAcrC,GACnB7M,KAAKwI,kBAAoBT,GAAiBC,aAC1ChI,KAAKyQ,UAAY,GACjBzQ,KAAKuR,aAAe,KACpBvR,KAAKyH,iBAAkB,EACvBzH,KAAKwH,wBAAyB,EAC9BxH,KAAK0H,UAAY,GACjB1H,KAAK2H,iBAAmB,GACxB3H,KAAK4H,UAAY,EACjB5H,KAAKyR,MAAQ,EACbzR,KAAK6H,eAAiB,EACtB7H,KAAK8H,oBAAsBC,GAAiBU,WAC5CzI,KAAKwR,iBAAmB,EACxBxR,KAAK8V,QAAU,IAAMpR,IACrB1E,KAAKhC,MAAQ,IAAI8R,GAAgB,MACjC9P,KAAK+V,aAAc,EACnB/V,KAAKgW,iBAAkB,EACvBhW,KAAK0I,UAAYC,GAAUC,KAC3B7D,EAAU8H,EAAQtC,IAAK,oCACvBvK,KAAKkQ,WAAarD,EAAQtC,IAC1BvK,KAAK+F,KAAO8G,EAAQ9G,MAAQ,iBAAmBrB,IAC3CmI,EAAQpC,MACRzK,KAAKiW,OAAStD,GAAa3S,KAAK+F,KAAO,UAAW8G,EAAQpC,MAC9DzK,KAAK2N,OACDd,EAAQc,SACHd,EAAQqJ,mBAAqBrJ,EAAQ0B,OAChC9E,EAASE,WACTF,EAASlK,SACvBS,KAAKgT,MAAQnG,EAAQmC,QACrBhP,KAAKmW,mBAAqBtJ,EAAQsJ,iBAClCnW,KAAKoW,YAAcvJ,EAAQuJ,UAmJ/B,OAjJAlH,EAAcjQ,UAAU6J,cAAgB,YAmgB5C,SAA+BR,GAE3B,GAAIA,EAAWR,sBAAwBC,GAAiBU,WACpD,OACJH,EAAWR,oBAAsBC,GAAiBoI,eAClD,IAAIzI,EAAYY,EAAWZ,UACvBtK,EAAIsK,EAAUjJ,OAClB,KAAOrB,KAAK,CACR,IAAIqC,EAAIiI,EAAUtK,GACdqC,EAAE+I,oBAAsBT,GAAiBU,aACzChJ,EAAE+I,kBAAoBT,GAAiBoI,eACnC1Q,EAAEiJ,YAAcC,GAAUC,MAC1BC,GAAapJ,EAAG6I,GAEpB7I,EAAEqJ,kBAhhBNuN,CAAsBrW,OAE1BkP,EAAcjQ,UAAUgJ,mBAAqB,aAC7CiH,EAAcjQ,UAAUiJ,iBAAmB,aAK3CgH,EAAcjQ,UAAUsL,IAAM,WACtBvK,KAAK+V,aACLlR,EAAK,iCAAmC7E,KAAK+F,KAAO,KAAO/F,KAAKkQ,YACxC,IAAxBvL,GAAY2R,SAA2C,IAA1BtW,KAAK0H,UAAUjJ,QAAiBuB,KAAKoW,WASlEjO,GAAenI,MACXiQ,GAAcjQ,OACVA,KAAKuW,mBA0dzB,SAAkCjO,GAE9B,GAAIA,EAAWR,sBAAwBC,GAAiBQ,MACpD,OACJD,EAAWR,oBAAsBC,GAAiBQ,MAClD,IAAIb,EAAYY,EAAWZ,UACvBtK,EAAIsK,EAAUjJ,OAClB,KAAOrB,KAAK,CACR,IAAIqC,EAAIiI,EAAUtK,GACdqC,EAAE+I,oBAAsBT,GAAiBoI,eACzC1Q,EAAE+I,kBAAoBT,GAAiBQ,MAClC9I,EAAE+I,oBAAsBT,GAAiBU,aAE9CH,EAAWR,oBAAsBC,GAAiBU,aAte1C+N,CAAyBxW,OAX7BiQ,GAAcjQ,QACdA,KAAKyW,yBACLpO,KACArI,KAAKhC,MAAQgC,KAAK0W,cAAa,GAC/B1N,MASR,IAAI7G,EAASnC,KAAKhC,MAClB,GAAIgS,GAAkB7N,GAClB,MAAMA,EAAO4N,MACjB,OAAO5N,GAEX+M,EAAcjQ,UAAU0X,KAAO,WAC3B,IAAIjQ,EAAM1G,KAAK0W,cAAa,GAC5B,GAAI1G,GAAkBtJ,GAClB,MAAMA,EAAIqJ,MACd,OAAOrJ,GAEXwI,EAAcjQ,UAAUwL,IAAM,SAAUzM,GACpC,GAAIgC,KAAKiW,OAAQ,CACblR,GAAW/E,KAAKgW,gBAAiB,iCAAmChW,KAAK+F,KAAO,mHAChF/F,KAAKgW,iBAAkB,EACvB,IACIhW,KAAKiW,OAAOxY,KAAKuC,KAAKgT,MAAOhV,GAEjC,QACIgC,KAAKgW,iBAAkB,QAI3BjR,GAAU,GAAO,IAGzBmK,EAAcjQ,UAAUsX,gBAAkB,WAClCpD,MACAsB,GAAU,CACN9O,OAAQ3F,KAAKgT,MACbS,KAAM,UACN1N,KAAM/F,KAAK+F,OAGnB,IAAIuH,EAAWtN,KAAKhC,MAChB4Y,EACY5W,KAAKwI,oBAAsBT,GAAiBC,aACxD6D,EAAW7L,KAAK0W,cAAa,GAC7BG,EAAUD,GACV5G,GAAkB1C,IAClB0C,GAAkBnE,KACjB7L,KAAK2N,OAAOL,EAAUzB,GAI3B,OAHIgL,IACA7W,KAAKhC,MAAQ6N,GAEVgL,GAEX3H,EAAcjQ,UAAUyX,aAAe,SAAUI,GAG7C,IAAIpQ,EACJ,GAHA1G,KAAK+V,aAAc,EACnBpR,GAAYwM,mBAER2F,EACApQ,EAAM4K,GAAqBtR,KAAMA,KAAKkQ,WAAYlQ,KAAKgT,YAGvD,IAA2C,IAAvCrO,GAAYkM,uBACZnK,EAAM1G,KAAKkQ,WAAWzS,KAAKuC,KAAKgT,YAGhC,IACItM,EAAM1G,KAAKkQ,WAAWzS,KAAKuC,KAAKgT,OAEpC,MAAO1V,GACHoJ,EAAM,IAAIoJ,GAAgBxS,GAMtC,OAFAqH,GAAYwM,mBACZnR,KAAK+V,aAAc,EACZrP,GAEXwI,EAAcjQ,UAAU8X,QAAU,WACzB/W,KAAKoW,YACNjE,GAAenS,MACfA,KAAKhC,WAAQoI,IAGrB8I,EAAcjQ,UAAUsW,QAAU,SAAUC,EAAUC,GAClD,IAAIlB,EAAQvU,KACRgX,GAAY,EACZC,OAAY7Q,EAChB,OAAO8Q,IAAQ,WACX,IAAIrL,EAAW0I,EAAMhK,MACrB,IAAKyM,GAAavB,EAAiB,CAC/B,IAAI0B,EAAQ5G,KACZiF,EAAS,CACL/B,KAAM,SACN9N,OAAQ4O,EACR1I,SAAUA,EACVyB,SAAU2J,IAEdnG,GAAaqG,GAEjBH,GAAY,EACZC,EAAYpL,MAGpBqD,EAAcjQ,UAAUwX,uBAAyB,aAajDvH,EAAcjQ,UAAU0W,OAAS,WAC7B,OAAO3V,KAAKuK,OAEhB2E,EAAcjQ,UAAUD,SAAW,WAC/B,OAAOgB,KAAK+F,KAAO,IAAM/F,KAAKkQ,WAAWlR,WAAa,KAE1DkQ,EAAcjQ,UAAU2W,QAAU,WAC9B,OAAOpY,EAAYwC,KAAKuK,QAErB2E,EA9LuB,GAgMlCA,GAAcjQ,UAAU0H,KAAqBuI,GAAcjQ,UAAU2W,QACrE,IAAIhF,GAAkB9K,EAA0B,gBAAiBoJ,IAiB7DkI,GACA,WASIpX,KAAKqX,QAAU,EAIfrX,KAAK6U,UAAY,GAIjB7U,KAAK2R,mBAAqB,KAI1B3R,KAAKmR,iBAAmB,EAIxBnR,KAAKyR,MAAQ,EAIbzR,KAAK4E,SAAW,EAIhB5E,KAAKsW,QAAU,EAOftW,KAAKsX,sBAAwB,GAI7BtX,KAAKuX,iBAAmB,GAIxBvX,KAAKwX,oBAAqB,EAM1BxX,KAAKoR,mBAAoB,EAKzBpR,KAAKuS,iBAAkB,EAIvBvS,KAAKqR,gBAAiB,EAItBrR,KAAKyX,aAAe,GAIpBzX,KAAK0X,4BAA8B,GAInC1X,KAAK2X,0BAA2B,EAKhC3X,KAAK4X,4BAA6B,EAKlC5X,KAAK6X,4BAA6B,EAKlC7X,KAAKoP,sBAAuB,EAK5BpP,KAAK6Q,wBAAyB,EAK9B7Q,KAAKiU,wBAAyB,GAIlC6D,IAAsB,EACtBC,IAAgB,EAChBpT,GAAc,WACd,IAAIqT,EAASzT,IAKb,OAJIyT,EAAOC,oBAAsB,IAAMD,EAAOE,gBAC1CJ,IAAsB,GACtBE,EAAOE,eAAiBF,EAAOE,cAAcb,WAAY,IAAID,IAAcC,UAC3ES,IAAsB,GACrBA,GAQIE,EAAOE,eACZF,EAAOC,qBAAuB,EACzBD,EAAOE,cAAcrD,YACtBmD,EAAOE,cAAcrD,UAAY,IAC9BmD,EAAOE,gBAGdF,EAAOC,oBAAsB,EACrBD,EAAOE,cAAgB,IAAId,KAfnCe,YAAW,WACFJ,IACDlT,EAAK,gJAEV,GACI,IAAIuS,IAZD,GA2ElB,SAASnF,GAAY3J,EAAY8P,GAI7B,IAAI1H,EAAIpI,EAAWZ,UAAUjJ,OACzBiS,IAEApI,EAAWX,iBAAiByQ,EAAKtC,SAAWpF,GAEhDpI,EAAWZ,UAAUgJ,GAAK0H,EACtB9P,EAAWR,oBAAsBsQ,EAAK5P,oBACtCF,EAAWR,oBAAsBsQ,EAAK5P,mBAI9C,SAASwJ,GAAe1J,EAAY8P,GAIhC,GAAoC,IAAhC9P,EAAWZ,UAAUjJ,OAErB6J,EAAWZ,UAAUjJ,OAAS,EAC9B4Z,GAAsB/P,OAErB,CAED,IAAIgQ,EAAOhQ,EAAWZ,UAClBiE,EAAMrD,EAAWX,iBACjB4Q,EAASD,EAAKjV,MAClB,GAAIkV,IAAWH,EAAM,CAEjB,IAAII,EAAQ7M,EAAIyM,EAAKtC,UAAY,EAC7B0C,EAEA7M,EAAI4M,EAAOzC,SAAW0C,SAGf7M,EAAI4M,EAAOzC,SAEtBwC,EAAKE,GAASD,SAEX5M,EAAIyM,EAAKtC,UAKxB,SAASuC,GAAsB/P,IACe,IAAtCA,EAAWd,yBAEXc,EAAWd,wBAAyB,EACpC7C,GAAY2S,sBAAsBhU,KAAKgF,IAQ/C,SAASD,KACL1D,GAAY2R,UAEhB,SAAStN,KACL,GAA8B,KAAxBrE,GAAY2R,QAAe,CAC7BmC,KAGA,IADA,IAAIH,EAAO3T,GAAY2S,sBACdla,EAAI,EAAGA,EAAIkb,EAAK7Z,OAAQrB,IAAK,CAClC,IAAIkL,EAAagQ,EAAKlb,GACtBkL,EAAWd,wBAAyB,EACA,IAAhCc,EAAWZ,UAAUjJ,SACjB6J,EAAWb,kBAEXa,EAAWb,iBAAkB,EAC7Ba,EAAWL,sBAEXK,aAAsB4G,IAGtB5G,EAAWyO,WAIvBpS,GAAY2S,sBAAwB,IAG5C,SAASnP,GAAeG,GAEpB,IAAI4H,EAAavL,GAAYgN,mBAC7B,OAAmB,OAAfzB,GAMIA,EAAWuB,QAAUnJ,EAAWT,iBAChCS,EAAWT,eAAiBqI,EAAWuB,MACvCvB,EAAWqB,aAAarB,EAAWsB,oBAAsBlJ,EACpDA,EAAWb,kBACZa,EAAWb,iBAAkB,EAC7Ba,EAAWJ,sBAGZ,IAE8B,IAAhCI,EAAWZ,UAAUjJ,QAAgBkG,GAAY2R,QAAU,GAChE+B,GAAsB/P,IAEnB,GAgFX,SAASO,GAAaqH,EAAY5H,GAE9B,GADAoQ,QAAQC,IAAI,iBAAmBzI,EAAWnK,KAAO,yCAA2CuC,EAAWvC,KAAO,KAC1GmK,EAAWxH,YAAcC,GAAUiQ,MAAO,CAC1C,IAAIC,EAAQ,GACZC,GA8lBGC,GAAqBC,GA9lBO9I,EA8lBQ+I,IA9lBKJ,EAAO,GAEnD,IAAIK,SAAS,2BAA6BhJ,EAAWnK,KAAO,8DAAgEmK,EAAWnK,KAAO,0BAA4BuC,EAAWvC,KAAO,2OAA6OmK,aAAsBhB,GAAgBgB,EAAWA,WAAWlR,WAAWma,QAAQ,SAAU,KAAO,IAAM,oDAAsDN,EAAMO,KAAK,MAAQ,aAAxlB,GA2lBR,IAAkCH,EAxlBlC,SAASH,GAAaO,EAAMR,EAAOS,GAC3BT,EAAMpa,QAAU,IAChBoa,EAAMvV,KAAK,oBAGfuV,EAAMvV,KAAK,GAAK,IAAIzE,MAAMya,GAAOF,KAAK,MAAQC,EAAKtT,MAC/CsT,EAAKE,cACLF,EAAKE,aAAa5K,SAAQ,SAAU6K,GAAS,OAAOV,GAAaU,EAAOX,EAAOS,EAAQ,OAG/F,IAAIG,GAA0B,WAC1B,SAASA,EAAS1T,EAAM2T,EAAcC,EAAcC,QACnC,IAAT7T,IAAmBA,EAAO,YAAcrB,UACjB,IAAvBkV,IAAiCA,GAAqB,GAC1D5Z,KAAK+F,KAAOA,EACZ/F,KAAK0Z,aAAeA,EACpB1Z,KAAK2Z,aAAeA,EACpB3Z,KAAK4Z,mBAAqBA,EAC1B5Z,KAAKyQ,UAAY,GACjBzQ,KAAKuR,aAAe,GACpBvR,KAAKwI,kBAAoBT,GAAiBC,aAC1ChI,KAAK4H,UAAY,EACjB5H,KAAKyR,MAAQ,EACbzR,KAAKwR,iBAAmB,EACxBxR,KAAK8V,QAAU,IAAMpR,IACrB1E,KAAK6Z,YAAa,EAClB7Z,KAAK8Z,cAAe,EACpB9Z,KAAK+Z,iBAAkB,EACvB/Z,KAAKga,YAAa,EAClBha,KAAK0I,UAAYC,GAAUC,KAsH/B,OApHA6Q,EAASxa,UAAU6J,cAAgB,WAC/B9I,KAAKia,YAETR,EAASxa,UAAUgb,SAAW,WACrBja,KAAK8Z,eACN9Z,KAAK8Z,cAAe,EACpBnV,GAAY4S,iBAAiBjU,KAAKtD,MAClCyY,OAGRgB,EAASxa,UAAUib,YAAc,WAC7B,OAAOla,KAAK8Z,cAKhBL,EAASxa,UAAUkb,YAAc,WAC7B,IAAKna,KAAK6Z,WAAY,CAGlB,GAFAxR,KACArI,KAAK8Z,cAAe,EAChB7J,GAAcjQ,MAAO,CACrBA,KAAK+Z,iBAAkB,EACvB,IACI/Z,KAAK0Z,eACD1Z,KAAK+Z,iBAAmB5G,MAExBsB,GAAU,CACN1O,KAAM/F,KAAK+F,KACX0N,KAAM,uBAIlB,MAAOnW,GACH0C,KAAKoa,4BAA4B9c,IAGzC0L,OAGRyQ,EAASxa,UAAU6X,MAAQ,SAAUjE,GACjCxK,KACA,IACI+K,EADAiH,EAASlH,KAETkH,IACAjH,EAAYC,KAAKC,MACjBE,GAAe,CACXzN,KAAM/F,KAAK+F,KACX0N,KAAM,cAGdzT,KAAKga,YAAa,EAClB,IAAI7X,EAASmP,GAAqBtR,KAAM6S,OAAIzM,GAC5CpG,KAAKga,YAAa,EAClBha,KAAK+Z,iBAAkB,EACnB/Z,KAAK6Z,YAEL1H,GAAenS,MAEfgQ,GAAkB7N,IAClBnC,KAAKoa,4BAA4BjY,EAAO4N,OACxCsK,GACAlG,GAAa,CACTC,KAAMf,KAAKC,MAAQF,IAG3BpK,MAEJyQ,EAASxa,UAAUmb,4BAA8B,SAAUxW,GACvD,IAAI2Q,EAAQvU,KACZ,GAAIA,KAAK2Z,aACL3Z,KAAK2Z,aAAa/V,EAAO5D,UAD7B,CAIA,GAAI2E,GAAYkM,uBACZ,MAAMjN,EACV,IAAIkB,EAAU,sGAAwG9E,KAAO,IACzH2E,GAAYsP,uBACZyE,QAAQ4B,KAAK,8BAAgCta,KAAK+F,KAAO,oDAGzD2S,QAAQ9U,MAAMkB,EAASlB,GAGvBuP,MACAsB,GAAU,CACNhB,KAAM,QACN1N,KAAM/F,KAAK+F,KACXjB,QAASA,EACTlB,MAAO,GAAKA,IAGpBe,GAAY+S,4BAA4B/I,SAAQ,SAAUlM,GAAK,OAAOA,EAAEmB,EAAO2Q,QAEnFkF,EAASxa,UAAUsb,QAAU,WACpBva,KAAK6Z,aACN7Z,KAAK6Z,YAAa,EACb7Z,KAAKga,aAEN3R,KACA8J,GAAenS,MACfgJ,QAIZyQ,EAASxa,UAAUub,YAAc,WAC7B,IAAInd,EAAI2C,KAAKua,QAAQE,KAAKza,MAE1B,OADA3C,EAAEqd,MAAQ1a,KACH3C,GAEXoc,EAASxa,UAAUD,SAAW,WAC1B,MAAO,YAAcgB,KAAK+F,KAAO,KAErC0T,EAASxa,UAAU0b,MAAQ,SAAUC,QACT,IAApBA,IAA8BA,GAAkB,GAk5B5D,WAEI,IADA,IAAIrP,EAAO,GACFsP,EAAK,EAAGA,EAAKrc,UAAUC,OAAQoc,IACpCtP,EAAKsP,GAAMrc,UAAUqc,GAEzB,IAAID,GAAkB,EACe,kBAA1BrP,EAAKA,EAAK9M,OAAS,KAC1Bmc,EAAkBrP,EAAKlI,OAC3B,IAAI6M,EAAa4K,GAAgBvP,GACjC,IAAK2E,EACD,OAAOrL,GAAK,GAGZqL,EAAWxH,YAAcC,GAAUC,MACnC8P,QAAQC,IAAI,iBAAmBzI,EAAWnK,KAAO,qBAErDmK,EAAWxH,UAAYkS,EAAkBjS,GAAUiQ,MAAQjQ,GAAUoS,IAj6BjEJ,CAAM3a,KAAM4a,IAETnB,EAzIkB,GAwJ7B,IACIuB,GAAoB,SAAUvY,GAAK,OAAOA,KAC9C,SAASgW,KAED9T,GAAY2R,QAAU,GAAK3R,GAAY6S,oBAE3CwD,GAAkBC,IAEtB,SAASA,KACLtW,GAAY6S,oBAAqB,EAMjC,IALA,IAAI0D,EAAevW,GAAY4S,iBAC3B4D,EAAa,EAIVD,EAAazc,OAAS,GAAG,CAfN,OAgBhB0c,IACFzC,QAAQ9U,MAAM,yHACiDsX,EAAa,IAC5EA,EAAaE,OAAO,IAGxB,IADA,IAAIC,EAAqBH,EAAaE,OAAO,GACpChe,EAAI,EAAGsT,EAAI2K,EAAmB5c,OAAQrB,EAAIsT,EAAGtT,IAClDie,EAAmBje,GAAG+c,cAE9BxV,GAAY6S,oBAAqB,EAErC,IAAI8D,GAAaxV,EAA0B,WAAY2T,IACvD,SAAS8B,GAAqB1I,GAC1B,IAAI2I,EAAgBR,GACpBA,GAAoB,SAAUvY,GAAK,OAAOoQ,GAAG,WAAc,OAAO2I,EAAc/Y,OAGpF,SAAS0Q,KACL,QAASxO,GAAY8S,aAAahZ,OAEtC,SAASgW,GAAUgH,GACf,GAAK9W,GAAY8S,aAAahZ,OAG9B,IADA,IAAIid,EAAY/W,GAAY8S,aACnBra,EAAI,EAAGsT,EAAIgL,EAAUjd,OAAQrB,EAAIsT,EAAGtT,IACzCse,EAAUte,GAAGqe,GAErB,SAASjI,GAAeiI,GAEpBhH,GADatU,EAASA,EAAS,GAAIsb,GAAQ,CAAEjI,gBAAgB,KAGjE,IAAImI,GAAY,CAAExH,cAAc,GAChC,SAASA,GAAaa,GAEdP,GADAO,EACU7U,EAASA,EAAS,GAAI6U,GAAS,CAAEb,cAAc,IAE/CwH,IAElB,SAASC,GAAIpG,GAET,OADA7Q,GAAY8S,aAAanU,KAAKkS,GACvBtQ,GAAK,WACRP,GAAY8S,aAAe9S,GAAY8S,aAAaoE,QAAO,SAAUnL,GAAK,OAAOA,IAAM8E,QAI/F,SAASsG,KACLjX,GAAK,GAET,SAASkX,GAAqBhW,GAC1B,OAAO,SAAUlF,EAAQwJ,EAAMQ,GAC3B,GAAIA,EAAY,CAMZ,GAAIA,EAAW7M,MAEX,MAAO,CACHA,MAAO2U,GAAa5M,EAAM8E,EAAW7M,OACrCC,YAAY,EACZC,cAAc,EACdC,UAAU,GAIlB,IAAI6d,EAAgBnR,EAAWuB,YAC/B,MAAO,CACHnO,YAAY,EACZC,cAAc,EACdC,UAAU,EACViO,YAAa,WAET,OAAOuG,GAAa5M,EAAMiW,EAAcve,KAAKuC,SAKzD,OAAOic,GAAqBlW,GAAMhH,MAAMiB,KAAMxB,YAGtD,SAASyd,GAAqBlW,GAE1B,OAAO,SAAUlF,EAAQwJ,EAAMQ,GAC3B/M,OAAOC,eAAe8C,EAAQwJ,EAAM,CAChCnM,cAAc,EACdD,YAAY,EACZsM,IAAK,aAGLE,IAAK,SAAUzM,GACX0H,EAAc1F,KAAMqK,EAAMgI,GAAOtM,EAAM/H,QAqCvD,IAAIqU,GAAS,SAAgBzC,EAAMpB,EAAMnF,EAAM6S,GAE3C,OAAyB,IAArB1d,UAAUC,QAAgC,mBAATmR,EAC1B+C,GAAa/C,EAAK7J,MAAQ,mBAAoB6J,GAEhC,IAArBpR,UAAUC,QAAgC,mBAAT+P,EAC1BmE,GAAa/C,EAAMpB,GAEL,IAArBhQ,UAAUC,QAAgC,iBAATmR,EAC1BmM,GAAqBnM,IAEnB,IAATsM,EAKOH,GAAqBvN,GAAMzP,MAAM,KAAMP,gBAH9CoR,EAAKpB,GAAQmE,GAAa/C,EAAK7J,MAAQyI,EAAMnF,EAAKrL,SAqB1D,SAASme,GAAkBtb,EAAQmL,EAAc6G,GAC7CnN,EAAc7E,EAAQmL,EAAc2G,GAAa3G,EAAc6G,EAAG4H,KAAK5Z,KAS3E,SAASqW,GAAQkF,EAAMvM,QACN,IAATA,IAAmBA,EAAOxL,GAK9B,IAEIgY,EAFAtW,EAAQ8J,GAAQA,EAAK9J,MAASqW,EAAKrW,MAAQ,WAAarB,IAG5D,IAFemL,EAAKyM,YAAczM,EAAK0M,MAInCF,EAAW,IAAI5C,GAAS1T,GAAM,WAC1B/F,KAAK8W,MAAM0F,KACZ3M,EAAK4M,QAAS5M,EAAK+J,wBAErB,CACD,IAAI8C,EAAcC,GAA2B9M,GAEzC+M,GAAgB,EACpBP,EAAW,IAAI5C,GAAS1T,GAAM,WACrB6W,IACDA,GAAgB,EAChBF,GAAY,WACRE,GAAgB,EACXP,EAASxC,YACVwC,EAASvF,MAAM0F,SAG5B3M,EAAK4M,QAAS5M,EAAK+J,oBAE1B,SAAS4C,IACLJ,EAAKC,GAGT,OADAA,EAASpC,WACFoC,EAAS7B,cA3DpBnI,GAAOwK,MAnDP,SAA8Bhc,EAAQmL,EAAcnB,EAAYiS,GAC5D,OAAwB,IAApBA,GACAX,GAAkBtb,EAAQmL,EAAcnB,EAAW7M,OAC5C,MAEP6M,EAIO,CACH3M,cAAc,EACdD,YAAY,EACZsM,IAAK,WAED,OADA4R,GAAkBnc,KAAMgM,EAAcnB,EAAW7M,OAAS6M,EAAWuB,YAAY3O,KAAKuC,OAC/EA,KAAKgM,IAEhBvB,IAAKqR,IAIN,CACH7d,YAAY,EACZC,cAAc,EACduM,IAAK,SAAUtH,GACXgZ,GAAkBnc,KAAMgM,EAAc7I,IAE1CoH,IAAK,eAsFb,IAAIwS,GAAM,SAAUta,GAAK,OAAOA,KAChC,SAASka,GAA2B9M,GAChC,OAAOA,EAAKyM,UACNzM,EAAKyM,UACLzM,EAAK0M,MACD,SAAU9Z,GAAK,OAAO0V,WAAW1V,EAAGoN,EAAK0M,QACzCQ,GAEd,SAASV,GAASW,EAAYC,EAAQpN,QACrB,IAATA,IAAmBA,EAAOxL,GACV,kBAATwL,IACPA,EAAO,CAAE4F,gBAAiB5F,IAO9B,IAuCsB8J,EAAcuD,EAjChClf,EANA+H,EAAO8J,EAAK9J,MAAQ,YAAcrB,IAClCyY,EAAe9K,GAAOtM,EAAM8J,EAAK4M,SAsCf9C,EAtC0C9J,EAAK4M,QAsCjCS,EAtC0CD,EAuCvE,WACH,IACI,OAAOC,EAAOne,MAAMiB,KAAMxB,WAE9B,MAAOlB,GACHqc,EAAalc,KAAKuC,KAAM1C,MA5CwD2f,GACpFG,GAAWvN,EAAKyM,YAAczM,EAAK0M,MACnCD,EAAYK,GAA2B9M,GACvCmH,GAAY,EACZkD,GAAc,EAEdvM,EAASkC,EAAKqG,kBACZzM,EAASE,WACTkG,EAAKlC,QAAUlE,EAASlK,QAC1BlC,EAAI,IAAIoc,GAAS1T,GAAM,WACnBiR,GAAaoG,EACbZ,IAEMtC,IACNA,GAAc,EACdoC,EAAUE,MAEf3M,EAAK4M,QAAS5M,EAAK+J,oBACtB,SAAS4C,IAEL,GADAtC,GAAc,GACV7c,EAAEwc,WAAN,CAEA,IAAIhD,GAAU,EACdxZ,EAAEyZ,OAAM,WACJ,IAAIuG,EAAYL,EAAW3f,GAC3BwZ,EAAUG,IAAcrJ,EAAO3P,EAAOqf,GACtCrf,EAAQqf,KAERrG,GAAanH,EAAK4F,iBAClB0H,EAAanf,EAAOX,GACnB2Z,IAAyB,IAAZH,GACdsG,EAAanf,EAAOX,GACpB2Z,IACAA,GAAY,IAGpB,OADA3Z,EAAE4c,WACK5c,EAAEmd,cAgBb,SAASvS,GAAmB9B,EAAOqI,EAAMnF,GACrC,OAAOE,GAAc,qBAAsBpD,EAAOqI,EAAMnF,GAE5D,SAASE,GAAc+T,EAAMnX,EAAOqI,EAAMnF,GACtC,IAAIC,EAAuB,mBAATD,EAAsB2P,GAAQ7S,EAAOqI,GAAQwK,GAAQ7S,GACnEoX,EAAqB,mBAATlU,EAAsBA,EAAOmF,EACzCgP,EAAOlU,EAAKgU,GAChB,MAAoB,mBAATE,EACA3Y,GAAK,IAChByE,EAAKgU,GAAQ,WACTE,EAAK/f,KAAKuC,MACVud,EAAG9f,KAAKuC,OAEL,WACHsJ,EAAKgU,GAAQE,IAIrB,SAASC,GAAU5Q,GACf,IAAIwE,EAAiBxE,EAAQwE,eAAgBsG,EAA2B9K,EAAQ8K,yBAA0BvI,EAAuBvC,EAAQuC,qBAAsByB,EAAyBhE,EAAQgE,uBAAwB6M,EAAc7Q,EAAQ6Q,YAAa1C,EAAoBnO,EAAQmO,kBAAmBpD,EAA6B/K,EAAQ+K,2BAA4BC,EAA6BhL,EAAQgL,2BAIhZ,IAHmC,IAA/BhL,EAAQ8Q,sBAltBRhZ,GAAY4S,iBAAiB9Y,QAC7BkG,GAAY2R,SACZ3R,GAAY6S,qBACZ3S,EAAK,4EACTkT,IAAgB,EACZD,KAC0C,KAApCvT,IAAY0T,sBACd1T,IAAY2T,mBAAgB9R,GAChCzB,GAAc,IAAIyS,UA6sBChR,IAAnBiL,EAA8B,CAG9B,IAAIuM,OAAK,EACT,OAAQvM,GACJ,KAAK,EACL,IAAK,WACDuM,GAAK,EACL,MACJ,KAAK,EACL,IAAK,QACDA,GAAK,EACL,MACJ,IAAK,SACL,IAAK,SACDA,EAAK,SACL,MACJ,QACI/Y,EAAK,wCAA0CwM,EAAiB,+CAExE1M,GAAY0M,eAAiBuM,EAC7BjZ,GAAYyM,mBAA2B,IAAPwM,GAAsB,WAAPA,OAElBxX,IAA7BuR,IACAhT,GAAYgT,2BAA6BA,QAEVvR,IAA/BwR,IACAjT,GAAYiT,6BAA+BA,QAEZxR,IAA/ByR,IACAlT,GAAYkT,6BAA+BA,EAC3ClT,GAAY4N,iBAAmB5N,GAAYkT,iCAElBzR,IAAzBgJ,IACAzK,GAAYyK,uBAAyBA,QAEVhJ,IAA3ByK,KAC+B,IAA3BA,GACA6H,QAAQ4B,KAAK,iFACjB3V,GAAYkM,yBAA2BA,GAEhB,iBAAhB6M,GACPG,GAAmBH,GAEnB1C,GACAO,GAAqBP,GA+B7B,SAAS5M,GAAiBvN,EAAQid,EAAYld,EAAYiM,GACX,IAWvCJ,GADJI,EAAUF,EAA0BE,IACLJ,oBAAsC,IAAjBI,EAAQL,KAAiBY,EAAeN,GAC5FtC,EAAmB3J,GACnBkO,GAAmBlO,EAAQgM,EAAQ9G,KAAM0G,EAAiBV,UAC1D1D,KACA,IAEI,IADA,IAAIqG,EAAO5Q,OAAOigB,oBAAoBD,GAC7B1gB,EAAI,EAAGsT,EAAIhC,EAAKjQ,OAAQrB,EAAIsT,EAAGtT,IAAK,CACzC,IAAI+B,EAAMuP,EAAKtR,GACXyN,EAAa/M,OAAOkD,yBAAyB8c,EAAY3e,GACzD,EAWJ,IAAI6e,GAPYpd,GAAczB,KAAOyB,EAC/BA,EAAWzB,GACX0L,EAAWN,IACPqE,GACAnC,GAGuB5L,EAAQ1B,EAAK0L,GAAY,GACtDmT,GAEAlgB,OAAOC,eAAe8C,EAAQ1B,EAAK6e,IAG/C,QACIhV,KAEJ,OAAOnI,EAMX,SAASkY,GAAqBX,GAC1B,IAtvEYE,EACR5R,EAqvEAvE,EAAS,CACT4D,KAAMqS,EAAKrS,MAIf,OAFIqS,EAAK3H,WAAa2H,EAAK3H,UAAUhS,OAAS,IAC1C0D,EAAOoX,cA1vECjB,EA0vEqBF,EAAK3H,UAzvElC/J,EAAM,GACV4R,EAAK3J,SAAQ,SAAUsP,IACQ,IAAvBvX,EAAIlG,QAAQyd,IACZvX,EAAIpD,KAAK2a,MAEVvX,GAovE0CiF,IAAIoN,KAC9C5W,EAeX,SAAS+b,KACLle,KAAK8E,QAAU,iBA+InB,SAASqZ,GAAcngB,EAAOib,GAC1B,GAAIjb,MAAAA,EACA,OAAO,EACX,QAAiBoI,IAAb6S,EAAwB,CAIxB,GAAIjM,GAAmBhP,GAAQ,CAC3B,IAAIwF,EAAIxF,EAAM0c,MACd,OAAOlX,EAAEyL,UAAYzL,EAAEyL,OAAOgK,GAElC,OAAO,EAGX,OAAQjM,GAAmBhP,MACrBA,EAAM0c,OACRzR,EAAOjL,IACPsd,GAAWtd,IACX4S,GAAgB5S,GAExB,SAASyN,GAAazN,GAIlB,OAHyB,IAArBQ,UAAUC,QACVoG,GAAK,GAEFsZ,GAAcngB,GAQzB,SAAS0Q,GAAKiC,GACV,OAAI3D,GAAmB2D,GACZA,EAAI+J,MAAM0D,UAEjBlR,GAAgByD,IAGhBxD,GAAgBwD,GAFTnK,EAAgBmK,EAAIjC,QAK3BzB,GAAkB0D,GACXA,EAAIhF,KAAI,SAAU/I,EAAG4V,GAAS,OAAOA,KAEzC3T,GAAK,GAmChB,SAAS4F,GAAIkG,EAAKxR,EAAKnB,GACnB,GAAyB,IAArBQ,UAAUC,QAAiB0O,GAAgBwD,GAY/C,GAAI3D,GAAmB2D,GAAM,CACzB,IAAI7B,EAAM6B,EAAI+J,MACV2D,EAAqBvP,EAAIG,OAAO9P,GAChCkf,EACAvP,EAAIS,MAAMoB,EAAKxR,EAAKnB,GAGpBmO,GAAyBwE,EAAKxR,EAAKnB,EAAO8Q,EAAIwP,sBAGjD,GAAIpR,GAAgByD,GACrBA,EAAIlG,IAAItL,EAAKnB,QAEZ,GAAImP,GAAgBwD,GACrBA,EAAI4N,IAAIpf,OAEP,KAAI8N,GAAkB0D,GAWvB,OAAO9L,GAAK,GAVO,iBAAR1F,IACPA,EAAMqf,SAASrf,EAAK,KACxB4F,EAAU5F,GAAO,EAAG,uBAAyBA,EAAM,KACnDkJ,KACIlJ,GAAOwR,EAAIlS,SACXkS,EAAIlS,OAASU,EAAM,GACvBwR,EAAIxR,GAAOnB,EACXgL,SApCJ,CACIX,KACA,IAAIoW,EAAWtf,EACf,IACI,IAAK,IAAIuf,KAASD,EACdhU,GAAIkG,EAAK+N,EAAOD,EAASC,IAEjC,QACI1V,OA6EZ,SAASuB,GAAIoG,EAAKxR,GACd,GAtBJ,SAAawR,EAAKxR,GACd,GAAI6N,GAAmB2D,GAAM,CAEzB,IAAI7B,EAAM6P,GAAkBhO,GAE5B,OADA7B,EAAIsP,YACKtP,EAAIG,OAAO9P,GAEnB,OAAI+N,GAAgByD,IAGhBxD,GAAgBwD,GAFdA,EAAIiO,IAAIzf,GAKV8N,GAAkB0D,GAChBxR,GAAO,GAAKA,EAAMwR,EAAIlS,OAGtBoG,GAAK,GAKX+Z,CAAIjO,EAAKxR,GAEd,OAAI6N,GAAmB2D,GACZA,EAAIxR,GAEN+N,GAAgByD,GACdA,EAAIpG,IAAIpL,GAEV8N,GAAkB0D,GAChBA,EAAIxR,GAGJ0F,GAAK,GAhUpBqZ,GAAsBjf,UAAYnB,OAAOoC,OAAO+E,MAAMhG,WAkVtD,IAAI4f,GAAiB,CACjBC,cAAc,EACdC,qBAAqB,EACrBC,mBAAmB,GAEvB,SAAS1U,GAAMqB,EAAKxM,EAAKnB,EAAO6O,GAG5B,OAFIA,EAAQiS,cACRnT,EAAIlB,IAAItL,EAAKnB,GACVA,EAEX,SAASihB,GAAWC,EAAQrS,EAASsS,GACjC,IAAKtS,EAAQmS,oBAAsBvT,GAAayT,GAC5C,OAAOA,EACX,GAAsB,iBAAXA,EACP,OAAOA,EAEX,GAAe,OAAXA,EACA,OAAO,KAEX,GAAIA,aAAkB7L,KAClB,OAAO6L,EACX,GAAIrJ,GAAkBqJ,GAClB,OAAOD,GAAWC,EAAO3U,MAAOsC,EAASsS,GAK7C,GAHI1T,GAAayT,IACbxQ,GAAKwQ,IACmC,IAAzBrS,EAAQiS,cACI,OAAXI,GAAmBC,EAAcP,IAAIM,GACrD,OAAOC,EAAc5U,IAAI2U,GAE7B,GAAIjS,GAAkBiS,IAAWrgB,MAAMC,QAAQogB,GAAS,CACpD,IAAIE,EAAQ9U,GAAM6U,EAAeD,EAAQ,GAAIrS,GACzCwS,EAAQH,EAAOvT,KAAI,SAAU3N,GAAS,OAAOihB,GAAWjhB,EAAO6O,EAASsS,MAC5EC,EAAM3gB,OAAS4gB,EAAM5gB,OACrB,IAAK,IAAIrB,EAAI,EAAGsT,EAAI2O,EAAM5gB,OAAQrB,EAAIsT,EAAGtT,IACrCgiB,EAAMhiB,GAAKiiB,EAAMjiB,GACrB,OAAOgiB,EAEX,GAAIjS,GAAgB+R,IAAWphB,OAAO2H,eAAeyZ,KAAY3Y,IAAItH,UAAW,CAC5E,IAAoC,IAAhC4N,EAAQkS,oBAA+B,CACvC,IAAIO,EAAQhV,GAAM6U,EAAeD,EAAQ,IAAI3Y,IAAOsG,GAIpD,OAHAqS,EAAOvQ,SAAQ,SAAU3Q,GACrBshB,EAAMf,IAAIU,GAAWjhB,EAAO6O,EAASsS,OAElCG,EAGP,IAAIC,EAAQjV,GAAM6U,EAAeD,EAAQ,GAAIrS,GAI7C,OAHAqS,EAAOvQ,SAAQ,SAAU3Q,GACrBuhB,EAAMjc,KAAK2b,GAAWjhB,EAAO6O,EAASsS,OAEnCI,EAGf,GAAIrS,GAAgBgS,IAAWphB,OAAO2H,eAAeyZ,KAAY7Y,IAAIpH,UAAW,CAC5E,IAAoC,IAAhC4N,EAAQkS,oBAA+B,CACvC,IAAIS,EAAQlV,GAAM6U,EAAeD,EAAQ,IAAI7Y,IAAOwG,GAIpD,OAHAqS,EAAOvQ,SAAQ,SAAU3Q,EAAOmB,GAC5BqgB,EAAM/U,IAAItL,EAAK8f,GAAWjhB,EAAO6O,EAASsS,OAEvCK,EAGP,IAAIC,EAAQnV,GAAM6U,EAAeD,EAAQ,GAAIrS,GAI7C,OAHAqS,EAAOvQ,SAAQ,SAAU3Q,EAAOmB,GAC5BsgB,EAAMtgB,GAAO8f,GAAWjhB,EAAO6O,EAASsS,MAErCM,EAIf,IAAI/Y,EAAM4D,GAAM6U,EAAeD,EAAQ,GAAIrS,GAC3C,IAAK,IAAI1N,KAAO+f,EACZxY,EAAIvH,GAAO8f,GAAWC,EAAO/f,GAAM0N,EAASsS,GAEhD,OAAOzY,EAEX,SAASgZ,GAAKR,EAAQrS,GAUlB,IAAIsS,EAGJ,MAXuB,kBAAZtS,IACPA,EAAU,CAAEiS,aAAcjS,IACzBA,IACDA,EAAUgS,IACdhS,EAAQiS,kBACqB1Y,IAAzByG,EAAQiS,cAC4B,IAA9BjS,EAAQmS,mBACiB,IAAzBnS,EAAQiS,aAEdjS,EAAQiS,eACRK,EAAgB,IAAI9Y,KACjB4Y,GAAWC,EAAQrS,EAASsS,GAqBvC,SAASrE,GAAgBvP,GACrB,OAAQA,EAAK9M,QACT,KAAK,EACD,OAAOkG,GAAYgN,mBACvB,KAAK,EACD,OAAOqH,GAAQzN,EAAK,IACxB,KAAK,EACD,OAAOyN,GAAQzN,EAAK,GAAIA,EAAK,KAWzC,SAASoU,GAAYtN,EAAQ7Q,QACT,IAAZA,IAAsBA,OAAU4E,GACpCiC,KACA,IACI,OAAOgK,EAAOtT,MAAMyC,GAExB,QACIwH,MAIR,SAAS4W,GAAKC,EAAWjQ,EAAMpB,GAC3B,OAAyB,IAArBhQ,UAAUC,QAAiBmR,GAAwB,iBAATA,EACnCkQ,GAAYD,EAAWjQ,GAC3BmQ,GAAMF,EAAWjQ,EAAMpB,GAAQ,IAE1C,SAASuR,GAAMF,EAAW5C,EAAQpN,GAC9B,IAAImQ,EACwB,iBAAjBnQ,EAAKoQ,UACZD,EAAgB7H,YAAW,WACvB,IAAK+H,EAASxF,MAAMb,WAAY,CAC5BqG,IACA,IAAItc,EAAQ,IAAIqB,MAAM,gBACtB,IAAI4K,EAAK4M,QAGL,MAAM7Y,EAFNiM,EAAK4M,QAAQ7Y,MAItBiM,EAAKoQ,UAEZpQ,EAAK9J,KAAO8J,EAAK9J,MAAQ,QAAUrB,IACnC,IAAIyY,EAAexK,GAAa9C,EAAK9J,KAAO,UAAWkX,GACnDiD,EAAWhJ,IAAQ,SAAU7Z,GACzBwiB,MACAxiB,EAAEkd,UACEyF,GACAG,aAAaH,GACjB7C,OAELtN,GACH,OAAOqQ,EAEX,SAASJ,GAAYD,EAAWhQ,GAG5B,IAAIuQ,EACJ,IAAI1Z,EAAM,IAAI9E,SAAQ,SAAUC,EAASC,GACrC,IAAIoe,EAAWH,GAAMF,EAAWhe,EAAS1B,EAASA,EAAS,GAAI0P,GAAO,CAAE4M,QAAS3a,KACjFse,EAAS,WACLF,IACApe,EAAO,sBAIf,OADA4E,EAAI0Z,OAASA,EACN1Z,EAGX,SAASqO,GAAgBsL,GACrB,YAAsCja,IAA/Bia,EAAcC,cAA8BD,EAAcC,aAAa7hB,OAAS,EAE3F,SAAS6W,GAAoB+K,EAAehL,GACxC,IAAIiL,EAAeD,EAAcC,eAAiBD,EAAcC,aAAe,IAE/E,OADAA,EAAahd,KAAK+R,GACXnQ,GAAK,WACR,IAAIqb,EAAMD,EAAa9f,QAAQ6U,IAClB,IAATkL,GACAD,EAAalF,OAAOmF,EAAK,MAGrC,SAAStL,GAAgBoL,EAAerL,GACpC,IAAImC,EAAQ5G,KACZ,IACI,IAAI+P,EAAeD,EAAcC,aACjC,GAAIA,EACA,IAAK,IAAIljB,EAAI,EAAGsT,EAAI4P,EAAa7hB,OAAQrB,EAAIsT,IAEzC3L,IADAiQ,EAASsL,EAAaljB,GAAG4X,KACJA,EAAOvB,KAAM,+DAC7BuB,GAHuC5X,KAMpD,OAAO4X,EAEX,QACIlE,GAAaqG,IAIrB,SAASjC,GAAasL,GAClB,YAAsCpa,IAA/Boa,EAAWC,iBAAiCD,EAAWC,gBAAgBhiB,OAAS,EAE3F,SAASiX,GAAiB8K,EAAYnL,GAClC,IAAIqG,EAAY8E,EAAWC,kBAAoBD,EAAWC,gBAAkB,IAE5E,OADA/E,EAAUpY,KAAK+R,GACRnQ,GAAK,WACR,IAAIqb,EAAM7E,EAAUlb,QAAQ6U,IACf,IAATkL,GACA7E,EAAUN,OAAOmF,EAAK,MAGlC,SAASpL,GAAgBqL,EAAYxL,GACjC,IAAImC,EAAQ5G,KACRmL,EAAY8E,EAAWC,gBAC3B,GAAK/E,EAAL,CAGA,IAAK,IAAIte,EAAI,EAAGsT,GADhBgL,EAAYA,EAAUpQ,SACQ7M,OAAQrB,EAAIsT,EAAGtT,IACzCse,EAAUte,GAAG4X,GAEjBlE,GAAaqG,IAGjB,IAGQhU,GACAtD,GAqBS6gB,GAAMlb,GAvBnBmb,IACIxd,IAAI,EACJtD,GAAI,GACR/B,OAAOC,eAAe8B,GAAG,IAAK,CAC1B4K,IAAK,WACDtH,IAAI,KAGZrF,OAAOoC,OAAOL,IAAG,GAAO,GACX,IAANsD,IAOPyd,GAA+B,EAE/BC,GACA,aAIaH,GAWTG,GAXerb,GAWJ3G,MAAMI,eAVmB,IAA7BnB,OAAuB,eAC9BA,OAAuB,eAAE4iB,GAAKzhB,UAAWuG,SAEA,IAA7Bkb,GAAKzhB,UAAUW,UAC3B8gB,GAAKzhB,UAAUW,UAAY4F,GAG3Bkb,GAAgB,UAAIlb,GAOxB1H,OAAOgjB,SAASjiB,QAChB,CACI,cACA,OACA,QACA,SACA,MACA,UACA,UACA,OACA,YACA,SACA,UACA,QACF8P,SAAQ,SAAUxP,GAChBrB,OAAOC,eAAe8iB,GAAU5hB,UAAWE,EAAK,CAC5CjB,cAAc,EACdC,UAAU,EACVH,MAAOa,MAAMI,UAAUE,QAInC,IAAI4hB,GAA+C,WAC/C,SAASA,EAA8Bhb,EAAMgG,EAAUL,EAAOsV,GAC1DhhB,KAAK0L,MAAQA,EACb1L,KAAKghB,MAAQA,EACbhhB,KAAKiP,OAAS,GACdjP,KAAKihB,gBAAkB,EACvBjhB,KAAKsJ,KAAO,IAAI/B,EAAKxB,GAAQ,mBAAqBrB,KAClD1E,KAAK+L,SAAW,SAAUmV,EAAMC,GAAQ,OAAOpV,EAASmV,EAAMC,EAAMpb,EAAO,SAyJ/E,OAvJAgb,EAA8B9hB,UAAUyV,aAAe,SAAU1W,GAC7D,YAAsBoI,IAAlBpG,KAAK2U,SACE3U,KAAK2U,SAAS3W,GAClBA,GAEX+iB,EAA8B9hB,UAAUmiB,cAAgB,SAAUnS,GAC9D,YAAsB7I,IAAlBpG,KAAK2U,UAA0B1F,EAAOxQ,OAAS,EACxCwQ,EAAOtD,IAAI3L,KAAK2U,UACpB1F,GAEX8R,EAA8B9hB,UAAUmW,UAAY,SAAUC,GAC1D,OAAOC,GAAoBtV,KAAMqV,IAErC0L,EAA8B9hB,UAAUsW,QAAU,SAAUC,EAAUC,GAalE,YAZwB,IAApBA,IAA8BA,GAAkB,GAChDA,GACAD,EAAS,CACL7P,OAAQ3F,KAAK0L,MACb+H,KAAM,SACN+E,MAAO,EACP6I,MAAOrhB,KAAKiP,OAAO3D,QACnBgW,WAAYthB,KAAKiP,OAAOxQ,OACxB8iB,QAAS,GACTC,aAAc,IAGf9L,GAAiB1V,KAAMwV,IAElCuL,EAA8B9hB,UAAUwiB,eAAiB,WAErD,OADAzhB,KAAKsJ,KAAKnB,iBACHnI,KAAKiP,OAAOxQ,QAEvBsiB,EAA8B9hB,UAAUyiB,eAAiB,SAAUC,GAC/D,GAAyB,iBAAdA,GAA0BA,EAAY,EAC7C,MAAM,IAAI1c,MAAM,8BAAgC0c,GACpD,IAAIC,EAAgB5hB,KAAKiP,OAAOxQ,OAChC,GAAIkjB,IAAcC,EAEb,GAAID,EAAYC,EAAe,CAEhC,IADA,IAAIC,EAAW,IAAIhjB,MAAM8iB,EAAYC,GAC5BxkB,EAAI,EAAGA,EAAIukB,EAAYC,EAAexkB,IAC3CykB,EAASzkB,QAAKgJ,EAClBpG,KAAK8hB,gBAAgBF,EAAe,EAAGC,QAGvC7hB,KAAK8hB,gBAAgBH,EAAWC,EAAgBD,IAGxDZ,EAA8B9hB,UAAU8iB,kBAAoB,SAAUC,EAAWC,GAC7E,GAAID,IAAchiB,KAAKihB,gBACnB,MAAM,IAAIhc,MAAM,8HACpBjF,KAAKihB,iBAAmBgB,EACpBA,EAAQ,GAAKD,EAAYC,EAAQ,EAAIrB,IACrC/C,GAAmBmE,EAAYC,EAAQ,IAE/ClB,EAA8B9hB,UAAU6iB,gBAAkB,SAAUtJ,EAAO0J,EAAaL,GACpF,IAAItN,EAAQvU,KACZiR,GAAoCjR,KAAKsJ,MACzC,IAAI7K,EAASuB,KAAKiP,OAAOxQ,OAezB,QAdc2H,IAAVoS,EACAA,EAAQ,EACHA,EAAQ/Z,EACb+Z,EAAQ/Z,EACH+Z,EAAQ,IACbA,EAAQ2J,KAAKC,IAAI,EAAG3jB,EAAS+Z,IAE7B0J,EADqB,IAArB1jB,UAAUC,OACIA,EAAS+Z,EAClB0J,MAAAA,EACS,EAEAC,KAAKC,IAAI,EAAGD,KAAKE,IAAIH,EAAazjB,EAAS+Z,SAC5CpS,IAAbyb,IACAA,EAAW1d,GACX4Q,GAAgB/U,MAAO,CACvB,IAAIgV,EAASC,GAAgBjV,KAAM,CAC/B2F,OAAQ3F,KAAK0L,MACb+H,KAAM,SACN+E,MAAOA,EACPgJ,aAAcU,EACdb,MAAOQ,IAEX,IAAK7M,EACD,OAAO7Q,EACX+d,EAAclN,EAAOwM,aACrBK,EAAW7M,EAAOqM,MAItB,IAAIiB,GAFJT,EACwB,IAApBA,EAASpjB,OAAeojB,EAAWA,EAASlW,KAAI,SAAUxI,GAAK,OAAOoR,EAAMxI,SAAS5I,OAAGiD,OACjE3H,OAASyjB,EACpCliB,KAAK+hB,kBAAkBtjB,EAAQ6jB,GAC/B,IAAI5b,EAAM1G,KAAKuiB,sBAAsB/J,EAAO0J,EAAaL,GAGzD,OAFoB,IAAhBK,GAAyC,IAApBL,EAASpjB,QAC9BuB,KAAKwiB,kBAAkBhK,EAAOqJ,EAAUnb,GACrC1G,KAAKohB,cAAc1a,IAE9Bqa,EAA8B9hB,UAAUsjB,sBAAwB,SAAU/J,EAAO0J,EAAaL,GAC1F,IAAIY,EACJ,GAAIZ,EAASpjB,OAxKC,IAyKV,OAAQgkB,EAAKziB,KAAKiP,QAAQmM,OAAOrc,MAAM0jB,EAAIzY,EAAS,CAACwO,EAAO0J,GAAcL,IAG1E,IAAInb,EAAM1G,KAAKiP,OAAO3D,MAAMkN,EAAOA,EAAQ0J,GAI3C,OAHAliB,KAAKiP,OAASjP,KAAKiP,OACd3D,MAAM,EAAGkN,GACTvO,OAAO4X,EAAU7hB,KAAKiP,OAAO3D,MAAMkN,EAAQ0J,IACzCxb,GAGfqa,EAA8B9hB,UAAUyjB,uBAAyB,SAAUlK,EAAO3M,EAAUyB,GACxF,IAAI4F,GAAalT,KAAKghB,OAAS7N,KAC3BkH,EAASnF,GAAalV,MACtBgV,EAASqF,GAAUnH,EACjB,CACEvN,OAAQ3F,KAAK0L,MACb+H,KAAM,SACN+E,MAAOA,EACP3M,SAAUA,EACVyB,SAAUA,GAEZ,KACF4F,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM/F,KAAKsJ,KAAKvD,QACpE/F,KAAKsJ,KAAKlB,gBACNiS,GACAlF,GAAgBnV,KAAMgV,GACtB9B,GACAiB,MAER4M,EAA8B9hB,UAAUujB,kBAAoB,SAAUhK,EAAO6I,EAAOE,GAChF,IAAIrO,GAAalT,KAAKghB,OAAS7N,KAC3BkH,EAASnF,GAAalV,MACtBgV,EAASqF,GAAUnH,EACjB,CACEvN,OAAQ3F,KAAK0L,MACb+H,KAAM,SACN+E,MAAOA,EACP+I,QAASA,EACTF,MAAOA,EACPG,aAAcD,EAAQ9iB,OACtB6iB,WAAYD,EAAM5iB,QAEpB,KACFyU,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM/F,KAAKsJ,KAAKvD,QACpE/F,KAAKsJ,KAAKlB,gBAENiS,GACAlF,GAAgBnV,KAAMgV,GACtB9B,GACAiB,MAED4M,EAhKuC,GAkK9CjT,GAAiC,SAAUwG,GAE3C,SAASxG,EAAgBD,EAAe9B,EAAUhG,EAAMib,QACvC,IAATjb,IAAmBA,EAAO,mBAAqBrB,UACrC,IAAVsc,IAAoBA,GAAQ,GAChC,IAAIzM,EAAQD,EAAO7W,KAAKuC,OAASA,KAC7B8O,EAAM,IAAIiS,GAA8Bhb,EAAMgG,EAAUwI,EAAOyM,GAEnE,GADAnb,EAAmB0O,EAAO,QAASzF,GAC/BjB,GAAiBA,EAAcpP,OAAQ,CACvC,IAAI6T,EAAOsB,IAAuB,GAClCW,EAAMuN,gBAAgB,EAAG,EAAGjU,GAC5BqG,GAAqB5B,GAOzB,OALIqO,IAGA7iB,OAAOC,eAAe+Q,EAAIpD,MAAO,IAAKiX,IAEnCpO,EA4MX,OA7NAzU,EAAUgO,EAAiBwG,GAmB3BxG,EAAgB7O,UAAUmW,UAAY,SAAUC,GAC5C,OAAOrV,KAAK0a,MAAMtF,UAAUC,IAEhCvH,EAAgB7O,UAAUsW,QAAU,SAAUC,EAAUC,GAEpD,YADwB,IAApBA,IAA8BA,GAAkB,GAC7CzV,KAAK0a,MAAMnF,QAAQC,EAAUC,IAExC3H,EAAgB7O,UAAU2jB,MAAQ,WAC9B,OAAO5iB,KAAKob,OAAO,IAEvBtN,EAAgB7O,UAAUgL,OAAS,WAE/B,IADA,IAAI4Y,EAAS,GACJhI,EAAK,EAAGA,EAAKrc,UAAUC,OAAQoc,IACpCgI,EAAOhI,GAAMrc,UAAUqc,GAG3B,OADA7a,KAAK0a,MAAMpR,KAAKnB,iBACTtJ,MAAMI,UAAUgL,OAAOlL,MAAMiB,KAAK2W,OAAQkM,EAAOlX,KAAI,SAAU3H,GAAK,OAAQiJ,GAAkBjJ,GAAKA,EAAE2S,OAAS3S,OAEzH8J,EAAgB7O,UAAUka,QAAU,SAAU0I,GAC1C,OAAO7hB,KAAK0a,MAAMoH,gBAAgB,EAAG9hB,KAAK0a,MAAMzL,OAAOxQ,OAAQojB,IAMnE/T,EAAgB7O,UAAUygB,KAAO,WAC7B,OAAO1f,KAAKsL,SAEhBwC,EAAgB7O,UAAU0W,OAAS,WAE/B,OAAO3V,KAAK0f,QAEhB5R,EAAgB7O,UAAU0X,KAAO,WAE7B,OADA3W,KAAK0a,MAAMpR,KAAKnB,iBACTnI,KAAK0a,MAAM0G,cAAcphB,KAAK0a,MAAMzL,SAG/CnB,EAAgB7O,UAAU6jB,KAAO,SAAUjD,EAAWre,EAASuhB,QACzC,IAAdA,IAAwBA,EAAY,GAGxC,IAAIxC,EAAMvgB,KAAKgjB,UAAUjkB,MAAMiB,KAAMxB,WACrC,OAAgB,IAAT+hB,OAAana,EAAYpG,KAAKuK,IAAIgW,IAG7CzS,EAAgB7O,UAAU+jB,UAAY,SAAUnD,EAAWre,EAASuhB,QAC9C,IAAdA,IAAwBA,EAAY,GAIxC,IADA,IAAIE,EAAQjjB,KAAK2W,OAAQjG,EAAIuS,EAAMxkB,OAC1BrB,EAAI2lB,EAAW3lB,EAAIsT,EAAGtT,IAC3B,GAAIyiB,EAAUpiB,KAAK+D,EAASyhB,EAAM7lB,GAAIA,EAAG4C,MACrC,OAAO5C,EACf,OAAQ,GAQZ0Q,EAAgB7O,UAAUmc,OAAS,SAAU5C,EAAO0J,GAEhD,IADA,IAAIL,EAAW,GACNhH,EAAK,EAAGA,EAAKrc,UAAUC,OAAQoc,IACpCgH,EAAShH,EAAK,GAAKrc,UAAUqc,GAEjC,OAAQrc,UAAUC,QACd,KAAK,EACD,MAAO,GACX,KAAK,EACD,OAAOuB,KAAK0a,MAAMoH,gBAAgBtJ,GACtC,KAAK,EACD,OAAOxY,KAAK0a,MAAMoH,gBAAgBtJ,EAAO0J,GAEjD,OAAOliB,KAAK0a,MAAMoH,gBAAgBtJ,EAAO0J,EAAaL,IAE1D/T,EAAgB7O,UAAU6iB,gBAAkB,SAAUtJ,EAAO0J,EAAaL,GACtE,OAAO7hB,KAAK0a,MAAMoH,gBAAgBtJ,EAAO0J,EAAaL,IAE1D/T,EAAgB7O,UAAUqE,KAAO,WAE7B,IADA,IAAI2f,EAAQ,GACHpI,EAAK,EAAGA,EAAKrc,UAAUC,OAAQoc,IACpCoI,EAAMpI,GAAMrc,UAAUqc,GAE1B,IAAI/L,EAAM9O,KAAK0a,MAEf,OADA5L,EAAIgT,gBAAgBhT,EAAIG,OAAOxQ,OAAQ,EAAGwkB,GACnCnU,EAAIG,OAAOxQ,QAEtBqP,EAAgB7O,UAAUoE,IAAM,WAC5B,OAAOrD,KAAKob,OAAO+G,KAAKC,IAAIpiB,KAAK0a,MAAMzL,OAAOxQ,OAAS,EAAG,GAAI,GAAG,IAErEqP,EAAgB7O,UAAUikB,MAAQ,WAC9B,OAAOljB,KAAKob,OAAO,EAAG,GAAG,IAE7BtN,EAAgB7O,UAAUkkB,QAAU,WAEhC,IADA,IAAIF,EAAQ,GACHpI,EAAK,EAAGA,EAAKrc,UAAUC,OAAQoc,IACpCoI,EAAMpI,GAAMrc,UAAUqc,GAE1B,IAAI/L,EAAM9O,KAAK0a,MAEf,OADA5L,EAAIgT,gBAAgB,EAAG,EAAGmB,GACnBnU,EAAIG,OAAOxQ,QAEtBqP,EAAgB7O,UAAUmkB,QAAU,WAIhC,IAAIC,EAAQrjB,KAAKsL,QACjB,OAAO+X,EAAMD,QAAQrkB,MAAMskB,EAAO7kB,YAEtCsP,EAAgB7O,UAAUqkB,KAAO,SAAUC,GAGvC,IAAIF,EAAQrjB,KAAKsL,QACjB,OAAO+X,EAAMC,KAAKvkB,MAAMskB,EAAO7kB,YAEnCsP,EAAgB7O,UAAUukB,OAAS,SAAUxlB,GACzC,IAAIuiB,EAAMvgB,KAAK0a,MAAM0G,cAAcphB,KAAK0a,MAAMzL,QAAQzO,QAAQxC,GAC9D,OAAIuiB,GAAO,IACPvgB,KAAKob,OAAOmF,EAAK,IACV,IAIfzS,EAAgB7O,UAAUwkB,KAAO,SAAUV,EAAWW,GAElD,SAASC,EAAWnL,GAChB,GAAIA,EAAQ,EACR,MAAM,IAAIvT,MAAM,qCAAuCuT,EAAQ,gBAEnE,IAAI/Z,EAASuB,KAAK0a,MAAMzL,OAAOxQ,OAC/B,GAAI+Z,GAAS/Z,EACT,MAAM,IAAIwG,MAAM,qCAAuCuT,EAAQ,wBAA0B/Z,GAKjG,GAFAklB,EAAWlmB,KAAKuC,KAAM+iB,GACtBY,EAAWlmB,KAAKuC,KAAM0jB,GAClBX,IAAcW,EAAlB,CAGA,IACI7B,EADA+B,EAAW5jB,KAAK0a,MAAMzL,OAGtB4S,EADAkB,EAAYW,EACD1Z,EAAS4Z,EAAStY,MAAM,EAAGyX,GAAYa,EAAStY,MAAMyX,EAAY,EAAGW,EAAU,GAAI,CAC1FE,EAASb,IACVa,EAAStY,MAAMoY,EAAU,IAIjB1Z,EAAS4Z,EAAStY,MAAM,EAAGoY,GAAU,CAC5CE,EAASb,IACVa,EAAStY,MAAMoY,EAASX,GAAYa,EAAStY,MAAMyX,EAAY,IAEtE/iB,KAAKmZ,QAAQ0I,KAGjB/T,EAAgB7O,UAAUsL,IAAM,SAAUiO,GACtC,IAAIqL,EAAO7jB,KAAK0a,MAChB,GAAImJ,EAAM,CACN,GAAIrL,EAAQqL,EAAK5U,OAAOxQ,OAEpB,OADAolB,EAAKva,KAAKnB,iBACH0b,EAAKnP,aAAamP,EAAK5U,OAAOuJ,IAEzCE,QAAQ4B,KAAK,gDAAkD9B,EAAQ,4BAA8BqL,EAAK5U,OAAOxQ,OAAS,oFAKlIqP,EAAgB7O,UAAUwL,IAAM,SAAU+N,EAAO3M,GAC7C,IAAIiD,EAAM9O,KAAK0a,MACXzL,EAASH,EAAIG,OACjB,GAAIuJ,EAAQvJ,EAAOxQ,OAAQ,CAEvBwS,GAAoCnC,EAAIxF,MACxC,IAAIgE,EAAW2B,EAAOuJ,GACtB,GAAIzD,GAAgBjG,GAAM,CACtB,IAAIkG,EAASC,GAAgBnG,EAAK,CAC9B2E,KAAM,SACN9N,OAAQ3F,KACRwY,MAAOA,EACP3M,SAAUA,IAEd,IAAKmJ,EACD,OACJnJ,EAAWmJ,EAAOnJ,UAEtBA,EAAWiD,EAAI/C,SAASF,EAAUyB,MACPA,IAEvB2B,EAAOuJ,GAAS3M,EAChBiD,EAAI4T,uBAAuBlK,EAAO3M,EAAUyB,QAG/C,IAAIkL,IAAUvJ,EAAOxQ,OAMtB,MAAM,IAAIwG,MAAM,qCAAuCuT,EAAQ,mBAAqBvJ,EAAOxQ,QAJ3FqQ,EAAIgT,gBAAgBtJ,EAAO,EAAG,CAAC3M,MAOhCiC,EA9NyB,CA+NlC+S,IACF7Z,EAAgB8G,GAAgB7O,WAAW,WACvCe,KAAK0a,MAAMpR,KAAKnB,iBAChB,IAAI1D,EAAOzE,KACP8jB,EAAY,EAChB,OAAO3c,EAAa,CAChBlF,KAAM,WACF,OAAO6hB,EAAYrf,EAAKhG,OAClB,CAAET,MAAOyG,EAAKqf,KAAc1hB,MAAM,GAClC,CAAEA,MAAM,EAAMpE,WAAOoI,SAIvCtI,OAAOC,eAAe+P,GAAgB7O,UAAW,SAAU,CACvDhB,YAAY,EACZC,cAAc,EACdqM,IAAK,WACD,OAAOvK,KAAK0a,MAAM+G,kBAEtBhX,IAAK,SAAUkX,GACX3hB,KAAK0a,MAAMgH,eAAeC,MAGlCjc,EAAcoI,GAAgB7O,UAAWoI,IAAqB,SAC9D,CAAC,UAAW,OAAQ,cAAe,QAAS,WAAY,kBAAkBsH,SAAQ,SAAUoV,GACxF,IAAIC,EAAWnlB,MAAMI,UAAU8kB,GAC/Bhf,EAA8B,mBAAbif,EAAyB,kDAAoDD,EAAW,KACzGre,EAAcoI,GAAgB7O,UAAW8kB,GAAU,WAC/C,OAAOC,EAASjlB,MAAMiB,KAAK2W,OAAQnY,iBAG3C,CACI,QACA,SAIA,UACA,MACA,QACFmQ,SAAQ,SAAUoV,GAEhBhf,EAA8B,mBADflG,MAAMI,UAAU8kB,GACW,kDAAoDA,EAAW,KACzGre,EAAcoI,GAAgB7O,UAAW8kB,GAAU,SAAUjd,EAAUtF,GACnE,IAAI+S,EAAQvU,KACR8O,EAAM9O,KAAK0a,MAGf,OAFA5L,EAAIxF,KAAKnB,iBACY2G,EAAIsS,cAActS,EAAIG,QACrB8U,IAAU,SAAUE,EAASzL,GAC/C,OAAO1R,EAASrJ,KAAK+D,EAASyiB,EAASzL,EAAOjE,KAC/C/S,SAGX,CAAC,SAAU,eAAemN,SAAQ,SAAUoV,GACxCre,EAAcoI,GAAgB7O,UAAW8kB,GAAU,WAC/C,IAAIxP,EAAQvU,KACR8O,EAAM9O,KAAK0a,MACf5L,EAAIxF,KAAKnB,iBAET,IAAIrB,EAAWtI,UAAU,GAKzB,OAJAA,UAAU,GAAK,SAAU0lB,EAAaC,EAAc3L,GAEhD,OADA2L,EAAerV,EAAI4F,aAAayP,GACzBrd,EAASod,EAAaC,EAAc3L,EAAOjE,IAE/CzF,EAAIG,OAAO8U,GAAUhlB,MAAM+P,EAAIG,OAAQzQ,iBA3yGtD,SAA2BmH,EAAQye,GAC/B,IAAK,IAAIhnB,EAAI,EAAGA,EAAIgnB,EAAU3lB,OAAQrB,IAClCsI,EAAcC,EAAQye,EAAUhnB,GAAIuI,EAAOye,EAAUhnB,KA+yG7DinB,CAAkBvW,GAAgB7O,UAAW,CACzC,cACA,YACA,UACA,QACA,SACA,MACA,UACA,OACA,SACA,OACA,OACA,YACA,SACA,kBACA,OACA,MACA,MACA,QACA,UACA,UACA,OACA,SACA,OACA,WACA,mBAGJ,IAAI0jB,GAAU2B,GAA2B,GACzC,SAASA,GAA2B9L,GAChC,MAAO,CACHva,YAAY,EACZC,cAAc,EACdqM,IAAK,WACD,OAAOvK,KAAKuK,IAAIiO,IAEpB/N,IAAK,SAAUzM,GACXgC,KAAKyK,IAAI+N,EAAOxa,KAI5B,SAASumB,GAAsB/L,GAC3B1a,OAAOC,eAAe+P,GAAgB7O,UAAW,GAAKuZ,EAAO8L,GAA2B9L,IAE5F,SAASqF,GAAmBuE,GACxB,IAAK,IAAI5J,EAAQoI,GAA8BpI,EAAQ4J,EAAK5J,IACxD+L,GAAsB/L,GAC1BoI,GAA+BwB,EAEnCvE,GAAmB,KACnB,IAAI2G,GAAkC1e,EAA0B,gCAAiCib,IACjG,SAAS9T,GAAkB9G,GACvB,OAAOb,EAASa,IAAUqe,GAAgCre,EAAMuU,OAGpE,IAAI+J,GAAsB,GACtBzW,GAA+B,WAC/B,SAASA,EAAc0W,EAAa3Y,EAAUhG,GAO1C,QANiB,IAAbgG,IAAuBA,EAAWP,QACzB,IAATzF,IAAmBA,EAAO,iBAAmBrB,KACjD1E,KAAK+L,SAAWA,EAChB/L,KAAK+F,KAAOA,EACZ/F,KAAK0a,MAAQ+J,GACbzkB,KAAK2kB,UAAYzb,EAAWlJ,KAAK+F,KAAO,WACrB,mBAARM,IACP,MAAM,IAAIpB,MAAM,sGAEpBjF,KAAK4kB,MAAQ,IAAIve,IACjBrG,KAAK6kB,QAAU,IAAIxe,IACnBrG,KAAK8kB,MAAMJ,GAsWf,OApWA1W,EAAc/O,UAAU8lB,KAAO,SAAU5lB,GACrC,OAAOa,KAAK4kB,MAAMhG,IAAIzf,IAE1B6O,EAAc/O,UAAU2f,IAAM,SAAUzf,GACpC,IAAIoV,EAAQvU,KACZ,IAAK2E,GAAYgN,mBACb,OAAO3R,KAAK+kB,KAAK5lB,GACrB,IAAI6lB,EAAQhlB,KAAK6kB,QAAQta,IAAIpL,GAC7B,IAAK6lB,EAAO,CAER,IAAIC,EAAYD,EAAQ,IAAItX,GAAgB1N,KAAK+kB,KAAK5lB,GAAMyM,EAAmB5L,KAAK+F,KAAO,IAAMmf,GAAa/lB,GAAO,KAAK,GAC1Ha,KAAK6kB,QAAQpa,IAAItL,EAAK8lB,GACtBhd,GAAmBgd,GAAU,WAAc,OAAO1Q,EAAMsQ,QAAQM,OAAOhmB,MAE3E,OAAO6lB,EAAMza,OAEjByD,EAAc/O,UAAUwL,IAAM,SAAUtL,EAAKnB,GACzC,IAAIonB,EAASplB,KAAK+kB,KAAK5lB,GACvB,GAAI4V,GAAgB/U,MAAO,CACvB,IAAIgV,EAASC,GAAgBjV,KAAM,CAC/ByT,KAAM2R,EAAS,SAAW,MAC1Bzf,OAAQ3F,KACR6L,SAAU7N,EACV+H,KAAM5G,IAEV,IAAK6V,EACD,OAAOhV,KACXhC,EAAQgX,EAAOnJ,SAQnB,OANIuZ,EACAplB,KAAKqlB,aAAalmB,EAAKnB,GAGvBgC,KAAKslB,UAAUnmB,EAAKnB,GAEjBgC,MAEXgO,EAAc/O,UAAUkmB,OAAS,SAAUhmB,GACvC,IAAIoV,EAAQvU,KAEZ,IADAiR,GAAoCjR,KAAK2kB,WACrC5P,GAAgB/U,UACZgV,EAASC,GAAgBjV,KAAM,CAC/ByT,KAAM,SACN9N,OAAQ3F,KACR+F,KAAM5G,KAGN,OAAO,EAEf,GAAIa,KAAK+kB,KAAK5lB,GAAM,CAChB,IAAI+T,EAAYC,KACZkH,EAASnF,GAAalV,MACtBgV,EAASqF,GAAUnH,EACjB,CACEO,KAAM,SACN9N,OAAQ3F,KACRsN,SAAUtN,KAAK4kB,MAAMra,IAAIpL,GAAKnB,MAC9B+H,KAAM5G,GAER,KAcN,OAbI+T,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM/F,KAAK+F,KAAM5G,IAAKA,KAC1EwgB,IAAY,WACRpL,EAAMoQ,UAAUvc,gBAChBmM,EAAMgR,mBAAmBpmB,GAAK,GACboV,EAAMqQ,MAAMra,IAAIpL,GACtB2V,iBAAY1O,GACvBmO,EAAMqQ,MAAMO,OAAOhmB,MAEnBkb,GACAlF,GAAgBnV,KAAMgV,GACtB9B,GACAiB,MACG,EAEX,OAAO,GAEXnG,EAAc/O,UAAUsmB,mBAAqB,SAAUpmB,EAAKnB,GACxD,IAAIgnB,EAAQhlB,KAAK6kB,QAAQta,IAAIpL,GACzB6lB,GACAA,EAAMlQ,YAAY9W,IAG1BgQ,EAAc/O,UAAUomB,aAAe,SAAUlmB,EAAK0M,GAClD,IAAIvD,EAAatI,KAAK4kB,MAAMra,IAAIpL,GAEhC,IADA0M,EAAWvD,EAAWsM,gBAAgB/I,MACrBlH,GAAYkQ,UAAW,CACpC,IAAI3B,EAAYC,KACZkH,EAASnF,GAAalV,MACtBgV,EAASqF,GAAUnH,EACjB,CACEO,KAAM,SACN9N,OAAQ3F,KACRsN,SAAUhF,EAAWtK,MACrB+H,KAAM5G,EACN0M,SAAUA,GAEZ,KACFqH,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM/F,KAAK+F,KAAM5G,IAAKA,KAC1EmJ,EAAWwM,YAAYjJ,GACnBwO,GACAlF,GAAgBnV,KAAMgV,GACtB9B,GACAiB,OAGZnG,EAAc/O,UAAUqmB,UAAY,SAAUnmB,EAAK0M,GAC/C,IAAI0I,EAAQvU,KACZiR,GAAoCjR,KAAK2kB,WACzChF,IAAY,WACR,IAAIrX,EAAa,IAAIoF,GAAgB7B,EAAU0I,EAAMxI,SAAUwI,EAAMxO,KAAO,IAAMmf,GAAa/lB,IAAM,GACrGoV,EAAMqQ,MAAMna,IAAItL,EAAKmJ,GACrBuD,EAAWvD,EAAWtK,MACtBuW,EAAMgR,mBAAmBpmB,GAAK,GAC9BoV,EAAMoQ,UAAUvc,mBAEpB,IAAI8K,EAAYC,KACZkH,EAASnF,GAAalV,MACtBgV,EAASqF,GAAUnH,EACjB,CACEO,KAAM,MACN9N,OAAQ3F,KACR+F,KAAM5G,EACN0M,SAAUA,GAEZ,KACFqH,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM/F,KAAK+F,KAAM5G,IAAKA,KACtEkb,GACAlF,GAAgBnV,KAAMgV,GACtB9B,GACAiB,MAERnG,EAAc/O,UAAUsL,IAAM,SAAUpL,GACpC,OAAIa,KAAK4e,IAAIzf,GACFa,KAAK0U,aAAa1U,KAAK4kB,MAAMra,IAAIpL,GAAKoL,OAC1CvK,KAAK0U,kBAAatO,IAE7B4H,EAAc/O,UAAUyV,aAAe,SAAU1W,GAC7C,YAAsBoI,IAAlBpG,KAAK2U,SACE3U,KAAK2U,SAAS3W,GAElBA,GAEXgQ,EAAc/O,UAAUyP,KAAO,WAE3B,OADA1O,KAAK2kB,UAAUxc,iBACRnI,KAAK4kB,MAAMlW,QAEtBV,EAAc/O,UAAUgQ,OAAS,WAC7B,IAAIxK,EAAOzE,KACP0O,EAAO1O,KAAK0O,OAChB,OAAOvH,EAAa,CAChBlF,KAAM,WACF,IAAIwgB,EAAK/T,EAAKzM,OAAQG,EAAOqgB,EAAGrgB,KAAMpE,EAAQykB,EAAGzkB,MACjD,MAAO,CACHoE,KAAMA,EACNpE,MAAOoE,OAAOgE,EAAY3B,EAAK8F,IAAIvM,QAKnDgQ,EAAc/O,UAAUumB,QAAU,WAC9B,IAAI/gB,EAAOzE,KACP0O,EAAO1O,KAAK0O,OAChB,OAAOvH,EAAa,CAChBlF,KAAM,WACF,IAAIwgB,EAAK/T,EAAKzM,OAAQG,EAAOqgB,EAAGrgB,KAAMpE,EAAQykB,EAAGzkB,MACjD,MAAO,CACHoE,KAAMA,EACNpE,MAAOoE,OAAOgE,EAAY,CAACpI,EAAOyG,EAAK8F,IAAIvM,SAK3DgQ,EAAc/O,UAAU0P,QAAU,SAAU7H,EAAUtF,GAClD,IAAI+S,EAAQvU,KACZA,KAAK2kB,UAAUxc,iBACfnI,KAAK4kB,MAAMjW,SAAQ,SAAU/L,EAAGzD,GAAO,OAAO2H,EAASrJ,KAAK+D,EAAS+S,EAAMhK,IAAIpL,GAAMA,EAAKoV,OAG9FvG,EAAc/O,UAAU6lB,MAAQ,SAAUW,GACtC,IAAIlR,EAAQvU,KA2BZ,OA1BIkN,GAAgBuY,KAChBA,EAAQA,EAAM/F,QAElBC,IAAY,WACR,IAAIrN,EAAOsB,IAAuB,GAClC,IACQrO,EAAckgB,GACd3nB,OAAO4Q,KAAK+W,GAAO9W,SAAQ,SAAUxP,GAAO,OAAOoV,EAAM9J,IAAItL,EAAKsmB,EAAMtmB,OACnEN,MAAMC,QAAQ2mB,GACnBA,EAAM9W,SAAQ,SAAU8T,GACpB,IAAIiD,EAAKhiB,EAAO+e,EAAI,GAAItjB,EAAMumB,EAAG,GAAI1nB,EAAQ0nB,EAAG,GAChD,OAAOnR,EAAM9J,IAAItL,EAAKnB,MAErBkI,EAASuf,GACVA,EAAMxlB,cAAgBoG,IACtBxB,EAAK,yDAA2D4gB,EAAMxlB,YAAY8F,MAElF0f,EAAM9W,SAAQ,SAAU3Q,EAAOmB,GAAO,OAAOoV,EAAM9J,IAAItL,EAAKnB,MAE3DynB,MAAAA,GACL5gB,EAAK,8BAAgC4gB,GAE7C,QACIvR,GAAqB5B,OAGtBtS,MAEXgO,EAAc/O,UAAU2jB,MAAQ,WAC5B,IAAIrO,EAAQvU,KACZ2f,IAAY,WACRvN,IAAU,WAGNmC,EAAMqQ,MAAMjW,SAAQ,SAAU/L,EAAGzD,GAAO,OAAOoV,EAAM4Q,OAAOhmB,aAIxE6O,EAAc/O,UAAUka,QAAU,SAAUlK,GACxC,IAAIsF,EAAQvU,KA8EZ,OAvEA2f,IAAY,WAER,IAAIgG,EAjnHhB,SAAsBC,GAClB,GAAI1f,EAAS0f,IAAkB1Y,GAAgB0Y,GAC3C,OAAOA,EAEN,GAAI/mB,MAAMC,QAAQ8mB,GACnB,OAAO,IAAIvf,IAAIuf,GAEd,GAAIrgB,EAAcqgB,GAAgB,CACnC,IAAIja,EAAM,IAAItF,IACd,IAAK,IAAIlH,KAAOymB,EACZja,EAAIlB,IAAItL,EAAKymB,EAAczmB,IAE/B,OAAOwM,EAGP,OAAO9G,EAAK,+BAAiC+gB,EAAgB,KAkmHpCC,CAAa5W,GAC9B6W,EAAc,IAAIzf,IAElB0f,GAA0B,EA2C9B,GAvCAnf,EAAM2N,EAAMqQ,MAAMlW,QAAQ,SAAUvP,GAGhC,IAAKwmB,EAAe/G,IAAIzf,GAGpB,GAFcoV,EAAM4Q,OAAOhmB,GAIvB4mB,GAA0B,MAEzB,CAED,IAAI/nB,EAAQuW,EAAMqQ,MAAMra,IAAIpL,GAC5B2mB,EAAYrb,IAAItL,EAAKnB,OAKjC4I,EAAM+e,EAAeH,WAAW,SAAU/C,GACtC,IAAIiD,EAAKhiB,EAAO+e,EAAI,GAAItjB,EAAMumB,EAAG,GAAI1nB,EAAQ0nB,EAAG,GAE5CM,EAAazR,EAAMqQ,MAAMhG,IAAIzf,GAIjC,GAFAoV,EAAM9J,IAAItL,EAAKnB,GAEXuW,EAAMqQ,MAAMhG,IAAIzf,GAAM,CAItB,IAAI8mB,EAAU1R,EAAMqQ,MAAMra,IAAIpL,GAC9B2mB,EAAYrb,IAAItL,EAAK8mB,GAEhBD,IAEDD,GAA0B,QAKjCA,EACD,GAAIxR,EAAMqQ,MAAMsB,OAASJ,EAAYI,KAEjC3R,EAAMoQ,UAAUvc,qBAOhB,IAJA,IAAI+d,EAAQ5R,EAAMqQ,MAAMlW,OACpB0X,EAAQN,EAAYpX,OACpB2X,EAAQF,EAAMlkB,OACdqkB,EAAQF,EAAMnkB,QACVokB,EAAMjkB,MAAM,CAChB,GAAIikB,EAAMroB,QAAUsoB,EAAMtoB,MAAO,CAC7BuW,EAAMoQ,UAAUvc,gBAChB,MAEJie,EAAQF,EAAMlkB,OACdqkB,EAAQF,EAAMnkB,OAK1BsS,EAAMqQ,MAAQkB,KAEX9lB,MAEXlC,OAAOC,eAAeiQ,EAAc/O,UAAW,OAAQ,CACnDsL,IAAK,WAED,OADAvK,KAAK2kB,UAAUxc,iBACRnI,KAAK4kB,MAAMsB,MAEtBjoB,YAAY,EACZC,cAAc,IAOlB8P,EAAc/O,UAAUsnB,OAAS,WAC7B,IAAIhS,EAAQvU,KACR0G,EAAM,GAIV,OAHA1G,KAAK2O,SAAQ,SAAU/L,EAAGzD,GACtB,OAAQuH,EAAmB,iBAARvH,EAAmBA,EAAM+lB,GAAa/lB,IAAQoV,EAAMhK,IAAIpL,MAExEuH,GAMXsH,EAAc/O,UAAUygB,KAAO,WAC3B,OAAO,IAAIrZ,IAAIrG,OAEnBgO,EAAc/O,UAAU0W,OAAS,WAE7B,OAAO3V,KAAKumB,UAEhBvY,EAAc/O,UAAUD,SAAW,WAC/B,IAAIuV,EAAQvU,KACZ,OAAQA,KAAK+F,KACT,MACAS,EAAgBxG,KAAK0O,QAChB/C,KAAI,SAAUxM,GAAO,OAAO+lB,GAAa/lB,GAAO,KAAaoV,EAAMhK,IAAIpL,MACvEia,KAAK,MACV,OAORpL,EAAc/O,UAAUsW,QAAU,SAAUC,EAAUC,GAGlD,OAAOC,GAAiB1V,KAAMwV,IAElCxH,EAAc/O,UAAUmW,UAAY,SAAUC,GAC1C,OAAOC,GAAoBtV,KAAMqV,IAE9BrH,EAnXuB,GAqXlC,SAASkX,GAAa/lB,GAClB,OAAIA,GAAOA,EAAIH,SACJG,EAAIH,WAEJ,IAAIrB,OAAOwB,GAAKH,WAE/BgI,EAAgBgH,GAAc/O,WAAW,WACrC,OAAOe,KAAKwlB,aAEhB3f,EAAmBmI,GAAc/O,UAAWoI,IAAqB,OAEjE,IAAI6F,GAAkBpH,EAA0B,gBAAiBkI,IAE7DwY,GAAsB,GACtBtY,GAA+B,WAC/B,SAASA,EAAcwW,EAAa3Y,EAAUhG,GAO1C,QANiB,IAAbgG,IAAuBA,EAAWP,QACzB,IAATzF,IAAmBA,EAAO,iBAAmBrB,KACjD1E,KAAK+F,KAAOA,EACZ/F,KAAK0a,MAAQ8L,GACbxmB,KAAK4kB,MAAQ,IAAIre,IACjBvG,KAAKymB,MAAQvd,EAAWlJ,KAAK+F,MACV,mBAARQ,IACP,MAAM,IAAItB,MAAM,sGAEpBjF,KAAK+L,SAAW,SAAUmV,EAAMC,GAAQ,OAAOpV,EAASmV,EAAMC,EAAMpb,IAChE2e,GACA1kB,KAAKmZ,QAAQuL,GA6LrB,OA1LAxW,EAAcjP,UAAUyV,aAAe,SAAU1W,GAC7C,YAAsBoI,IAAlBpG,KAAK2U,SACE3U,KAAK2U,SAAS3W,GAElBA,GAEXkQ,EAAcjP,UAAU2jB,MAAQ,WAC5B,IAAIrO,EAAQvU,KACZ2f,IAAY,WACRvN,IAAU,WACNmC,EAAMqQ,MAAMjW,SAAQ,SAAU3Q,GAC1BuW,EAAM4Q,OAAOnnB,aAK7BkQ,EAAcjP,UAAU0P,QAAU,SAAU+X,EAAYllB,GACpD,IAAI+S,EAAQvU,KACZA,KAAKymB,MAAMte,iBACXnI,KAAK4kB,MAAMjW,SAAQ,SAAU3Q,GACzB0oB,EAAWjpB,KAAK+D,EAASxD,EAAOA,EAAOuW,OAG/CzW,OAAOC,eAAemQ,EAAcjP,UAAW,OAAQ,CACnDsL,IAAK,WAED,OADAvK,KAAKymB,MAAMte,iBACJnI,KAAK4kB,MAAMsB,MAEtBjoB,YAAY,EACZC,cAAc,IAElBgQ,EAAcjP,UAAUsf,IAAM,SAAUvgB,GACpC,IAAIuW,EAAQvU,KAEZ,IADAiR,GAAoCjR,KAAKymB,OACrC1R,GAAgB/U,UACZgV,EAASC,GAAgBjV,KAAM,CAC/ByT,KAAM,MACN9N,OAAQ3F,KACR6L,SAAU7N,KAGV,OAAOgC,KAIf,IAAKA,KAAK4e,IAAI5gB,GAAQ,CAClB2hB,IAAY,WACRpL,EAAMqQ,MAAMrG,IAAIhK,EAAMxI,SAAS/N,OAAOoI,IACtCmO,EAAMkS,MAAMre,mBAEhB,IAAI8K,EAAYC,KACZkH,EAASnF,GAAalV,MACtBgV,EAASqF,GAAUnH,EACjB,CACEO,KAAM,MACN9N,OAAQ3F,KACR6L,SAAU7N,GAEZ,KACFkV,EAEAmH,GACAlF,GAAgBnV,KAAMgV,GAI9B,OAAOhV,MAEXkO,EAAcjP,UAAUkmB,OAAS,SAAUnnB,GACvC,IAAIuW,EAAQvU,KACZ,GAAI+U,GAAgB/U,SACZgV,EAASC,GAAgBjV,KAAM,CAC/ByT,KAAM,SACN9N,OAAQ3F,KACRsN,SAAUtP,KAGV,OAAO,EAEf,GAAIgC,KAAK4e,IAAI5gB,GAAQ,CACjB,IAAIkV,EAAYC,KACZkH,EAASnF,GAAalV,MACtBgV,EAASqF,GAAUnH,EACjB,CACEO,KAAM,SACN9N,OAAQ3F,KACRsN,SAAUtP,GAEZ,KAWN,OARA2hB,IAAY,WACRpL,EAAMkS,MAAMre,gBACZmM,EAAMqQ,MAAMO,OAAOnnB,MAEnBqc,GACAlF,GAAgBnV,KAAMgV,IAGnB,EAEX,OAAO,GAEX9G,EAAcjP,UAAU2f,IAAM,SAAU5gB,GAEpC,OADAgC,KAAKymB,MAAMte,iBACJnI,KAAK4kB,MAAMhG,IAAI5e,KAAK0U,aAAa1W,KAE5CkQ,EAAcjP,UAAUumB,QAAU,WAC9B,IAAI1B,EAAY,EACZpV,EAAOlI,EAAgBxG,KAAK0O,QAC5BO,EAASzI,EAAgBxG,KAAKiP,UAClC,OAAO9H,EAAa,CAChBlF,KAAM,WACF,IAAIuW,EAAQsL,EAEZ,OADAA,GAAa,EACNtL,EAAQvJ,EAAOxQ,OAChB,CAAET,MAAO,CAAC0Q,EAAK8J,GAAQvJ,EAAOuJ,IAASpW,MAAM,GAC7C,CAAEA,MAAM,OAI1B8L,EAAcjP,UAAUyP,KAAO,WAC3B,OAAO1O,KAAKiP,UAEhBf,EAAcjP,UAAUgQ,OAAS,WAC7BjP,KAAKymB,MAAMte,iBACX,IAEIwe,EAFAliB,EAAOzE,KACP8jB,EAAY,EAUhB,YAR0B1d,IAAtBpG,KAAK4kB,MAAM3V,OACX0X,EAAmBngB,EAAgBxG,KAAK4kB,MAAM3V,WAI9C0X,EAAmB,GACnB3mB,KAAK4kB,MAAMjW,SAAQ,SAAUrR,GAAK,OAAOqpB,EAAiBrjB,KAAKhG,OAE5D6J,EAAa,CAChBlF,KAAM,WACF,OAAO6hB,EAAY6C,EAAiBloB,OAC9B,CAAET,MAAOyG,EAAKiQ,aAAaiS,EAAiB7C,MAAe1hB,MAAM,GACjE,CAAEA,MAAM,OAI1B8L,EAAcjP,UAAUka,QAAU,SAAUsM,GACxC,IAAIlR,EAAQvU,KAuBZ,OAtBImN,GAAgBsY,KAChBA,EAAQA,EAAM/F,QAElBC,IAAY,WACR,IAAIrN,EAAOsB,IAAuB,GAClC,IACQ/U,MAAMC,QAAQ2mB,IAITnf,EAASmf,IAHdlR,EAAMqO,QACN6C,EAAM9W,SAAQ,SAAU3Q,GAAS,OAAOuW,EAAMgK,IAAIvgB,OAM7CynB,MAAAA,GACL5gB,EAAK,8BAAgC4gB,GAG7C,QACIvR,GAAqB5B,OAGtBtS,MAEXkO,EAAcjP,UAAUsW,QAAU,SAAUC,EAAUC,GAIlD,OAAOC,GAAiB1V,KAAMwV,IAElCtH,EAAcjP,UAAUmW,UAAY,SAAUC,GAC1C,OAAOC,GAAoBtV,KAAMqV,IAErCnH,EAAcjP,UAAUygB,KAAO,WAC3B,OAAO,IAAInZ,IAAIvG,OAEnBkO,EAAcjP,UAAUD,SAAW,WAC/B,OAAOgB,KAAK+F,KAAO,KAAOS,EAAgBxG,KAAK0O,QAAQ0K,KAAK,MAAQ,MAEjElL,EA1MuB,GA4MlClH,EAAgBkH,GAAcjP,WAAW,WACrC,OAAOe,KAAKiP,YAEhBpJ,EAAmBqI,GAAcjP,UAAWoI,IAAqB,OACjE,IAAI8F,GAAkBrH,EAA0B,gBAAiBoI,IAE7D0Y,GAAgD,WAChD,SAASA,EAA+B/lB,EAAQkF,EAAMuY,GAClDte,KAAKa,OAASA,EACdb,KAAK+F,KAAOA,EACZ/F,KAAKse,gBAAkBA,EACvBte,KAAKiP,OAAS,GA0IlB,OAxIA2X,EAA+B3nB,UAAUqQ,KAAO,SAAUuX,EAAO1nB,GAC7D,GAA6Ca,KAAKa,SAAWgmB,IACzD7mB,KAAK8mB,cAAcD,EAAO1nB,GACrBa,KAAKiP,OAAO9P,IAGrB,OAAOa,KAAKiP,OAAO9P,GAAKoL,OAE5Bqc,EAA+B3nB,UAAUsQ,MAAQ,SAAUsX,EAAO1nB,EAAK0M,GACnE,IAAIgD,EAAW7O,KAAKa,OACyBgO,IAAagY,GACtD7mB,KAAK8mB,cAAcD,EAAO1nB,GAE9B,IAAImJ,EAAatI,KAAKiP,OAAO9P,GAC7B,GAAImJ,aAAsB4G,GACtB5G,EAAWmC,IAAIoB,OADnB,CAKA,GAAIkJ,GAAgB/U,MAAO,CAOvB,KANIgV,EAASC,GAAgBjV,KAAM,CAC/ByT,KAAM,SACN9N,OAAQkJ,EACR9I,KAAM5G,EACN0M,SAAUA,KAGV,OACJA,EAAWmJ,EAAOnJ,SAItB,IAFAA,EAAWvD,EAAWsM,gBAAgB/I,MAErBlH,GAAYkQ,UAAW,CACpC,IAAIwF,EAASnF,GAAalV,MACtBkT,EAAYC,KACZ6B,EAASqF,GAAUnH,EACjB,CACEO,KAAM,SACN9N,OAAQkJ,EACRvB,SAAUhF,EAAWtK,MACrB+H,KAAM5G,EACN0M,SAAUA,GAEZ,KACFqH,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM/F,KAAK+F,KAAM5G,IAAKA,KAC1EmJ,EAAWwM,YAAYjJ,GACnBwO,GACAlF,GAAgBnV,KAAMgV,GACtB9B,GACAiB,QAGZyS,EAA+B3nB,UAAUukB,OAAS,SAAUrkB,GACxD,GAAKa,KAAKiP,OAAO9P,GAAjB,CAEA,IAAI0B,EAASb,KAAKa,OAClB,GAAIkU,GAAgB/U,MAMhB,KALIgV,EAASC,GAAgBjV,KAAM,CAC/B2F,OAAQ9E,EACRkF,KAAM5G,EACNsU,KAAM,YAGN,OAER,IACIpL,KACA,IAAIgS,EAASnF,GAAalV,MACtBkT,EAAYC,KACZ7F,EAAWtN,KAAKiP,OAAO9P,GAAKoL,MAC5BvK,KAAK0O,MACL1O,KAAK0O,KAAK8U,OAAOrkB,UACda,KAAKiP,OAAO9P,UACZa,KAAKa,OAAO1B,GACnB,IAAI6V,EAASqF,GAAUnH,EACjB,CACEO,KAAM,SACN9N,OAAQ9E,EACRyM,SAAUA,EACVvH,KAAM5G,GAER,KACF+T,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM/F,KAAK+F,KAAM5G,IAAKA,KACtEkb,GACAlF,GAAgBnV,KAAMgV,GACtB9B,GACAiB,KAER,QACInL,QAGR4d,EAA+B3nB,UAAU6nB,cAAgB,SAAUD,EAAOjhB,GAoBtE8S,QAAQ4B,KAAK,aAAe1U,EAAW,SAAWihB,EAAQ,sIAO9DD,EAA+B3nB,UAAUsW,QAAU,SAAUzO,EAAU2O,GAGnE,OAAOC,GAAiB1V,KAAM8G,IAElC8f,EAA+B3nB,UAAUmW,UAAY,SAAUC,GAC3D,OAAOC,GAAoBtV,KAAMqV,IAErCuR,EAA+B3nB,UAAUmf,QAAU,WAC/C,IAAI7J,EAAQvU,KAIZ,YAHkBoG,IAAdpG,KAAK0O,OACL1O,KAAK0O,KAAO,IAAKZ,GAAgBhQ,OAAO4Q,KAAK1O,KAAKiP,QAAQ4M,QAAO,SAAU1c,GAAO,OAAOoV,EAAMtF,OAAO9P,aAAgBuO,MAAqB9B,EAAmB,QAAU5L,KAAK+F,KAAO,KAAK,IAEtL/F,KAAK0O,KAAKpD,SAEdsb,EA/IwC,GAiJnD,SAAS7X,GAAmBlO,EAAQkF,EAAMuY,QACzB,IAATvY,IAAmBA,EAAO,SACN,IAApBuY,IAA8BA,EAAkB9S,GACpD,IAAIsD,EAAMjO,EAAO6Z,MACjB,OAAI5L,IAICvJ,EAAc1E,KACfkF,GAAQlF,EAAOZ,YAAY8F,MAAQ,oBAAsB,IAAMrB,KAC9DqB,IACDA,EAAO,oBAAsBrB,KAEjCmB,EAAmBhF,EAAQ,QAD3BiO,EAAM,IAAI8X,GAA+B/lB,EAAQkF,EAAMuY,IAEhDxP,GAEX,SAAS3C,GAAyBtL,EAAQ+E,EAAUiG,EAAUE,GAC1D,IAAI+C,EAAMC,GAAmBlO,GAE7B,GAAIkU,GAAgBjG,GAAM,CACtB,IAAIkG,EAASC,GAAgBnG,EAAK,CAC9BnJ,OAAQ9E,EACRkF,KAAMH,EACN6N,KAAM,MACN5H,SAAUA,IAEd,IAAKmJ,EACD,OACJnJ,EAAWmJ,EAAOnJ,SAGtBA,GADkBiD,EAAIG,OAAOrJ,GAAY,IAAI8H,GAAgB7B,EAAUE,EAAU+C,EAAI/I,KAAO,IAAMH,GAAU,IACtF5H,MACtBF,OAAOC,eAAe8C,EAAQ+E,EAelC,SAAsCA,GAClC,OAAQmhB,GAA0BnhB,KAC7BmhB,GAA0BnhB,GAAY,CACnC1H,cAAc,EACdD,YAAY,EACZsM,IAAK,WACD,OAAOvK,KAAK0a,MAAMpL,KAAKtP,KAAM4F,IAEjC6E,IAAK,SAAUtH,GACXnD,KAAK0a,MAAMnL,MAAMvP,KAAM4F,EAAUzC,MAxBL6jB,CAA6BphB,IACjEkJ,EAAIJ,MACJI,EAAIJ,KAAKpL,KAAKsC,GAiDtB,SAAgCkJ,EAAKnJ,EAAQxG,EAAK0M,GAC9C,IAAIwO,EAASnF,GAAapG,GACtBoE,EAAYC,KACZ6B,EAASqF,GAAUnH,EACjB,CACEO,KAAM,MACN9N,OAAQA,EACRI,KAAM5G,EACN0M,SAAUA,GAEZ,KACFqH,GACAM,GAAerT,EAASA,EAAS,GAAI6U,GAAS,CAAEjP,KAAM+I,EAAI/I,KAAM5G,IAAKA,KACrEkb,GACAlF,GAAgBrG,EAAKkG,GACrB9B,GACAiB,KAhEJ8S,CAAuBnY,EAAKjO,EAAQ+E,EAAUiG,GAUlD,IAAIkb,GAA4BjpB,OAAOoC,OAAO,MAC1CiP,GAA0BrR,OAAOoC,OAAO,MAc5C,SAASmP,GAAsCwX,GAC3C,IAAI/X,EAAM+X,EAAMnM,MAChB,OAAK5L,IAGDtE,EAAmBqc,GACZA,EAAMnM,OAmCrB,IAAIwM,GAAmCphB,EAA0B,iCAAkC8gB,IACnG,SAAS5Z,GAAmB7G,GACxB,QAAIb,EAASa,KAETqE,EAAmBrE,GACZ+gB,GAAiC/gB,EAAMuU,QAKtD,SAAS1B,GAAQ7S,EAAO8S,GACpB,GAAqB,iBAAV9S,GAAgC,OAAVA,EAAgB,CAC7C,GAAI8G,GAAkB9G,GAIlB,YAHiBC,IAAb6S,GACApU,GAAK,GAEFsB,EAAMuU,MAAMpR,KAEvB,GAAI6D,GAAgBhH,GAChB,OAAOA,EAAMuU,MAEjB,GAAIxN,GAAgB/G,GAAQ,CACxB,IAAIghB,EAAWhhB,EACf,YAAiBC,IAAb6S,EACOkO,EAASxC,YAChBrc,EAAa6e,EAASvC,MAAMra,IAAI0O,IAAakO,EAAStC,QAAQta,IAAI0O,KAElEpU,GAAK,GAEFyD,GASP,IAAIA,EAHR,GAHAkC,EAAmBrE,GACf8S,IAAa9S,EAAMuU,OACnBvU,EAAM8S,GACNjM,GAAmB7G,GACnB,OAAK8S,IAED3Q,EAAanC,EAAMuU,MAAMzL,OAAOgK,KAEhCpU,GAAK,GAEFyD,GALIzD,GAAK,GAOpB,GAAIoE,EAAO9C,IAAUyK,GAAgBzK,IAAUmV,GAAWnV,GACtD,OAAOA,OAGV,GAAqB,mBAAVA,GACRmV,GAAWnV,EAAMuU,OAEjB,OAAOvU,EAAMuU,MAGrB,OAAO7V,GAAK,GAEhB,SAAS8Z,GAAkBxY,EAAO8S,GAG9B,OAFK9S,GACDtB,EAAK,8BACQuB,IAAb6S,EACO0F,GAAkB3F,GAAQ7S,EAAO8S,IACxChQ,EAAO9C,IAAUyK,GAAgBzK,IAAUmV,GAAWnV,IAEtD+G,GAAgB/G,IAAUgH,GAAgBhH,GADnCA,GAIXqE,EAAmBrE,GACfA,EAAMuU,MACCvU,EAAMuU,WACjB7V,GAAK,IAET,SAASuiB,GAAajhB,EAAO8S,GAQzB,YANiB7S,IAAb6S,EACQD,GAAQ7S,EAAO8S,GAClBjM,GAAmB7G,IAAU+G,GAAgB/G,IAAUgH,GAAgBhH,GACpEwY,GAAkBxY,GAElB6S,GAAQ7S,IACPJ,KAGjB,IAAI/G,GAAWlB,OAAOmB,UAAUD,SAChC,SAAS4K,GAAU5F,EAAGtE,EAAG4Z,GAErB,YADc,IAAVA,IAAoBA,GAAS,GAC1B+N,GAAGrjB,EAAGtE,EAAG4Z,GAIpB,SAAS+N,GAAGrjB,EAAGtE,EAAG4Z,EAAOgO,EAAQC,GAG7B,GAAIvjB,IAAMtE,EACN,OAAa,IAANsE,GAAW,EAAIA,GAAM,EAAItE,EAEpC,GAAS,MAALsE,GAAkB,MAALtE,EACb,OAAO,EAEX,GAAIsE,GAAMA,EACN,OAAOtE,GAAMA,EAEjB,IAAI+T,SAAczP,EAClB,GAAa,aAATyP,GAAgC,WAATA,GAAiC,iBAAL/T,EACnD,OAAO,EAEXsE,EAAIwjB,GAAOxjB,GACXtE,EAAI8nB,GAAO9nB,GAEX,IAAI+nB,EAAYzoB,GAASvB,KAAKuG,GAC9B,GAAIyjB,IAAczoB,GAASvB,KAAKiC,GAC5B,OAAO,EACX,OAAQ+nB,GAEJ,IAAK,kBAEL,IAAK,kBAGD,MAAO,GAAKzjB,GAAM,GAAKtE,EAC3B,IAAK,kBAGD,OAAKsE,IAAOA,GACAtE,IAAOA,EAEL,IAANsE,EAAU,GAAKA,GAAM,EAAItE,GAAKsE,IAAOtE,EACjD,IAAK,gBACL,IAAK,mBAID,OAAQsE,IAAOtE,EACnB,IAAK,kBACD,MAEkB,oBAAXnC,QAA0BA,OAAOqY,QAAQnY,KAAKuG,KAAOzG,OAAOqY,QAAQnY,KAAKiC,GAExF,IAAIgoB,EAA0B,mBAAdD,EAChB,IAAKC,EAAW,CACZ,GAAgB,iBAAL1jB,GAA6B,iBAALtE,EAC/B,OAAO,EAGX,IAAIioB,EAAQ3jB,EAAE/D,YAAa2nB,EAAQloB,EAAEO,YACrC,GAAI0nB,IAAUC,KACS,mBAAVD,GACLA,aAAiBA,GACA,mBAAVC,GACPA,aAAiBA,IACpB,gBAAiB5jB,GAAK,gBAAiBtE,EACxC,OAAO,EAGf,GAAc,IAAV4Z,EACA,OAAO,EAEFA,EAAQ,IACbA,GAAS,GAObiO,EAASA,GAAU,GAEnB,IADA,IAAI9oB,GAFJ6oB,EAASA,GAAU,IAEC7oB,OACbA,KAGH,GAAI6oB,EAAO7oB,KAAYuF,EACnB,OAAOujB,EAAO9oB,KAAYiB,EAMlC,GAHA4nB,EAAOhkB,KAAKU,GACZujB,EAAOjkB,KAAK5D,GAERgoB,EAAW,CAGX,IADAjpB,EAASuF,EAAEvF,UACIiB,EAAEjB,OACb,OAAO,EAEX,KAAOA,KACH,IAAK4oB,GAAGrjB,EAAEvF,GAASiB,EAAEjB,GAAS6a,EAAQ,EAAGgO,EAAQC,GAC7C,OAAO,MAGd,CAED,IAAI7Y,EAAO5Q,OAAO4Q,KAAK1K,GACnB7E,OAAM,EAGV,GAFAV,EAASiQ,EAAKjQ,OAEVX,OAAO4Q,KAAKhP,GAAGjB,SAAWA,EAC1B,OAAO,EACX,KAAOA,KAGH,IAAMopB,GAAMnoB,EADZP,EAAMuP,EAAKjQ,MACY4oB,GAAGrjB,EAAE7E,GAAMO,EAAEP,GAAMma,EAAQ,EAAGgO,EAAQC,GACzD,OAAO,EAMnB,OAFAD,EAAOjkB,MACPkkB,EAAOlkB,OACA,EAEX,SAASmkB,GAAOxjB,GACZ,OAAIiJ,GAAkBjJ,GACXA,EAAE2S,OACTzQ,EAASlC,IAAMkJ,GAAgBlJ,IAE/BsC,EAAStC,IAAMmJ,GAAgBnJ,GADxBwC,EAAgBxC,EAAEwhB,WAGtBxhB,EAEX,SAAS6jB,GAAM7jB,EAAG7E,GACd,OAAOrB,OAAOmB,UAAUZ,eAAeZ,KAAKuG,EAAG7E,GA4CnD,IAAIub,GAAQ,QACiC,iBAAlCoN,+BAEPA,8BAA8BC,WAAW,CACrCnM,IAAKA,GACLoM,OAAQ,CACJZ,aAAcA,IAElB1M,MAAOA,kGCphJf,SAASuN,EAAQtX,GAWf,OATEsX,EADoB,mBAAX1qB,QAAoD,iBAApBA,OAAO2F,SACtC,SAAUyN,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,mBAAXpT,QAAyBoT,EAAI1Q,cAAgB1C,QAAUoT,IAAQpT,OAAO0B,UAAY,gBAAkB0R,IAI9GA,GAGjB,SAASuX,EAAgBrZ,EAAUsZ,GACjC,KAAMtZ,aAAoBsZ,GACxB,MAAM,IAAIzqB,UAAU,qCAIxB,SAAS0qB,EAAkBvnB,EAAQsN,GACjC,IAAK,IAAI/Q,EAAI,EAAGA,EAAI+Q,EAAM1P,OAAQrB,IAAK,CACrC,IAAIyN,EAAasD,EAAM/Q,GACvByN,EAAW5M,WAAa4M,EAAW5M,aAAc,EACjD4M,EAAW3M,cAAe,EACtB,UAAW2M,IAAYA,EAAW1M,UAAW,GACjDL,OAAOC,eAAe8C,EAAQgK,EAAW1L,IAAK0L,IAIlD,SAASwd,EAAaF,EAAaG,EAAYC,GAG7C,OAFID,GAAYF,EAAkBD,EAAYlpB,UAAWqpB,GACrDC,GAAaH,EAAkBD,EAAaI,GACzCJ,EAGT,SAAStqB,EAAgB8S,EAAKxR,EAAKnB,GAYjC,OAXImB,KAAOwR,EACT7S,OAAOC,eAAe4S,EAAKxR,EAAK,CAC9BnB,MAAOA,EACPC,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZwS,EAAIxR,GAAOnB,EAGN2S,EAGT,SAAS6X,EAAUC,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIhrB,UAAU,sDAGtB+qB,EAASxpB,UAAYnB,OAAOoC,OAAOwoB,GAAcA,EAAWzpB,UAAW,CACrEgB,YAAa,CACXjC,MAAOyqB,EACPtqB,UAAU,EACVD,cAAc,KAGdwqB,GAAYC,EAAgBF,EAAUC,GAG5C,SAASE,EAAgBplB,GAIvB,OAHAolB,EAAkB9qB,OAAO6B,eAAiB7B,OAAO2H,eAAiB,SAAyBjC,GACzF,OAAOA,EAAE5D,WAAa9B,OAAO2H,eAAejC,KAEvBA,GAGzB,SAASmlB,EAAgBnlB,EAAG3D,GAM1B,OALA8oB,EAAkB7qB,OAAO6B,gBAAkB,SAAyB6D,EAAG3D,GAErE,OADA2D,EAAE5D,UAAYC,EACP2D,IAGcA,EAAG3D,GAW5B,SAASgpB,EAA2BpkB,EAAMhH,GACxC,OAAIA,GAAyB,iBAATA,GAAqC,mBAATA,EATlD,SAAgCgH,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIqkB,eAAe,6DAG3B,OAAOrkB,EAQAskB,CAAuBtkB,GAHrBhH,EAYX,SAASurB,EAAqBnW,EAAIxT,GACjC,OAAiCwT,EAA1BxT,EAAS,CAAEC,QAAS,IAAiBD,EAAOC,SAAUD,EAAOC,QAGrE,IARwB2G,EAQpBgjB,EAAyBD,GAAqB,SAAU3pB,EAAQC,GACpExB,OAAOC,eAAeuB,EAAQ,aAAa,CAACtB,OAAM,IAClD,IAAI0B,EAAE,mBAAoBnC,QAAQA,OAAO2rB,IAAInoB,EAAErB,EAAEnC,OAAO2rB,IAAI,iBAAiB,MAAMzpB,EAAEC,EAAEnC,OAAO2rB,IAAI,gBAAgB,MAAM5rB,EAAEoC,EAAEnC,OAAO2rB,IAAI,kBAAkB,MAAMzmB,EAAE/C,EAAEnC,OAAO2rB,IAAI,qBAAqB,MAAMvmB,EAAEjD,EAAEnC,OAAO2rB,IAAI,kBAAkB,MAAMC,EAAEzpB,EAAEnC,OAAO2rB,IAAI,kBAAkB,MAAMnlB,EAAErE,EAAEnC,OAAO2rB,IAAI,iBAAiB,MAAMxY,EAAEhR,EAAEnC,OAAO2rB,IAAI,oBAAoB,MAAMzlB,EAAE/D,EAAEnC,OAAO2rB,IAAI,yBAAyB,MAAM5oB,EAAEZ,EAAEnC,OAAO2rB,IAAI,qBAAqB,MAAMrpB,EAAEH,EAAEnC,OAAO2rB,IAAI,kBAAkB,MAAM7rB,EAAEqC,EAAEnC,OAAO2rB,IAAI,cACpf,MAAM/rB,EAAEuC,EAAEnC,OAAO2rB,IAAI,cAAc,MAAM,SAASE,EAAEplB,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIqlB,EAAErlB,EAAEslB,SAAS,OAAOD,GAAG,KAAKtoB,EAAE,OAAOiD,EAAEA,EAAEyP,MAAQ,KAAK/C,EAAE,KAAKjN,EAAE,KAAKnG,EAAE,KAAKqF,EAAE,KAAKF,EAAE,OAAOuB,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEslB,UAAY,KAAKvlB,EAAE,KAAKzD,EAAE,KAAK6oB,EAAE,OAAOnlB,EAAE,QAAQ,OAAOqlB,GAAG,KAAK5pB,EAAE,OAAO4pB,IAAI,SAASlmB,EAAEa,GAAG,OAAOolB,EAAEplB,KAAKP,EAAEnE,EAAQiqB,OAAOH,EAAE9pB,EAAQkqB,UAAU9Y,EAAEpR,EAAQmqB,eAAehmB,EAAEnE,EAAQoqB,gBAAgB3lB,EAAEzE,EAAQqqB,gBAAgBR,EAAE7pB,EAAQsqB,QAAQ7oB,EAAEzB,EAAQuqB,WAAWvpB,EAAEhB,EAAQwqB,SAASxsB,EACtegC,EAAQyqB,SAASpnB,EAAErD,EAAQ0qB,OAAOvqB,EAAEH,EAAQ2qB,WAAWxnB,EAAEnD,EAAQ4qB,mBAAmB,SAASlmB,GAAG,MAAO,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAI1G,GAAG0G,IAAIP,GAAGO,IAAIrB,GAAGqB,IAAIvB,GAAGuB,IAAInE,GAAG,iBAAkBmE,GAAG,OAAOA,IAAIA,EAAEslB,WAAWnsB,GAAG6G,EAAEslB,WAAWjsB,GAAG2G,EAAEslB,WAAWH,GAAGnlB,EAAEslB,WAAWvlB,GAAGC,EAAEslB,WAAWhpB,IAAIhB,EAAQ6qB,YAAY,SAASnmB,GAAG,OAAOb,EAAEa,IAAIolB,EAAEplB,KAAK0M,GAAGpR,EAAQ8qB,iBAAiBjnB,EAAE7D,EAAQ+qB,kBAAkB,SAASrmB,GAAG,OAAOolB,EAAEplB,KAAKD,GAAGzE,EAAQgrB,kBAAkB,SAAStmB,GAAG,OAAOolB,EAAEplB,KAAKmlB,GACpe7pB,EAAQirB,UAAU,SAASvmB,GAAG,MAAO,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEslB,WAAWvoB,GAAGzB,EAAQkrB,aAAa,SAASxmB,GAAG,OAAOolB,EAAEplB,KAAK1D,GAAGhB,EAAQmrB,WAAW,SAASzmB,GAAG,OAAOolB,EAAEplB,KAAK1G,GAAGgC,EAAQorB,WAAW,SAAS1mB,GAAG,OAAOolB,EAAEplB,KAAKrB,GAAGrD,EAAQqrB,SAAS,SAAS3mB,GAAG,OAAOolB,EAAEplB,KAAKvE,GAAGH,EAAQsrB,aAAa,SAAS5mB,GAAG,OAAOolB,EAAEplB,KAAKvB,OAb3SwD,EAgBVgjB,IAfDhjB,EAAE4kB,YAAc/sB,OAAOmB,UAAUZ,eAAeZ,KAAKwI,EAAG,YAAaA,EAAE1G,QAgBrD0pB,EAAuBM,OACvBN,EAAuBO,UACvBP,EAAuBQ,eACvBR,EAAuBS,gBACvBT,EAAuBU,gBACvBV,EAAuBW,QACvBX,EAAuBY,WACvBZ,EAAuBa,SACvBb,EAAuBc,SACtBd,EAAuBe,OACvBf,EAAuBgB,WACvBhB,EAAuBiB,mBACvBjB,EAAuBkB,YACvBlB,EAAuBmB,iBACvBnB,EAAuBoB,kBACvBpB,EAAuBqB,kBACvBrB,EAAuBsB,UACvBtB,EAAuBuB,aACvBvB,EAAuBwB,WACvBxB,EAAuByB,WACvBzB,EAAuB0B,SACvB1B,EAAuB2B,aArBvD,IAuBIE,EAAU9B,GAAqB,SAAU3pB,GAG3CA,EAAOC,QAAU2pB,KASf8B,EAAgB,CAChBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACRC,WAAW,EACXhY,MAAM,GAGNiY,EAAgB,CAChB3lB,MAAM,EACNtH,QAAQ,EACRQ,WAAW,EACX0sB,QAAQ,EACRC,QAAQ,EACRptB,WAAW,EACXqtB,OAAO,GAWPC,EAAe,GACnBA,EAAahB,EAAQjB,YATK,CACtB,UAAY,EACZkC,QAAQ,EACRZ,cAAc,EACdC,aAAa,EACbK,WAAW,GAMf,IAAI1tB,EAAiBD,OAAOC,eACxBggB,EAAsBjgB,OAAOigB,oBAC7Btd,EAAwB3C,OAAO2C,sBAC/BO,EAA2BlD,OAAOkD,yBAClCyE,EAAiB3H,OAAO2H,eACxBumB,EAAkBluB,OAAOmB,UAuC7B,IAAIgtB,EArCJ,SAASC,EAAqBC,EAAiBC,EAAiBC,GAC5D,GAA+B,iBAApBD,EAA8B,CAGrC,GAAIJ,EAAiB,CACjB,IAAIM,EAAqB7mB,EAAe2mB,GACpCE,GAAsBA,IAAuBN,GAC7CE,EAAqBC,EAAiBG,EAAoBD,GAIlE,IAAI3d,EAAOqP,EAAoBqO,GAE3B3rB,IACAiO,EAAOA,EAAKzE,OAAOxJ,EAAsB2rB,KAM7C,IAHA,IAAIG,EAAgBT,EAAaK,EAA0B,WAAMpB,EAC7DyB,EAAgBV,EAAaM,EAA0B,WAAMrB,EAExD3tB,EAAI,EAAGA,EAAIsR,EAAKjQ,SAAUrB,EAAG,CAClC,IAAI+B,EAAMuP,EAAKtR,GACf,KAAKsuB,EAAcvsB,IAAUktB,GAAaA,EAAUltB,IAAWqtB,GAAiBA,EAAcrtB,IAAWotB,GAAiBA,EAAcptB,IAAO,CAC3I,IAAI0L,EAAa7J,EAAyBorB,EAAiBjtB,GAC3D,IAEIpB,EAAeouB,EAAiBhtB,EAAK0L,GACvC,MAAOvN,MAIjB,OAAO6uB,EAGX,OAAOA,GAKPM,EAEJ,WACE,SAASA,IACPvE,EAAgBloB,KAAMysB,GAEtBzsB,KAAK0b,UAAY,GAwBnB,OArBA2M,EAAaoE,EAAc,CAAC,CAC1BttB,IAAK,KACLnB,MAAO,SAAYuf,GACjB,IAAIhJ,EAAQvU,KAGZ,OADAA,KAAK0b,UAAUpY,KAAKia,GACb,WACL,IAAI/E,EAAQjE,EAAMmH,UAAUlb,QAAQ+c,IAErB,IAAX/E,GAAcjE,EAAMmH,UAAUN,OAAO5C,EAAO,MAGnD,CACDrZ,IAAK,OACLnB,MAAO,SAAc0uB,GACnB1sB,KAAK0b,UAAU/M,SAAQ,SAAUkE,GAC/B,OAAOA,EAAG6Z,UAKTD,EA5BT,GA+BA,SAASE,EAA2BC,GAClC,SAASC,EAAUC,EAAY3e,EAAOvI,EAAUmnB,EAAeC,EAAUC,GACvE,IAAK,IAAIC,EAAO1uB,UAAUC,OAAQ0uB,EAAO,IAAItuB,MAAMquB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAAKC,EAAO,GAAK5uB,UAAU4uB,GAG7B,OAAO,SAAU,WAIf,GAHAL,EAAgBA,GAAiB,gBACjCE,EAAeA,GAAgBrnB,EAER,MAAnBuI,EAAMvI,GAAmB,CAC3B,GAAIknB,EAAY,CACd,IAAIO,EAA6B,OAApBlf,EAAMvI,GAAqB,OAAS,YACjD,OAAO,IAAIX,MAAM,OAAS+nB,EAAW,KAAOC,EAA3B,+BAAgFF,EAAgB,wBAA0BM,EAAS,MAGtJ,OAAO,KAEP,OAAOT,EAAS7tB,WAAM,EAAQ,CAACoP,EAAOvI,EAAUmnB,EAAeC,EAAUC,GAAchjB,OAAOkjB,OAKpG,IAAIG,EAAmBT,EAAUpS,KAAK,MAAM,GAE5C,OADA6S,EAAiBR,WAAaD,EAAUpS,KAAK,MAAM,GAC5C6S,EAwBT,SAASC,EAAYC,GACnB,IAAIC,EAAWxF,EAAQuF,GAEvB,OAAI3uB,MAAMC,QAAQ0uB,GACT,QAGLA,aAAqBE,OAIhB,SA/BX,SAAkBD,EAAUD,GAE1B,MAAiB,WAAbC,GAK+B,WAA/BD,EAAU,kBAKQ,mBAAXjwB,QAAyBiwB,aAAqBjwB,OAsBrDowB,CAASF,EAAUD,GACd,SAGFC,EAmBT,SAASG,EAAmCC,EAAiBC,GAC3D,OAAOnB,GAA2B,SAAUxe,EAAOvI,EAAUmnB,EAAeC,EAAUC,GACpF,OAAO,SAAU,WACf,GAAIY,GACEN,EAAYpf,EAAMvI,MAAekoB,EAASC,cAAe,OAAO,KAGtE,IAAIC,EAEJ,OAAQF,GACN,IAAK,QACHE,EAAc,KACd,MAEF,IAAK,SACHA,EAAc,KACd,MAEF,IAAK,MACHA,EAAc,KACd,MAEF,QACE,MAAM,IAAI/oB,MAAM,wBAAwBgF,OAAO6jB,IAGnD,IAAIN,EAAYrf,EAAMvI,GAEtB,IAAKooB,EAAYR,GAAY,CAC3B,IAAIS,EA3CZ,SAAwBT,GACtB,IAAIC,EAAWF,EAAYC,GAE3B,GAAiB,WAAbC,EAAuB,CACzB,GAAID,aAAqBna,KACvB,MAAO,OACF,GAAIma,aAAqBE,OAC9B,MAAO,SAIX,OAAOD,EAgCiBS,CAAeV,GAC7BW,EAA+BN,EAAkB,mBAAqBC,EAASC,cAAgB,IAAM,GACzG,OAAO,IAAI9oB,MAAM,iBAAmBgoB,EAAe,cAAgBgB,EAAlD,kBAAyFlB,EAAgB,+BAAiCe,EAAW,IAAMK,EAA+B,KAG7M,OAAO,WAKb,SAASC,EAAmCP,EAAiBQ,GAC3D,OAAO1B,GAA2B,SAAUxe,EAAOvI,EAAUmnB,EAAeC,EAAUC,GACpF,IAAK,IAAIqB,EAAQ9vB,UAAUC,OAAQ0uB,EAAO,IAAItuB,MAAMyvB,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGpB,EAAKoB,EAAQ,GAAK/vB,UAAU+vB,GAG9B,OAAO,SAAU,WACf,GAA2B,mBAAhBF,EACT,OAAO,IAAIppB,MAAM,aAAegoB,EAAe,mBAAqBF,EAAnD,oCAGnB,IAAInpB,EAAQgqB,EAAmCC,EAAiB,QAApDD,CAA6Dzf,EAAOvI,EAAUmnB,GAC1F,GAAInpB,aAAiBqB,MAAO,OAAOrB,EAGnC,IAFA,IAAI4pB,EAAYrf,EAAMvI,GAEbxI,EAAI,EAAGA,EAAIowB,EAAU/uB,OAAQrB,IAEpC,IADAwG,EAAQyqB,EAAYtvB,WAAM,EAAQ,CAACyuB,EAAWpwB,EAAG2vB,EAAeC,EAAUC,EAAe,IAAM7vB,EAAI,KAAK6M,OAAOkjB,eAC1FloB,MAAO,OAAOrB,EAGrC,OAAO,WAKSgqB,GAAmC,EAAO,SACxCQ,EAAmC3T,KAAK,MAAM,GAClDmT,GAAmC,EAAO,OACvCA,GAAmC,EAAO,UACpCA,GAAmC,EAAM,SACvCQ,EAAmC3T,KAAK,MAAM,GAL7E,IAMI+T,EAA2BZ,GAAmC,EAAM,UAiBxE,IAAIa,EAAW,EAYf,IAAIC,EAAiB,GACrB,SAASC,EAAU5oB,GAKjB,OAJK2oB,EAAe3oB,KAClB2oB,EAAe3oB,GAbnB,SAAsBA,GACpB,GAAsB,mBAAXxI,OACT,OAAOA,OAAOwI,GAGhB,IAAI6oB,EAAS,iBAAiB3kB,OAAOlE,EAAM,MAAMkE,OAAOwkB,EAAU,KAElE,OADAA,IACOG,EAMkBC,CAAa9oB,IAG/B2oB,EAAe3oB,GAExB,IAAI+oB,EAAaH,EAAU,eACvBI,EAAwBJ,EAAU,qBAEtC,SAASK,EAAUnuB,EAAQ4N,GACzB,IAAI+c,EAAS3qB,EAAOiuB,GAAcjuB,EAAOiuB,IAAe,GACpDG,EAAezD,EAAO/c,GAAc+c,EAAO/c,IAAe,GAG9D,OAFAwgB,EAAaC,MAAQD,EAAaC,OAAS,EAC3CD,EAAaE,QAAUF,EAAaE,SAAW,GACxCF,EAGT,SAASG,EAAQC,EAAY7D,GAG3B,IAFA,IAAIjX,EAAQvU,KAEHktB,EAAO1uB,UAAUC,OAAQ8M,EAAO,IAAI1M,MAAMquB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClG7hB,EAAK6hB,EAAO,GAAK5uB,UAAU4uB,GAI7B5B,EAAO0D,QAEP,IACE,IAAII,EAMJ,OAJID,MAAAA,IACFC,EAASD,EAAWtwB,MAAMiB,KAAMuL,IAG3B+jB,EACP,QACA9D,EAAO0D,QAEc,IAAjB1D,EAAO0D,OACT1D,EAAO2D,QAAQxgB,SAAQ,SAAU4gB,GAC/BA,EAAGxwB,MAAMwV,EAAOhJ,OAMxB,SAASikB,EAAaH,EAAY7D,GAShC,OARS,WACP,IAAK,IAAI8C,EAAQ9vB,UAAUC,OAAQ8M,EAAO,IAAI1M,MAAMyvB,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFhjB,EAAKgjB,GAAS/vB,UAAU+vB,GAG1Ba,EAAQ3xB,KAAKsB,MAAMqwB,EAAS,CAACpvB,KAAMqvB,EAAY7D,GAAQvhB,OAAOsB,KAMlE,SAASkkB,EAAM5uB,EAAQ4N,GAGrB,IAFA,IAAI+c,EAASwD,EAAUnuB,EAAQ4N,GAEtBihB,EAAQlxB,UAAUC,OAAQkxB,EAAe,IAAI9wB,MAAM6wB,EAAQ,EAAIA,EAAQ,EAAI,GAAIE,EAAQ,EAAGA,EAAQF,EAAOE,IAChHD,EAAaC,EAAQ,GAAKpxB,UAAUoxB,GAGtC,IAAK,IAAI/U,EAAK,EAAGA,EAAK8U,EAAalxB,OAAQoc,IAAM,CAC/C,IAAIgV,EAAcF,EAAa9U,GAE3B2Q,EAAO2D,QAAQ3uB,QAAQqvB,GAAe,GACxCrE,EAAO2D,QAAQ7rB,KAAKusB,GAIxB,IAAIC,EAAgBhyB,OAAOkD,yBAAyBH,EAAQ4N,GAE5D,IAAIqhB,IAAiBA,EAAcf,GAAnC,CAKA,IAAIgB,EAAiBlvB,EAAO4N,GACxBuhB,EAAgBC,EAAiBpvB,EAAQ4N,EAAYqhB,EAAgBA,EAAc7xB,gBAAamI,EAAWolB,EAAQuE,GACvHjyB,OAAOC,eAAe8C,EAAQ4N,EAAYuhB,IAG5C,SAASC,EAAiBpvB,EAAQ4N,EAAYxQ,EAAYutB,EAAQuE,GAChE,IAAIG,EAEAC,EAAcX,EAAaO,EAAgBvE,GAC/C,OAAkB3tB,EAAXqyB,EAAO,GAA0BnB,GAAuB,GAAOlxB,EAAgBqyB,EAAM,OAAO,WACjG,OAAOC,KACLtyB,EAAgBqyB,EAAM,OAAO,SAAalyB,GAC5C,GAAIgC,OAASa,EACXsvB,EAAcX,EAAaxxB,EAAOwtB,OAC7B,CAKL,IAAIwE,EAAgBC,EAAiBjwB,KAAMyO,EAAYxQ,EAAYutB,EAAQxtB,GAC3EF,OAAOC,eAAeiC,KAAMyO,EAAYuhB,OAExCnyB,EAAgBqyB,EAAM,gBAAgB,GAAOryB,EAAgBqyB,EAAM,aAAcjyB,GAAaiyB,EAGpG,IAAIE,EAAuB,CACzBC,WAAY7B,GAEd1wB,OAAOwyB,KAAKF,GACZ,IAAIG,EAAuB,CACzBrF,aAAc,CACZ3gB,IAAK,WACH,OAAO6lB,GAET3lB,IAAK,SAAa7H,GAChB8V,QAAQ4B,KAAK,0OAEfpc,cAAc,EACdD,YAAY,GAEduyB,eAAgB,CACdxyB,OAAO,EACPG,UAAU,EACVD,cAAc,EACdD,YAAY,IAQhB,SAASwyB,EAAoBC,EAAcC,EAAWC,GACpD,IAAIxF,EAAc,WAAauF,EAAUvF,aAAeuF,EAAU5qB,MAAQ4qB,EAAU1wB,aAAe0wB,EAAU1wB,YAAY8F,MAAQ,WAC7H6qB,IAAaxF,GAAe,SAAWwF,GAE3C,IAAIC,EAEJ,SAAUC,GAGR,SAASD,IACP,IAAIE,EAEAxc,EAEJ2T,EAAgBloB,KAAM6wB,GAEtB,IAAK,IAAI3D,EAAO1uB,UAAUC,OAAQ8M,EAAO,IAAI1M,MAAMquB,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/E7hB,EAAK6hB,GAAQ5uB,UAAU4uB,GASzB,OANA7Y,EAAQsU,EAA2B7oB,MAAO+wB,EAAmBnI,EAAgBiI,IAAWpzB,KAAKsB,MAAMgyB,EAAkB,CAAC/wB,MAAMiK,OAAOsB,MAE7HylB,SAAW,SAAUniB,GACzB0F,EAAM0c,gBAAkBpiB,GAGnB0F,EA+BT,OAlDAiU,EAAUqI,EAAUC,GAsBpBzI,EAAawI,EAAU,CAAC,CACtB1xB,IAAK,SACLnB,MAAO,WAIL,IAAIkzB,EAAW,GAEf,IAAK,IAAI/xB,KAAOa,KAAKmO,MACfnO,KAAKmO,MAAM9P,eAAec,KAC5B+xB,EAAS/xB,GAAOa,KAAKmO,MAAMhP,IAI/B,IAAIgyB,EAAkBT,EAAa1wB,KAAKgP,QAAQqhB,YAAc,GAAIa,EAAUlxB,KAAKgP,UAAY,GAE7F,IAAK,IAAIuf,KAAS4C,EAChBD,EAAS3C,GAAS4C,EAAgB5C,GAOpC,OA5MR,SAAqBoC,GAGnB,QAASA,EAAU1xB,WAAa0xB,EAAU1xB,UAAU8sB,QAqMzCqF,CAAYT,KACfO,EAAS5iB,IAAMtO,KAAKgxB,WAGf,IAAAK,eAAcV,EAAWO,OAI7BL,EAnDT,CAoDE,EAAAS,WAOF,OAJAT,EAASzF,YAAcA,EACvBa,EAAyB4E,EAAUF,GACnCE,EAASU,iBAAmBZ,EAC5B7yB,OAAO0zB,iBAAiBX,EAAUN,GAC3BM,EAGT,SAASY,EAAiBC,GACxB,OAAO,SAAUC,EAAYC,GAO3B,OANAF,EAAW/iB,SAAQ,SAAUkjB,GAC3B,KAAIA,KAAaD,GAAjB,CAEA,KAAMC,KAAaF,GAAa,MAAM,IAAI1sB,MAAM,yBAA2B4sB,EAAY,iEACvFD,EAAUC,GAAaF,EAAWE,OAE7BD,GAWX,SAASE,IAGP,IAAIpB,EAEJ,GAA4B,mBAAjBlyB,UAAU,GAEnB,OADAkyB,EAAelyB,UAAU,GAClB,SAAUuzB,GACf,IAAIC,EAAWvB,EAAoBC,EAAcqB,GAQjD,OAPAC,EAASxB,gBAAiB,GAI1BwB,EAAWC,GAASD,IACXxB,gBAAiB,EAEnBwB,GAKT,IAFA,IAAIN,EAAa,GAERt0B,EAAI,EAAGA,EAAIoB,UAAUC,OAAQrB,IACpCs0B,EAAWt0B,GAAKoB,UAAUpB,GAI5B,OADAszB,EAAee,EAAiBC,GACzB,SAAUK,GACf,OAAOtB,EAAoBC,EAAcqB,EAAgBL,EAAWtY,KAAK,OAK/E,IAAI8Y,EAAoB,MAAS,QAC7BC,EAAkBxD,EAAU,eAK5ByD,GAAoB,EACpBC,IAAyB,EACzBC,IAAuC,EAEvCC,GAA6C,oBAAZC,QAA0B,IAAIA,aAAYpsB,EAC3EqsB,GAAiB,IAAIhG,EACrBiG,GAAgB/D,EAAU,cAC1BgE,GAAqBhE,EAAU,mBAE/BiE,GAA8C,mBAAf,EAAAC,aAA6B,IAAAA,aAAW,SAAUC,EAAQ5C,OAAoB,SAQjH,SAAS6C,GAAclyB,EAAQwJ,EAAMrM,GAC9BF,OAAOO,eAAeZ,KAAKoD,EAAQwJ,GAQtCxJ,EAAOwJ,GAAQrM,EAPfF,OAAOC,eAAe8C,EAAQwJ,EAAM,CAClCpM,YAAY,EACZC,cAAc,EACdC,UAAU,EACVH,MAAOA,IAOb,SAASg1B,GAAcrC,GACrB,GAAI,EAAAsC,YACF,IACE,OAAO,IAAAA,aAAYtC,GACnB,MAAOrzB,GAIP,OAAO,KAIX,OAAO,KAGT,SAAS41B,GAAgBvC,GACvB,IAAIvY,EAAO4a,GAAcrC,GACrBvY,GAAQma,IAAyBA,GAAwB9nB,IAAI2N,EAAMuY,GACvE8B,GAAeU,KAAK,CAClB1X,MAAO,SACP2X,WAAYzC,EAAU0C,gBAAkB1C,EAAU2C,kBAClDC,UAAWlgB,KAAKC,MAAQqd,EAAU2C,kBAClC3C,UAAWA,EACXvY,KAAMA,IAeV,IAAIob,GAAiB,IAAI/G,EASzB,SAASgH,GAAaC,EAAMC,GAE1B,GAAIC,GAAGF,EAAMC,GAAO,OAAO,EAE3B,GAAsB,WAAlB1L,EAAQyL,IAA+B,OAATA,GAAmC,WAAlBzL,EAAQ0L,IAA+B,OAATA,EAC/E,OAAO,EAGT,IAAIE,EAAQ/1B,OAAO4Q,KAAKglB,GACpBI,EAAQh2B,OAAO4Q,KAAKilB,GACxB,GAAIE,EAAMp1B,SAAWq1B,EAAMr1B,OAAQ,OAAO,EAE1C,IAAK,IAAIrB,EAAI,EAAGA,EAAIy2B,EAAMp1B,OAAQrB,IAChC,IAAKiB,eAAeZ,KAAKk2B,EAAME,EAAMz2B,MAAQw2B,GAAGF,EAAKG,EAAMz2B,IAAKu2B,EAAKE,EAAMz2B,KACzE,OAAO,EAIX,OAAO,EAGT,SAASw2B,GAAG3tB,EAAGvD,GAEb,OAAIuD,IAAMvD,EACK,IAANuD,GAAW,EAAIA,GAAM,EAAIvD,EAEzBuD,GAAMA,GAAKvD,GAAMA,EAI5B,SAASqxB,GAAsBhI,GAC7B,IAAIiI,EAASh0B,KAEb,IAA+B,IAA3BqyB,GAAiC,OAAOtG,EAAOtuB,KAAKuC,MAExD,SAASi0B,IACP,IAAI1f,EAAQvU,KAEZk0B,GAAqB,EACrB,IAAIC,OAAY/tB,EACZguB,OAAYhuB,EAiBhB,GAhBAiW,EAASvF,OAAM,WACTsb,IACF7d,EAAM+e,kBAAoBjgB,KAAKC,OAGjC,IACE8gB,GAAY,SAAmB,EAAOC,GACtC,MAAO/2B,GACP62B,EAAY72B,EAGV80B,IACF7d,EAAM8e,gBAAkBhgB,KAAKC,UAI7B6gB,EAEF,MADAX,GAAeL,KAAKgB,GACdA,EAGR,OAAOC,EAIT,IAAIE,EAAct0B,KAAKorB,aAAeprB,KAAK+F,MAAQ/F,KAAKC,cAAgBD,KAAKC,YAAYmrB,aAAeprB,KAAKC,YAAY8F,OAAS,cAC9HwuB,EAAav0B,KAAKw0B,wBAA0Bx0B,KAAKw0B,uBAAuBC,aAAez0B,KAAKw0B,wBAA0Bx0B,KAAKw0B,uBAAuBE,UAAY10B,KAAK20B,qBAAuB30B,KAAK20B,oBAAoBD,SAMvN3B,GAAc/yB,KAAM0yB,IAAe,GAMnCK,GAAc/yB,KAAM2yB,IAAoB,GAExC,IAAI0B,EAAatI,EAAOtR,KAAKza,MACzBk0B,GAAqB,EACrB7X,EAAW,IAAI,KAAS,GAAGpS,OAAOqqB,EAAa,KAAKrqB,OAAOsqB,EAAY,cAAc,WACvF,IAAKL,IAIHA,GAAqB,EACoB,mBAA9BF,EAAOY,oBAAmCZ,EAAOY,sBAE5B,IAA5BZ,EAAO7B,IAA2B,CAIpC,IAAI0C,GAAW,EAEf,IACE9B,GAAciB,EAAQrB,IAAoB,GACrCqB,EAAOtB,KAAgB,EAAApB,UAAUryB,UAAU61B,YAAYr3B,KAAKu2B,GACjEa,GAAW,EACX,QACA9B,GAAciB,EAAQrB,IAAoB,GACtCkC,GAAUxY,EAAS9B,eAQ/B,OAHA8B,EAAS0Y,eAAiB/0B,KAC1Bi0B,EAAe/B,GAAqB7V,EACpCrc,KAAK+rB,OAASkI,EACPA,EAAex2B,KAAKuC,MAO7B,IAAIg1B,GAAgB,CAClBC,qBAAsB,WACpB,IAA+B,IAA3B5C,KACJryB,KAAK+rB,OAAOmG,IAAsBlyB,KAAK+rB,OAAOmG,GAAmB3X,UACjEva,KAAKmyB,IAAmB,EAEpBC,GAAmB,CACrB,IAAIha,EAAO4a,GAAchzB,MAErBoY,GAAQma,IACVA,GAAwBpN,OAAO/M,GAGjCqa,GAAeU,KAAK,CAClB1X,MAAO,UACPkV,UAAW3wB,KACXoY,KAAMA,MAIZ8c,kBAAmB,WACb9C,GACFc,GAAgBlzB,OAGpBm1B,mBAAoB,WACd/C,GACFc,GAAgBlzB,OAGpBo1B,sBAAuB,SAA+BxD,EAAWyD,GAM/D,OALIhD,IACF3Z,QAAQ4B,KAAK,mLAIXta,KAAKs1B,QAAUD,IAQX5B,GAAazzB,KAAKmO,MAAOyjB,KAIrC,SAAS2D,GAAmB10B,EAAQ+E,GAClC,IAAI4vB,EAAiB7G,EAAU,aAAa1kB,OAAOrE,EAAU,iBACzD6vB,EAAgB9G,EAAU,aAAa1kB,OAAOrE,EAAU,gBAE5D,SAASoT,IAKP,OAJKhZ,KAAKy1B,IACR1C,GAAc/yB,KAAMy1B,GAAe,QAAW,YAAc7vB,IAGvD5F,KAAKy1B,GAGd33B,OAAOC,eAAe8C,EAAQ+E,EAAU,CACtC1H,cAAc,EACdD,YAAY,EACZsM,IAAK,WAEH,OADAyO,EAAQvb,KAAKuC,MAAMmI,iBACZnI,KAAKw1B,IAEd/qB,IAAK,SAAatH,GACXnD,KAAK2yB,KAAwBc,GAAazzB,KAAKw1B,GAAiBryB,GAMnE4vB,GAAc/yB,KAAMw1B,EAAgBryB,IALpC4vB,GAAc/yB,KAAMw1B,EAAgBryB,GACpC4vB,GAAc/yB,KAAM0yB,IAAe,GACnC1Z,EAAQvb,KAAKuC,MAAMoI,gBACnB2qB,GAAc/yB,KAAM0yB,IAAe,OAY3C,SAAST,GAASriB,EAAMpB,GACtB,GAAoB,iBAAToB,EACT,MAAM,IAAI3K,MAAM,2CAGlB,GAAIpG,MAAMC,QAAQ8Q,GAQhB,OALK0iB,KACHA,IAAuC,EACvC5Z,QAAQ4B,KAAK,6PAGV9L,EAMIsjB,EAAO/yB,MAAM,KAAM6Q,EAAnBkiB,CAAyBG,GAASzjB,IAJlC,SAAUujB,GACf,OAAOE,GAASriB,EAAMmiB,IAO5B,IAAIA,EAAiBniB,EAarB,IAXsC,IAAlCmiB,EAAevB,gBACjB9X,QAAQ4B,KAAK,8IAGXyX,EAAenyB,YAAc,EAAA81B,eAC/Bhd,QAAQ4B,KAAK,wIAMXsY,IAAyBb,EAAyB,WAAMa,GAAuB,CACjF,IAAI+C,EAAc5D,EAAehG,OACjC,GAA2B,mBAAhB4J,EAA4B,MAAM,IAAI1wB,MAAM,oDAEvD,OAAO,IAAA4tB,aAAW,WAChB,IAAIpxB,EAAajD,UACjB,OAAO,kBAA6Bo3B,GAAU,MAAM,WAClD,OAAOD,EAAY52B,WAAMqH,EAAW3E,SAQ1C,KAA8B,mBAAnBswB,GAAmCA,EAAe9yB,WAAc8yB,EAAe9yB,UAAU8sB,QAAYgG,EAAe8D,cAAiB,EAAAvE,UAAUwE,cAAc/D,IAAiB,CACvL,IAAIgE,EAAQC,EAERC,EAAoBhE,IAAU+D,EAAQD,EAE1C,SAAUjF,GAGR,SAASiF,IAGP,OAFA7N,EAAgBloB,KAAM+1B,GAEflN,EAA2B7oB,KAAM4oB,EAAgBmN,GAAQh3B,MAAMiB,KAAMxB,YAU9E,OAfAgqB,EAAUuN,EAAQjF,GAQlBzI,EAAa0N,EAAQ,CAAC,CACpB52B,IAAK,SACLnB,MAAO,WACL,OAAO+zB,EAAet0B,KAAKuC,KAAMA,KAAKmO,MAAOnO,KAAKgP,aAI/C+mB,EAhBT,CAiBE,EAAAzE,WAAYyE,EAAO3K,YAAc2G,EAAe3G,aAAe2G,EAAehsB,KAAMgwB,EAAO7K,aAAe6G,EAAe7G,aAAc6K,EAAOtK,UAAYsG,EAAetG,UAAWsK,EAAO5K,aAAe4G,EAAe5G,aAAc6K,IAEzO,OADA/J,EAAyBgK,EAAmBlE,GACrCkE,EAGT,IAAKlE,EACH,MAAM,IAAI9sB,MAAM,+CAGlB,IAAIpE,EAASkxB,EAAe9yB,WAAa8yB,GAc3C,SAA8BlxB,GAC5B,CAAC,oBAAqB,uBAAwB,sBAAsB8N,SAAQ,SAAUoV,IA/SxF,SAAiBljB,EAAQkjB,GACvB0L,EAAM5uB,EAAQkjB,EAAUiR,GAAcjR,IA+SpCmS,CAAQr1B,EAAQkjB,MAGbljB,EAAOu0B,sBAGNv0B,EAAOu0B,wBAA0BJ,GAAcI,uBAEjD1c,QAAQ4B,KAAK,gNAJfzZ,EAAOu0B,sBAAwBJ,GAAcI,sBAnB/Ce,CAAqBt1B,GACrBkxB,EAAeqE,qBAAsB,EACrCb,GAAmB10B,EAAQ,SAC3B00B,GAAmB10B,EAAQ,SAC3B,IAAIwzB,EAAaxzB,EAAOkrB,OAMxB,OAJAlrB,EAAOkrB,OAAS,WACd,OAAOgI,GAAsBt2B,KAAKuC,KAAMq0B,IAGnCtC,EAkBT,IAAI6D,GAAW3D,IAAS,SAAUoE,GAChC,IAAIC,EAAWD,EAAMC,SACjBC,EAAiBF,EAAMvE,OACvB/F,EAASsK,EAAMtK,OACf4E,EAAY2F,GAAYvK,EAE5B,QAAyB,IAAd4E,EACT,OAAO,KAGT,IAAK4F,EACH,OAAO5F,IAITjY,QAAQ4B,KAAK,uGACb,IAAIkc,EAAkB1E,EAAOyE,EAAPzE,CAAuBnB,GAC7C,OAAO,kBAA6B6F,EAAiB,SAEvDZ,GAASxK,YAAc,WAEvB,IAAIqL,GAAqB,SAA4BtoB,EAAOhP,EAAK4tB,EAAeC,EAAUC,GACxF,IAAIyJ,EAAmB,aAARv3B,EAAqB,SAAW,WAE/C,MAA0B,mBAAfgP,EAAMhP,IAAkD,mBAApBgP,EAAMuoB,GAC5C,IAAIzxB,MAAM,mEAAqE8nB,GAG9D,mBAAf5e,EAAMhP,IAAkD,mBAApBgP,EAAMuoB,GAI9C,IAAIzxB,MAAM,iBAAmBgoB,EAAe,cAAgBhF,EAAQ9Z,EAAMhP,IAAhE,kBAAiG4tB,EAAgB,gCAJlI,GAmBF,SAAS4J,KAEP,IAAIrB,EAAQt1B,KAAKC,YAAYsrB,yBAAyBvrB,KAAKmO,MAAOnO,KAAKs1B,OACnEA,MAAAA,GACFt1B,KAAK42B,SAAStB,GAIlB,SAASuB,GAA0BjF,GAQjC5xB,KAAK42B,SALL,SAAiBE,GACf,IAAIxB,EAAQt1B,KAAKC,YAAYsrB,yBAAyBqG,EAAWkF,GACjE,OAAOxB,MAAAA,EAAwCA,EAAQ,MAGnC7a,KAAKza,OAG7B,SAAS+2B,GAAoBnF,EAAWyD,GACtC,IACE,IAAI2B,EAAYh3B,KAAKmO,MACjB2oB,EAAY92B,KAAKs1B,MACrBt1B,KAAKmO,MAAQyjB,EACb5xB,KAAKs1B,MAAQD,EACbr1B,KAAKi3B,6BAA8B,EACnCj3B,KAAKk3B,wBAA0Bl3B,KAAKm3B,wBAClCH,EACAF,GAEF,QACA92B,KAAKmO,MAAQ6oB,EACbh3B,KAAKs1B,MAAQwB,GA5CjBlB,GAASnK,UAAY,CACnBM,OAAQ0K,GACRH,SAAUG,IAgDZE,GAAmBS,8BAA+B,EAClDP,GAA0BO,8BAA+B,EACzDL,GAAoBK,8BAA+B,EA8GnD,IAAIC,GAAmB,CACrBf,UAAU,EACVn3B,KAAK,EACLmP,KAAK,GAGHgpB,GAEJ,SAAUxG,GAGR,SAASwG,EAASnpB,EAAOa,GACvB,IAAIuF,EAOJ,OALA2T,EAAgBloB,KAAMs3B,IAEtB/iB,EAAQsU,EAA2B7oB,KAAM4oB,EAAgB0O,GAAU75B,KAAKuC,KAAMmO,EAAOa,KAC/EsmB,MAAQ,GACdiC,GAAWppB,EAAOoG,EAAM+gB,OACjB/gB,EAkCT,OA5CAiU,EAAU8O,EAAUxG,GAapBzI,EAAaiP,EAAU,CAAC,CACtBn4B,IAAK,SACLnB,MAAO,WACL,OAAO,EAAAw5B,SAASC,KAAKz3B,KAAKmO,MAAMmoB,YAEjC,CACDn3B,IAAK,kBACLnB,MAAO,WACL,IAAI05B,EAAS,GAKb,OAHAH,GAAWv3B,KAAKgP,QAAQqhB,WAAYqH,GAEpCH,GAAWv3B,KAAKmO,MAAOupB,GAChB,CACLrH,WAAYqH,MAGd,CAAC,CACHv4B,IAAK,2BACLnB,MAAO,SAAkC4zB,EAAWkF,GAClD,IAAKlF,EAAW,OAAO,KACvB,IAAKkF,EAAW,OAAOlF,EAGvB,GADI9zB,OAAO4Q,KAAKkjB,GAAW/V,OAAO8b,IAAgBl5B,SAAWX,OAAO4Q,KAAKooB,GAAWjb,OAAO8b,IAAgBl5B,QAAQia,QAAQ4B,KAAK,0IAC3HsX,EAAUgG,4BAA6B,IAAK,IAAIz4B,KAAOyyB,EACtD+F,GAAex4B,IAAQ23B,EAAU33B,KAASyyB,EAAUzyB,IAAMuZ,QAAQ4B,KAAK,kCAAoCnb,EAAM,kGAEvH,OAAOyyB,MAIJ0F,EA7CT,CA8CE,EAAAhG,WASF,SAASiG,GAAWM,EAAMC,GACxB,GAAKD,EAEL,IAAK,IAAI14B,KAAO04B,EACVF,GAAex4B,KAAM24B,EAAG34B,GAAO04B,EAAK14B,IAI5C,SAASw4B,GAAex4B,GACtB,OAAQk4B,GAAiBl4B,IAAgB,gCAARA,EAhBnCm4B,GAASpM,aAAe,CACtBmF,WAAY7B,GAEd8I,GAAStM,kBAAoB,CAC3BqF,WAAY7B,EAAyB1B,YAxKvC,SAAkBiL,GAChB,IAAI94B,EAAY84B,EAAa94B,UAE7B,IAAKA,IAAcA,EAAU+4B,iBAC3B,MAAM,IAAI/yB,MAAM,sCAGlB,GACmD,mBAA1C8yB,EAAaxM,0BACyB,mBAAtCtsB,EAAUk4B,wBAEjB,OAAOY,EAMT,IAAIE,EAAqB,KACrBC,EAA4B,KAC5BC,EAAsB,KAgB1B,GAf4C,mBAAjCl5B,EAAU03B,mBACnBsB,EAAqB,qBACmC,mBAAxCh5B,EAAUm5B,4BAC1BH,EAAqB,6BAE4B,mBAAxCh5B,EAAU43B,0BACnBqB,EAA4B,4BACmC,mBAA/Cj5B,EAAUo5B,mCAC1BH,EAA4B,oCAEe,mBAAlCj5B,EAAU83B,oBACnBoB,EAAsB,sBACmC,mBAAzCl5B,EAAUq5B,6BAC1BH,EAAsB,8BAGC,OAAvBF,GAC8B,OAA9BC,GACwB,OAAxBC,EACA,CACA,IAAIpL,EAAgBgL,EAAa3M,aAAe2M,EAAahyB,KACzDwyB,EAC+C,mBAA1CR,EAAaxM,yBAChB,6BACA,4BAEN,MAAMtmB,MACJ,2FACE8nB,EACA,SACAwL,EACA,uDACwB,OAAvBN,EAA8B,OAASA,EAAqB,KAC9B,OAA9BC,EACG,OAASA,EACT,KACqB,OAAxBC,EAA+B,OAASA,EAAsB,IATjE,wIA0BJ,GARqD,mBAA1CJ,EAAaxM,2BACtBtsB,EAAU03B,mBAAqBA,GAC/B13B,EAAU43B,0BAA4BA,IAMS,mBAAtC53B,EAAUk4B,wBAAwC,CAC3D,GAA4C,mBAAjCl4B,EAAUk2B,mBACnB,MAAM,IAAIlwB,MACR,qHAIJhG,EAAU83B,oBAAsBA,GAEhC,IAAI5B,EAAqBl2B,EAAUk2B,mBAEnCl2B,EAAUk2B,mBAAqB,SAC7B6B,EACAF,EACA0B,GAUA,IAAIC,EAAWz4B,KAAKi3B,4BAChBj3B,KAAKk3B,wBACLsB,EAEJrD,EAAmB13B,KAAKuC,KAAMg3B,EAAWF,EAAW2B,KAmF1DC,CAASpB,IAEM3I,EAAU,oBAsDzB,IAAK,EAAA2C,UAAW,MAAM,IAAIrsB,MAAM,6CAChC,IAAK,KAAK,MAAM,IAAIA,MAAM,4CACa,mBAA5B,EAAA0zB,0BAAwC,QAAU,CAC3D3d,kBAAmB,EAAA2d,0BAMrB,GAAsH,YAAxE,oBAAlC7Q,8BAAgD,YAAcG,EAAQH,gCAA8C,CAC9H,IAAI8Q,GAAO,CACThd,IAAK,KACLoM,OAAQ,CACNZ,aAAc,OAGdyR,GAAY,CACdpG,eAAgBA,GAChBF,wBAAyBA,GACzBuG,yBAA0BvG,GAC1BwG,gBA1qBJ,WACE,GAAuB,oBAAZvG,QAAyB,MAAM,IAAIvtB,MAAM,sEAC/CmtB,IAAmBA,GAAoB,KA2qB5CtK,8BAA8BkR,gBAAgBH,GAAWD,6BCv7C3Dt5B,EAAQ25B,OAkCR,SAAgBC,GACd,MAAMC,EAASr7B,OAAOmB,UAAUD,SAASvB,KAAKy7B,GAG9C,OACEA,aAAoB7lB,MACC,iBAAb6lB,GAAoC,kBAAXC,EAG1B,IAAID,EAASj5B,aAAai5B,GAEb,iBAAbA,GACI,oBAAXC,GACoB,iBAAbD,GACI,oBAAXC,EAGO,IAAI9lB,KAAK6lB,GAGT,IAAI7lB,KAAK+lB,wBCvDpB,IAAIC,EAAU,EAAQ,KAgCtBh6B,EAAOC,QALP,SAAaqG,EAAQ2zB,EAAMC,GACzB,IAAIp3B,EAAmB,MAAVwD,OAAiBS,EAAYizB,EAAQ1zB,EAAQ2zB,GAC1D,YAAkBlzB,IAAXjE,EAAuBo3B,EAAep3B,kCC5B/C7C,EAAQk6B,YAAS,EACjB,IAAIC,EAAU,EAAQ,MAyBtBn6B,EAAQk6B,OAvBR,MACE,IAAIE,EAAYC,EAAOC,EAAO/sB,GAC5B,MAAM1K,EAASnC,KAAK65B,MAAMH,EAAYC,EAAOC,EAAO/sB,GACpD,OAAK1K,EAIE,CACL8T,OAAQ,IAAIwjB,EAAQK,YAClB33B,EAAOnE,MACPgC,KAAK4sB,SACL5sB,KAAKyK,IACLzK,KAAK+5B,SACL/5B,KAAKg6B,aAEP7M,KAAMhrB,EAAOgrB,MAXN,KAeX,SAAS8M,EAAUC,EAAQC,GACzB,OAAO,+BCvBX76B,EAAQ86B,qBAgIR,SAA8BC,GAC5B,OAAQA,GACN,IAAK,UACH,OAAO,EACT,IAAK,UACH,OAAO,GACT,IAAK,KACL,IAAK,OACL,IAAK,YACH,OAAO,GACT,IAAK,KACL,IAAK,WACL,IAAK,QACL,QACE,OAAO,IA7Ib/6B,EAAQg7B,gBAsKR,SAAyBC,GACvB,OAAOA,EAAO,KAAQ,GAAMA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAtK/Dj7B,EAAQk7B,SAWR,SAAkBC,EAAeC,GAC/B,IAAKD,EACH,OAAOA,EAGT,MAAO,CACLz8B,MAAO08B,EAAMD,EAAcz8B,OAC3BmvB,KAAMsN,EAActN,OAjBxB7tB,EAAQq7B,sBA+IR,SAA+BC,EAAcC,GAC3C,MAAMC,EAAcD,EAAc,EAK5BE,EAAiBD,EAAcD,EAAc,EAAIA,EAEvD,IAAI14B,EACJ,GAAI44B,GAAkB,GACpB54B,EAASy4B,GAAgB,QACpB,CACL,MAAMI,EAAWD,EAAiB,GAC5BE,EAA+C,IAA7B9Y,KAAK+Y,MAAMF,EAAW,KAE9C74B,EAASy4B,EAAeK,GADEL,GAAgBI,EAAW,IACU,IAAM,GAGvE,OAAOF,EAAc34B,EAAS,EAAIA,GAhKpC7C,EAAQ67B,qBA+DR,SAA8BzB,GAC5B,OAAO0B,EACLC,EAAWC,gBAAgBC,gBAC3B7B,IAjEJp6B,EAAQk8B,aAqER,SAAsBl7B,EAAGo5B,GACvB,OAAQp5B,GACN,KAAK,EACH,OAAO86B,EACLC,EAAWC,gBAAgBG,YAC3B/B,GAEJ,KAAK,EACH,OAAO0B,EACLC,EAAWC,gBAAgBI,UAC3BhC,GAEJ,KAAK,EACH,OAAO0B,EACLC,EAAWC,gBAAgBK,YAC3BjC,GAEJ,KAAK,EACH,OAAO0B,EACLC,EAAWC,gBAAgBM,WAC3BlC,GAEJ,QACE,OAAO0B,EAAoB,IAAI1N,OAAO,UAAYptB,EAAI,KAAMo5B,KA3FlEp6B,EAAQu8B,mBA+FR,SAA4Bv7B,EAAGo5B,GAC7B,OAAQp5B,GACN,KAAK,EACH,OAAO86B,EACLC,EAAWC,gBAAgBQ,kBAC3BpC,GAEJ,KAAK,EACH,OAAO0B,EACLC,EAAWC,gBAAgBS,gBAC3BrC,GAEJ,KAAK,EACH,OAAO0B,EACLC,EAAWC,gBAAgBU,kBAC3BtC,GAEJ,KAAK,EACH,OAAO0B,EACLC,EAAWC,gBAAgBW,iBAC3BvC,GAEJ,QACE,OAAO0B,EAAoB,IAAI1N,OAAO,YAAcptB,EAAI,KAAMo5B,KArHpEp6B,EAAQ87B,oBAAsBA,EAC9B97B,EAAQ48B,qBA6BR,SAA8BC,EAASzC,GACrC,MAAM0C,EAAc1C,EAAWE,MAAMuC,GAErC,IAAKC,EACH,OAAO,KAIT,GAAuB,MAAnBA,EAAY,GACd,MAAO,CACLp+B,MAAO,EACPmvB,KAAMuM,EAAWpuB,MAAM,IAI3B,MAAM+wB,EAA0B,MAAnBD,EAAY,GAAa,GAAK,EACrCE,EAAQF,EAAY,GAAK5d,SAAS4d,EAAY,GAAI,IAAM,EACxDG,EAAUH,EAAY,GAAK5d,SAAS4d,EAAY,GAAI,IAAM,EAC1DI,EAAUJ,EAAY,GAAK5d,SAAS4d,EAAY,GAAI,IAAM,EAEhE,MAAO,CACLp+B,MACEq+B,GACCC,EAAQG,EAAOC,mBACdH,EAAUE,EAAOE,qBACjBH,EAAUC,EAAOG,sBACrBzP,KAAMuM,EAAWpuB,MAAM8wB,EAAY,GAAG39B,UAtD1C,IAAIg+B,EAAS,EAAQ,KAEjBpB,EAAa,EAAQ,IAazB,SAASD,EAAoBe,EAASzC,GACpC,MAAM0C,EAAc1C,EAAWE,MAAMuC,GAErC,OAAKC,EAIE,CACLp+B,MAAOwgB,SAAS4d,EAAY,GAAI,IAChCjP,KAAMuM,EAAWpuB,MAAM8wB,EAAY,GAAG39B,SAL/B,8DC5BX,SAASo+B,EAAyBv/B,EAAGH,GACnC,GAAI,MAAQG,EAAG,MAAO,GACtB,IAAIkG,EACFnG,EACAD,GAAI,OAA6BE,EAAGH,GACtC,GAAIW,OAAO2C,sBAAuB,CAChC,IAAIJ,EAAIvC,OAAO2C,sBAAsBnD,GACrC,IAAKD,EAAI,EAAGA,EAAIgD,EAAE5B,OAAQpB,IAAKmG,EAAInD,EAAEhD,GAAIF,EAAE+B,SAASsE,IAAM,GAAG9C,qBAAqBjD,KAAKH,EAAGkG,KAAOpG,EAAEoG,GAAKlG,EAAEkG,IAE5G,OAAOpG,0BCVT,IAAIF,EAAgB,EAAQ,KAS5BmC,EAAOC,QARP,SAAyBhC,EAAGD,EAAGF,GAC7B,OAAQE,EAAIH,EAAcG,MAAOC,EAAIQ,OAAOC,eAAeT,EAAGD,EAAG,CAC/DW,MAAOb,EACPc,YAAY,EACZC,cAAc,EACdC,UAAU,IACPb,EAAED,GAAKF,EAAGG,GAEiB+B,EAAOC,QAAQurB,YAAa,EAAMxrB,EAAOC,QAAiB,QAAID,EAAOC,8BCRvGA,EAAQw9B,cAgCR,SAAuBC,EAAM/+B,GAC3B,OAAI++B,aAAgB1pB,KACX,IAAI0pB,EAAK98B,YAAYjC,GAErB,IAAIqV,KAAKrV,qCCpCpBsB,EAAQ09B,iBAAmB19B,EAAQg8B,qBAAkB,EAC5Bh8B,EAAQg8B,gBAAkB,CACjD2B,MAAO,iBACPF,KAAM,qBACNG,UAAW,kCACXC,KAAM,qBACNC,QAAS,qBACTC,QAAS,qBACTC,QAAS,iBACTC,QAAS,iBACTC,OAAQ,YACRC,OAAQ,YAERhC,YAAa,MACbC,UAAW,WACXC,YAAa,WACbC,WAAY,WAEZL,gBAAiB,SACjBO,kBAAmB,QACnBC,gBAAiB,aACjBC,kBAAmB,aACnBC,iBAAkB,cAGM38B,EAAQ09B,iBAAmB,CACnDU,qBAAsB,2BACtBC,MAAO,0BACPC,qBAAsB,oCACtBC,SAAU,2BACVC,wBAAyB,8CCR3B,IAAIh/B,EAAUD,MAAMC,QAEpBO,EAAOC,QAAUR,0BCvBjB,IAAI2b,EAAO,EAAQ,KAIfzb,EAAWlB,OAAOmB,UAAUD,SAQhC,SAASF,EAAQi/B,GACf,MAA8B,mBAAvB/+B,EAASvB,KAAKsgC,GASvB,SAASC,EAAYD,GACnB,YAAsB,IAARA,EA4EhB,SAASz4B,EAASy4B,GAChB,OAAe,OAARA,GAA+B,iBAARA,EAShC,SAASx4B,EAAcw4B,GACrB,GAA2B,oBAAvB/+B,EAASvB,KAAKsgC,GAChB,OAAO,EAGT,IAAI9+B,EAAYnB,OAAO2H,eAAes4B,GACtC,OAAqB,OAAd9+B,GAAsBA,IAAcnB,OAAOmB,UAuCpD,SAASg/B,EAAWF,GAClB,MAA8B,sBAAvB/+B,EAASvB,KAAKsgC,GAwEvB,SAASpvB,EAAQgC,EAAKkC,GAEpB,GAAIlC,MAAAA,EAUJ,GALmB,iBAARA,IAETA,EAAM,CAACA,IAGL7R,EAAQ6R,GAEV,IAAK,IAAIvT,EAAI,EAAGsT,EAAIC,EAAIlS,OAAQrB,EAAIsT,EAAGtT,IACrCyV,EAAGpV,KAAK,KAAMkT,EAAIvT,GAAIA,EAAGuT,QAI3B,IAAK,IAAIxR,KAAOwR,EACV7S,OAAOmB,UAAUZ,eAAeZ,KAAKkT,EAAKxR,IAC5C0T,EAAGpV,KAAK,KAAMkT,EAAIxR,GAAMA,EAAKwR,GA2ErCtR,EAAOC,QAAU,CACfR,QAASA,EACTo/B,cA1RF,SAAuBH,GACrB,MAA8B,yBAAvB/+B,EAASvB,KAAKsgC,IA0RrBI,SAtSF,SAAkBJ,GAChB,OAAe,OAARA,IAAiBC,EAAYD,IAA4B,OAApBA,EAAI99B,cAAyB+9B,EAAYD,EAAI99B,cAChD,mBAA7B89B,EAAI99B,YAAYk+B,UAA2BJ,EAAI99B,YAAYk+B,SAASJ,IAqShFK,WAlRF,SAAoBL,GAClB,MAA4B,oBAAbM,UAA8BN,aAAeM,UAkR5DC,kBAzQF,SAA2BP,GAOzB,MAL4B,oBAAhBQ,aAAiCA,YAAkB,OACpDA,YAAYC,OAAOT,GAEnB,GAAUA,EAAU,QAAMA,EAAIU,kBAAkBF,aAqQ3DG,SA1PF,SAAkBX,GAChB,MAAsB,iBAARA,GA0PdY,SAjPF,SAAkBZ,GAChB,MAAsB,iBAARA,GAiPdz4B,SAAUA,EACVC,cAAeA,EACfy4B,YAAaA,EACbY,OAlNF,SAAgBb,GACd,MAA8B,kBAAvB/+B,EAASvB,KAAKsgC,IAkNrBc,OAzMF,SAAgBd,GACd,MAA8B,kBAAvB/+B,EAASvB,KAAKsgC,IAyMrBe,OAhMF,SAAgBf,GACd,MAA8B,kBAAvB/+B,EAASvB,KAAKsgC,IAgMrBE,WAAYA,EACZc,SA9KF,SAAkBhB,GAChB,OAAOz4B,EAASy4B,IAAQE,EAAWF,EAAIiB,OA8KvCC,kBArKF,SAA2BlB,GACzB,MAAkC,oBAApBmB,iBAAmCnB,aAAemB,iBAqKhEC,qBAzIF,WACE,OAAyB,oBAAdC,WAAoD,gBAAtBA,UAAUC,SACY,iBAAtBD,UAAUC,SACY,OAAtBD,UAAUC,WAI/B,oBAAX76B,QACa,oBAAb86B,WAkIT3wB,QAASA,EACTmW,MAvEF,SAASA,IACP,IAAI3iB,EAAS,GACb,SAASo9B,EAAYxB,EAAK5+B,GACpBoG,EAAcpD,EAAOhD,KAASoG,EAAcw4B,GAC9C57B,EAAOhD,GAAO2lB,EAAM3iB,EAAOhD,GAAM4+B,GACxBx4B,EAAcw4B,GACvB57B,EAAOhD,GAAO2lB,EAAM,GAAIiZ,GACfj/B,EAAQi/B,GACjB57B,EAAOhD,GAAO4+B,EAAIzyB,QAElBnJ,EAAOhD,GAAO4+B,EAIlB,IAAK,IAAI3gC,EAAI,EAAGsT,EAAIlS,UAAUC,OAAQrB,EAAIsT,EAAGtT,IAC3CuR,EAAQnQ,UAAUpB,GAAImiC,GAExB,OAAOp9B,GAuDPq9B,OA5CF,SAAgBx7B,EAAGtE,EAAG8B,GAQpB,OAPAmN,EAAQjP,GAAG,SAAqBq+B,EAAK5+B,GAEjC6E,EAAE7E,GADAqC,GAA0B,mBAARu8B,EACXtjB,EAAKsjB,EAAKv8B,GAEVu8B,KAGN/5B,GAqCPy7B,KAhKF,SAAcC,GACZ,OAAOA,EAAID,KAAOC,EAAID,OAASC,EAAIvmB,QAAQ,aAAc,KAgKzDwmB,SA7BF,SAAkBC,GAIhB,OAH8B,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQt0B,MAAM,IAEnBs0B,YCpSTvgC,EAAOC,QALP,SAAkBtB,GAChB,IAAIyV,SAAczV,EAClB,OAAgB,MAATA,IAA0B,UAARyV,GAA4B,YAARA,eC3B/C,IAAInO,EAAW,EAAQ,IACnBgO,EAAM,EAAQ,KACdwsB,EAAW,EAAQ,KAMnBC,EAAY5d,KAAKC,IACjB4d,EAAY7d,KAAKE,IAqLrBhjB,EAAOC,QA7HP,SAAkB6F,EAAM86B,EAAMpzB,GAC5B,IAAIqzB,EACAC,EACAC,EACAj+B,EACAk+B,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARv7B,EACT,MAAM,IAAIzH,UAzEQ,uBAmFpB,SAASijC,EAAWvsB,GAClB,IAAI7I,EAAO20B,EACP1+B,EAAU2+B,EAKd,OAHAD,EAAWC,OAAW/5B,EACtBm6B,EAAiBnsB,EACjBjS,EAASgD,EAAKpG,MAAMyC,EAAS+J,GAI/B,SAASq1B,EAAYxsB,GAMnB,OAJAmsB,EAAiBnsB,EAEjBisB,EAAUloB,WAAW0oB,EAAcZ,GAE5BO,EAAUG,EAAWvsB,GAAQjS,EAatC,SAAS2+B,EAAa1sB,GACpB,IAAI2sB,EAAoB3sB,EAAOksB,EAM/B,YAAyBl6B,IAAjBk6B,GAA+BS,GAAqBd,GACzDc,EAAoB,GAAON,GANJrsB,EAAOmsB,GAM8BH,EAGjE,SAASS,IACP,IAAIzsB,EAAOd,IACX,GAAIwtB,EAAa1sB,GACf,OAAO4sB,EAAa5sB,GAGtBisB,EAAUloB,WAAW0oB,EA3BvB,SAAuBzsB,GACrB,IAEI6sB,EAAchB,GAFM7rB,EAAOksB,GAI/B,OAAOG,EACHT,EAAUiB,EAAab,GAJDhsB,EAAOmsB,IAK7BU,EAoB+BC,CAAc9sB,IAGnD,SAAS4sB,EAAa5sB,GAKpB,OAJAisB,OAAUj6B,EAINs6B,GAAYR,EACPS,EAAWvsB,IAEpB8rB,EAAWC,OAAW/5B,EACfjE,GAeT,SAASg/B,IACP,IAAI/sB,EAAOd,IACP8tB,EAAaN,EAAa1sB,GAM9B,GAJA8rB,EAAW1hC,UACX2hC,EAAWngC,KACXsgC,EAAelsB,EAEXgtB,EAAY,CACd,QAAgBh7B,IAAZi6B,EACF,OAAOO,EAAYN,GAErB,GAAIG,EAIF,OAFAtgB,aAAakgB,GACbA,EAAUloB,WAAW0oB,EAAcZ,GAC5BU,EAAWL,GAMtB,YAHgBl6B,IAAZi6B,IACFA,EAAUloB,WAAW0oB,EAAcZ,IAE9B99B,EAIT,OA3GA89B,EAAOH,EAASG,IAAS,EACrB36B,EAASuH,KACX2zB,IAAY3zB,EAAQ2zB,QAEpBJ,GADAK,EAAS,YAAa5zB,GACHkzB,EAAUD,EAASjzB,EAAQuzB,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAc7zB,IAAYA,EAAQ6zB,SAAWA,GAoG1DS,EAAU/gB,OApCV,gBACkBha,IAAZi6B,GACFlgB,aAAakgB,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUj6B,GAgCjD+6B,EAAUE,MA7BV,WACE,YAAmBj7B,IAAZi6B,EAAwBl+B,EAAS6+B,EAAa1tB,MA6BhD6tB,kBC3LT,IAAIG,EAAa,EAAQ,KAGrBC,EAA0B,iBAAR98B,MAAoBA,MAAQA,KAAK3G,SAAWA,QAAU2G,KAGxE+8B,EAAOF,GAAcC,GAAYroB,SAAS,cAATA,GAErC7Z,EAAOC,QAAUkiC,6BCoBjBniC,EAAOC,QAJP,SAAsBtB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,mBCR/BqB,EAAOC,QAAU,EAAQ,IAAR,uBCjBnB,IAAImiC,EAAe,EAAQ,KACvBC,EAAW,EAAQ,KAevBriC,EAAOC,QALP,SAAmBqG,EAAQxG,GACzB,IAAInB,EAAQ0jC,EAAS/7B,EAAQxG,GAC7B,OAAOsiC,EAAazjC,GAASA,OAAQoI,kCCbvC,IAAI7I,EAAS,EAAQ,KACjBokC,EAAY,EAAQ,KACpBC,EAAiB,EAAQ,KAOzBC,EAAiBtkC,EAASA,EAAO+J,iBAAclB,EAkBnD/G,EAAOC,QATP,SAAoBtB,GAClB,OAAa,MAATA,OACeoI,IAAVpI,EAdQ,qBADL,gBAiBJ6jC,GAAkBA,KAAkB/jC,OAAOE,GAC/C2jC,EAAU3jC,GACV4jC,EAAe5jC,eCxBrB,IAGIT,EAHO,EAAQ,IAGDA,OAElB8B,EAAOC,QAAU/B,OCJjB,IAGIukC,EAAW,mBAoBfziC,EAAOC,QAVP,SAAiBtB,EAAOS,GACtB,IAAIgV,SAAczV,EAGlB,SAFAS,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAARgV,GACU,UAARA,GAAoBquB,EAASC,KAAK/jC,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQS,cCrBjD,IAAIw/B,EAAa,EAAQ,KACrB+D,EAAW,EAAQ,KA+BvB3iC,EAAOC,QAJP,SAAqBtB,GACnB,OAAgB,MAATA,GAAiBgkC,EAAShkC,EAAMS,UAAYw/B,EAAWjgC,gBC7BhE,IAAI2vB,EAAW,EAAQ,KAoBvBtuB,EAAOC,QARP,SAAetB,GACb,GAAoB,iBAATA,GAAqB2vB,EAAS3vB,GACvC,OAAOA,EAET,IAAImE,EAAUnE,EAAQ,GACtB,MAAkB,KAAVmE,GAAkB,EAAInE,IAdjB,SAcwC,KAAOmE,2BCf9D,IAAIiE,EAEA67B,EAAS,EAAQ,KACjBC,EAAa,EAAQ,KACrBC,EAAc,EAAQ,KACtBC,EAAkB,EAAQ,KAC1BC,EAAe,EAAQ,KACvBC,EAAa,EAAQ,KACrBC,EAAY,EAAQ,KAEpBC,EAAYtpB,SAGZupB,EAAwB,SAAUC,GACrC,IACC,OAAOF,EAAU,yBAA2BE,EAAmB,iBAAxDF,GACN,MAAOllC,MAGNqlC,EAAQ7kC,OAAOkD,yBACnB,GAAI2hC,EACH,IACCA,EAAM,GAAI,IACT,MAAOrlC,GACRqlC,EAAQ,KAIV,IAAIC,EAAiB,WACpB,MAAM,IAAIN,GAEPO,EAAiBF,EACjB,WACF,IAGC,OAAOC,EACN,MAAOE,GACR,IAEC,OAAOH,EAAMnkC,UAAW,UAAU+L,IACjC,MAAOw4B,GACR,OAAOH,IAVR,GAcAA,EAECI,EAAa,EAAQ,IAAR,GACbC,EAAW,EAAQ,IAAR,GAEXC,EAAWplC,OAAO2H,iBACrBw9B,EACG,SAAUh9B,GAAK,OAAOA,EAAErG,WACxB,MAGAujC,EAAY,GAEZC,EAAmC,oBAAfC,YAA+BH,EAAuBA,EAASG,YAArBj9B,EAE9Dk9B,EAAa,CAChB1jC,UAAW,KACX,mBAA8C,oBAAnB2jC,eAAiCn9B,EAAYm9B,eACxE,UAAW1kC,MACX,gBAAwC,oBAAhB0/B,YAA8Bn4B,EAAYm4B,YAClE,2BAA4ByE,GAAcE,EAAWA,EAAS,GAAG3lC,OAAO2F,aAAekD,EACvF,mCAAoCA,EACpC,kBAAmB+8B,EACnB,mBAAoBA,EACpB,2BAA4BA,EAC5B,2BAA4BA,EAC5B,YAAgC,oBAAZK,QAA0Bp9B,EAAYo9B,QAC1D,WAA8B,oBAAXC,OAAyBr9B,EAAYq9B,OACxD,kBAA4C,oBAAlBC,cAAgCt9B,EAAYs9B,cACtE,mBAA8C,oBAAnBC,eAAiCv9B,EAAYu9B,eACxE,YAAaC,QACb,aAAkC,oBAAbC,SAA2Bz9B,EAAYy9B,SAC5D,SAAUxwB,KACV,cAAeywB,UACf,uBAAwBC,mBACxB,cAAeC,UACf,uBAAwBC,mBACxB,UAAWhC,EACX,SAAUiC,KACV,cAAehC,EACf,iBAA0C,oBAAjBiC,aAA+B/9B,EAAY+9B,aACpE,iBAA0C,oBAAjBC,aAA+Bh+B,EAAYg+B,aACpE,yBAA0D,oBAAzBC,qBAAuCj+B,EAAYi+B,qBACpF,aAAc7B,EACd,sBAAuBW,EACvB,cAAoC,oBAAdmB,UAA4Bl+B,EAAYk+B,UAC9D,eAAsC,oBAAfC,WAA6Bn+B,EAAYm+B,WAChE,eAAsC,oBAAfC,WAA6Bp+B,EAAYo+B,WAChE,aAAcC,SACd,UAAW56B,MACX,sBAAuBm5B,GAAcE,EAAWA,EAASA,EAAS,GAAG3lC,OAAO2F,cAAgBkD,EAC5F,SAA0B,iBAATs+B,KAAoBA,KAAOt+B,EAC5C,QAAwB,oBAARC,IAAsBD,EAAYC,IAClD,yBAAyC,oBAARA,KAAwB28B,GAAeE,EAAuBA,GAAS,IAAI78B,KAAM9I,OAAO2F,aAAtCkD,EACnF,SAAU+b,KACV,WAAYvkB,OACZ,WAAYE,OACZ,eAAgB6mC,WAChB,aAAcnmB,SACd,YAAgC,oBAAZ5c,QAA0BwE,EAAYxE,QAC1D,UAA4B,oBAAVgjC,MAAwBx+B,EAAYw+B,MACtD,eAAgBzC,EAChB,mBAAoBC,EACpB,YAAgC,oBAAZnhC,QAA0BmF,EAAYnF,QAC1D,WAAYysB,OACZ,QAAwB,oBAARnnB,IAAsBH,EAAYG,IAClD,yBAAyC,oBAARA,KAAwBy8B,GAAeE,EAAuBA,GAAS,IAAI38B,KAAMhJ,OAAO2F,aAAtCkD,EACnF,sBAAoD,oBAAtBy+B,kBAAoCz+B,EAAYy+B,kBAC9E,WAAYlnC,OACZ,4BAA6BqlC,GAAcE,EAAWA,EAAS,GAAG3lC,OAAO2F,aAAekD,EACxF,WAAY48B,EAAazlC,OAAS6I,EAClC,gBAAiBi8B,EACjB,mBAAoBQ,EACpB,eAAgBO,EAChB,cAAed,EACf,eAAsC,oBAAfe,WAA6Bj9B,EAAYi9B,WAChE,sBAAoD,oBAAtByB,kBAAoC1+B,EAAY0+B,kBAC9E,gBAAwC,oBAAhBC,YAA8B3+B,EAAY2+B,YAClE,gBAAwC,oBAAhBC,YAA8B5+B,EAAY4+B,YAClE,aAAczC,EACd,YAAgC,oBAAZ/P,QAA0BpsB,EAAYosB,QAC1D,YAAgC,oBAAZyS,QAA0B7+B,EAAY6+B,QAC1D,YAAgC,oBAAZC,QAA0B9+B,EAAY8+B,SAG3D,GAAIhC,EACH,IACC,KAAKt/B,MACJ,MAAOtG,GAER,IAAI6nC,EAAajC,EAASA,EAAS5lC,IACnCgmC,EAAW,qBAAuB6B,EAIpC,IAAIC,EAAS,SAASA,EAAOr/B,GAC5B,IAAI/H,EACJ,GAAa,oBAAT+H,EACH/H,EAAQykC,EAAsB,6BACxB,GAAa,wBAAT18B,EACV/H,EAAQykC,EAAsB,wBACxB,GAAa,6BAAT18B,EACV/H,EAAQykC,EAAsB,8BACxB,GAAa,qBAAT18B,EAA6B,CACvC,IAAI8M,EAAKuyB,EAAO,4BACZvyB,IACH7U,EAAQ6U,EAAG5T,gBAEN,GAAa,6BAAT8G,EAAqC,CAC/C,IAAIs/B,EAAMD,EAAO,oBACbC,GAAOnC,IACVllC,EAAQklC,EAASmC,EAAIpmC,YAMvB,OAFAqkC,EAAWv9B,GAAQ/H,EAEZA,GAGJsnC,EAAiB,CACpB1lC,UAAW,KACX,yBAA0B,CAAC,cAAe,aAC1C,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,QAAS,YAAa,WAC/C,uBAAwB,CAAC,QAAS,YAAa,WAC/C,oBAAqB,CAAC,QAAS,YAAa,QAC5C,sBAAuB,CAAC,QAAS,YAAa,UAC9C,2BAA4B,CAAC,gBAAiB,aAC9C,mBAAoB,CAAC,yBAA0B,aAC/C,4BAA6B,CAAC,yBAA0B,YAAa,aACrE,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,WAAY,aACpC,kBAAmB,CAAC,OAAQ,aAC5B,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,YAAa,aACtC,0BAA2B,CAAC,eAAgB,aAC5C,0BAA2B,CAAC,eAAgB,aAC5C,sBAAuB,CAAC,WAAY,aACpC,cAAe,CAAC,oBAAqB,aACrC,uBAAwB,CAAC,oBAAqB,YAAa,aAC3D,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,wBAAyB,CAAC,aAAc,aACxC,cAAe,CAAC,OAAQ,SACxB,kBAAmB,CAAC,OAAQ,aAC5B,iBAAkB,CAAC,MAAO,aAC1B,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,sBAAuB,CAAC,SAAU,YAAa,YAC/C,qBAAsB,CAAC,SAAU,YAAa,WAC9C,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,UAAW,YAAa,QAChD,gBAAiB,CAAC,UAAW,OAC7B,mBAAoB,CAAC,UAAW,UAChC,oBAAqB,CAAC,UAAW,WACjC,wBAAyB,CAAC,aAAc,aACxC,4BAA6B,CAAC,iBAAkB,aAChD,oBAAqB,CAAC,SAAU,aAChC,iBAAkB,CAAC,MAAO,aAC1B,+BAAgC,CAAC,oBAAqB,aACtD,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,yBAA0B,CAAC,cAAe,aAC1C,wBAAyB,CAAC,aAAc,aACxC,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,+BAAgC,CAAC,oBAAqB,aACtD,yBAA0B,CAAC,cAAe,aAC1C,yBAA0B,CAAC,cAAe,aAC1C,sBAAuB,CAAC,WAAY,aACpC,qBAAsB,CAAC,UAAW,aAClC,qBAAsB,CAAC,UAAW,cAG/B6a,EAAO,EAAQ,KACfrc,EAAS,EAAQ,KACjBmnC,EAAU9qB,EAAKhd,KAAKyb,SAASzb,KAAMoB,MAAMI,UAAUgL,QACnDu7B,EAAe/qB,EAAKhd,KAAKyb,SAASna,MAAOF,MAAMI,UAAUmc,QACzDqqB,EAAWhrB,EAAKhd,KAAKyb,SAASzb,KAAME,OAAOsB,UAAUka,SACrDusB,EAAYjrB,EAAKhd,KAAKyb,SAASzb,KAAME,OAAOsB,UAAUqM,OACtDq6B,EAAQlrB,EAAKhd,KAAKyb,SAASzb,KAAMiwB,OAAOzuB,UAAU2mC,MAGlDC,EAAa,qGACbC,EAAe,WACfC,EAAe,SAAsBC,GACxC,IAAIC,EAAQP,EAAUM,EAAQ,EAAG,GAC7BE,EAAOR,EAAUM,GAAS,GAC9B,GAAc,MAAVC,GAA0B,MAATC,EACpB,MAAM,IAAI7D,EAAa,kDACjB,GAAa,MAAT6D,GAA0B,MAAVD,EAC1B,MAAM,IAAI5D,EAAa,kDAExB,IAAIlgC,EAAS,GAIb,OAHAsjC,EAASO,EAAQH,GAAY,SAAUjM,EAAOuM,EAAQC,EAAOC,GAC5DlkC,EAAOA,EAAO1D,QAAU2nC,EAAQX,EAASY,EAAWP,EAAc,MAAQK,GAAUvM,KAE9Ez3B,GAIJmkC,EAAmB,SAA0BvgC,EAAMwgC,GACtD,IACIC,EADAC,EAAgB1gC,EAOpB,GALI3H,EAAOknC,EAAgBmB,KAE1BA,EAAgB,KADhBD,EAAQlB,EAAemB,IACK,GAAK,KAG9BroC,EAAOklC,EAAYmD,GAAgB,CACtC,IAAIzoC,EAAQslC,EAAWmD,GAIvB,GAHIzoC,IAAUmlC,IACbnlC,EAAQonC,EAAOqB,SAEK,IAAVzoC,IAA0BuoC,EACpC,MAAM,IAAIjE,EAAW,aAAev8B,EAAO,wDAG5C,MAAO,CACNygC,MAAOA,EACPzgC,KAAM0gC,EACNzoC,MAAOA,GAIT,MAAM,IAAIqkC,EAAa,aAAet8B,EAAO,qBAG9C1G,EAAOC,QAAU,SAAsByG,EAAMwgC,GAC5C,GAAoB,iBAATxgC,GAAqC,IAAhBA,EAAKtH,OACpC,MAAM,IAAI6jC,EAAW,6CAEtB,GAAI9jC,UAAUC,OAAS,GAA6B,kBAAjB8nC,EAClC,MAAM,IAAIjE,EAAW,6CAGtB,GAAmC,OAA/BqD,EAAM,cAAe5/B,GACxB,MAAM,IAAIs8B,EAAa,sFAExB,IAAIqE,EAAQX,EAAahgC,GACrB4gC,EAAoBD,EAAMjoC,OAAS,EAAIioC,EAAM,GAAK,GAElDE,EAAYN,EAAiB,IAAMK,EAAoB,IAAKJ,GAC5DM,EAAoBD,EAAU7gC,KAC9B/H,EAAQ4oC,EAAU5oC,MAClB8oC,GAAqB,EAErBN,EAAQI,EAAUJ,MAClBA,IACHG,EAAoBH,EAAM,GAC1BhB,EAAakB,EAAOnB,EAAQ,CAAC,EAAG,GAAIiB,KAGrC,IAAK,IAAIppC,EAAI,EAAG2pC,GAAQ,EAAM3pC,EAAIspC,EAAMjoC,OAAQrB,GAAK,EAAG,CACvD,IAAI4pC,EAAON,EAAMtpC,GACb6oC,EAAQP,EAAUsB,EAAM,EAAG,GAC3Bd,EAAOR,EAAUsB,GAAO,GAC5B,IAEa,MAAVf,GAA2B,MAAVA,GAA2B,MAAVA,GACtB,MAATC,GAAyB,MAATA,GAAyB,MAATA,IAElCD,IAAUC,EAEb,MAAM,IAAI7D,EAAa,wDASxB,GAPa,gBAAT2E,GAA2BD,IAC9BD,GAAqB,GAMlB1oC,EAAOklC,EAFXuD,EAAoB,KADpBF,GAAqB,IAAMK,GACmB,KAG7ChpC,EAAQslC,EAAWuD,QACb,GAAa,MAAT7oC,EAAe,CACzB,KAAMgpC,KAAQhpC,GAAQ,CACrB,IAAKuoC,EACJ,MAAM,IAAIjE,EAAW,sBAAwBv8B,EAAO,+CAErD,OAED,GAAI48B,GAAUvlC,EAAI,GAAMspC,EAAMjoC,OAAQ,CACrC,IAAIqC,EAAO6hC,EAAM3kC,EAAOgpC,GAWvBhpC,GAVD+oC,IAAUjmC,IASG,QAASA,KAAU,kBAAmBA,EAAKyJ,KAC/CzJ,EAAKyJ,IAELvM,EAAMgpC,QAGfD,EAAQ3oC,EAAOJ,EAAOgpC,GACtBhpC,EAAQA,EAAMgpC,GAGXD,IAAUD,IACbxD,EAAWuD,GAAqB7oC,IAInC,OAAOA,6BCpWRsB,EAAQ2nC,kBAKR,WACE,OAAOpoB,GALTvf,EAAQ4nC,kBAQR,SAA2BC,GACzBtoB,EAAiBsoB,GAPnB,IAAItoB,EAAiB,yBCHrBvf,EAAQ8nC,cACN9nC,EAAQ+nC,cACR/nC,EAAQgoC,iBACRhoC,EAAQioC,eACRjoC,EAAQkoC,gBACRloC,EAAQmoC,cACRnoC,EAAQooC,aACRpoC,EAAQqoC,eACRroC,EAAQsoC,aACRtoC,EAAQuoC,gBACRvoC,EAAQwoC,cACRxoC,EAAQyoC,eACRzoC,EAAQ0oC,cACR1oC,EAAQ2oC,aACR3oC,EAAQ4oC,QACR5oC,EAAQ6oC,mBACR7oC,EAAQs9B,qBACRt9B,EAAQq9B,qBACRr9B,EAAQo9B,mBACRp9B,EAAQ8oC,kBACR9oC,EAAQ+oC,QACR/oC,EAAQgpC,WACRhpC,EAAQipC,gBACN,EAsBgBjpC,EAAQipC,WAAa,EAAzC,MAeMD,EAAchpC,EAAQgpC,WAAa,SAgBnCD,EAAW/oC,EAAQ+oC,QAA4B,GAAlBlmB,KAAKqmB,IAAI,GAAI,GAAU,GAAK,GAAK,IA2G9Df,GA3FWnoC,EAAQ4oC,SAAWG,EAOR/oC,EAAQ6oC,mBAAqB,OAO9B7oC,EAAQ8oC,kBAAoB,MAOzB9oC,EAAQq9B,qBAAuB,IAOjCr9B,EAAQo9B,mBAAqB,KAO3Bp9B,EAAQs9B,qBAAuB,IAOtCt9B,EAAQwoC,cAAgB,OAOvBxoC,EAAQyoC,eAAiB,MAO3BzoC,EAAQ2oC,aAAe,KAOtB3oC,EAAQ0oC,cAAgB,GAOtB1oC,EAAQuoC,gBAAkB,EAO7BvoC,EAAQsoC,aAAe,GAOrBtoC,EAAQqoC,eAAiB,EAO1BroC,EAAQmoC,cAAgB,MAczCC,GAPmBpoC,EAAQkoC,gBAAkB,GAO7BloC,EAAQooC,aAA+B,GAAhBD,GAcvCL,GAPiB9nC,EAAQ+nC,cAA+B,EAAfK,EAOxBpoC,EAAQ8nC,cAAgBM,EAAeY,GAOxDf,EAAkBjoC,EAAQioC,eAAiBH,EAAgB,GAOvC9nC,EAAQgoC,iBAAoC,EAAjBC,0BCjOrDjoC,EAAQmpC,YAmCR,SAAqB1L,EAAMlwB,GACzB,MAAMgS,GAAiB,EAAI6pB,EAAQzB,qBAC7B0B,EACJ97B,GAAS87B,cACT97B,GAAS+7B,QAAQ/7B,SAAS87B,cAC1B9pB,EAAe8pB,cACf9pB,EAAe+pB,QAAQ/7B,SAAS87B,cAChC,EAEIE,GAAQ,EAAIpM,EAAOxD,QAAQ8D,GAC3B+L,EAAMD,EAAME,SACZC,GAAQF,EAAMH,EAAe,EAAI,GAAKG,EAAMH,EAIlD,OAFAE,EAAMI,QAAQJ,EAAMK,UAAYF,GAChCH,EAAMM,SAAS,EAAG,EAAG,EAAG,GACjBN,GAjDT,IAAIpM,EAAS,EAAQ,IAEjBiM,EAAU,EAAQ,6BCJtB,IAAIlH,EAAO,EAAQ,IACf4H,EAAY,EAAQ,KAGpBC,EAA4C/pC,IAAYA,EAAQgqC,UAAYhqC,EAG5EiqC,EAAaF,GAA4ChqC,IAAWA,EAAOiqC,UAAYjqC,EAMvFmqC,EAHgBD,GAAcA,EAAWjqC,UAAY+pC,EAG5B7H,EAAKgI,YAASpjC,EAsBvC+3B,GAnBiBqL,EAASA,EAAOrL,cAAW/3B,IAmBfgjC,EAEjC/pC,EAAOC,QAAU6+B,aCrCjB,IAAIsL,EAAY,EAAQ,KA4BxBpqC,EAAOC,QAJP,SAAmBtB,GACjB,OAAOyrC,EAAUzrC,EAAO0rC,qBCW1BrqC,EAAOC,QAJP,SAAYtB,EAAOynB,GACjB,OAAOznB,IAAUynB,GAAUznB,GAAUA,GAASynB,GAAUA,cCjC1D,IAAIkkB,EAAgB,EAAQ,KACxBC,EAAW,EAAQ,KACnBC,EAAc,EAAQ,KAkC1BxqC,EAAOC,QAJP,SAAcqG,GACZ,OAAOkkC,EAAYlkC,GAAUgkC,EAAchkC,GAAUikC,EAASjkC,eCjChE,IAAImkC,EAAkB,EAAQ,KAC1BC,EAAe,EAAQ,KAGvBC,EAAclsC,OAAOmB,UAGrBZ,EAAiB2rC,EAAY3rC,eAG7BqC,EAAuBspC,EAAYtpC,qBAoBnCupC,EAAcH,EAAgB,WAAa,OAAOtrC,UAApB,IAAsCsrC,EAAkB,SAAS9rC,GACjG,OAAO+rC,EAAa/rC,IAAUK,EAAeZ,KAAKO,EAAO,YACtD0C,EAAqBjD,KAAKO,EAAO,WAGtCqB,EAAOC,QAAU2qC,aCnCjB,IAAIpG,EAAW,EAAQ,KACnBx9B,EAAM,EAAQ,KACdzE,EAAU,EAAQ,KAClB2E,EAAM,EAAQ,KACdisB,EAAU,EAAQ,KAClB0X,EAAa,EAAQ,KACrBC,EAAW,EAAQ,KAGnBC,EAAS,eAETC,EAAa,mBACbC,EAAS,eACTC,EAAa,mBAEbC,EAAc,oBAGdC,EAAqBN,EAAStG,GAC9B6G,EAAgBP,EAAS9jC,GACzBskC,EAAoBR,EAASvoC,GAC7BgpC,EAAgBT,EAAS5jC,GACzBskC,EAAoBV,EAAS3X,GAS7BsY,EAASZ,GAGRrG,GAAYiH,EAAO,IAAIjH,EAAS,IAAItF,YAAY,MAAQiM,GACxDnkC,GAAOykC,EAAO,IAAIzkC,IAAQ+jC,GAC1BxoC,GAAWkpC,EAAOlpC,EAAQC,YAAcwoC,GACxC9jC,GAAOukC,EAAO,IAAIvkC,IAAQ+jC,GAC1B9X,GAAWsY,EAAO,IAAItY,IAAY+X,KACrCO,EAAS,SAAS9sC,GAChB,IAAImE,EAAS+nC,EAAWlsC,GACpB+sC,EA/BQ,mBA+BD5oC,EAAsBnE,EAAMiC,iBAAcmG,EACjD4kC,EAAaD,EAAOZ,EAASY,GAAQ,GAEzC,GAAIC,EACF,OAAQA,GACN,KAAKP,EAAoB,OAAOD,EAChC,KAAKE,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAC/B,KAAKO,EAAe,OAAON,EAC3B,KAAKO,EAAmB,OAAON,EAGnC,OAAOpoC,IAIX9C,EAAOC,QAAUwrC,cCzDjB,IAAIZ,EAAa,EAAQ,KACrBH,EAAe,EAAQ,KA2B3B1qC,EAAOC,QALP,SAAkBtB,GAChB,MAAuB,iBAATA,GACX+rC,EAAa/rC,IArBF,mBAqBYksC,EAAWlsC,eCzBvC,IAAIuhC,EAAc,EAAQ,KACtB0L,EAAkB,EAAQ,KAsC9B5rC,EAAOC,QA1BP,SAAoB4f,EAAQ/Q,EAAOxI,EAAQulC,GACzC,IAAIC,GAASxlC,EACbA,IAAWA,EAAS,IAKpB,IAHA,IAAI6S,GAAS,EACT/Z,EAAS0P,EAAM1P,SAEV+Z,EAAQ/Z,GAAQ,CACvB,IAAIU,EAAMgP,EAAMqK,GAEZ3M,EAAWq/B,EACXA,EAAWvlC,EAAOxG,GAAM+f,EAAO/f,GAAMA,EAAKwG,EAAQuZ,QAClD9Y,OAEaA,IAAbyF,IACFA,EAAWqT,EAAO/f,IAEhBgsC,EACFF,EAAgBtlC,EAAQxG,EAAK0M,GAE7B0zB,EAAY55B,EAAQxG,EAAK0M,GAG7B,OAAOlG,cCpCT,IAAIgkC,EAAgB,EAAQ,KACxByB,EAAa,EAAQ,KACrBvB,EAAc,EAAQ,KA6B1BxqC,EAAOC,QAJP,SAAgBqG,GACd,OAAOkkC,EAAYlkC,GAAUgkC,EAAchkC,GAAQ,GAAQylC,EAAWzlC,sBCzBxEtG,EAAOC,QAAU5B,qBCHjB,IAAIutC,EAAkB,EAAQ,KAC1BI,EAAmB,EAAQ,KAM3BhtC,EAHcP,OAAOmB,UAGQZ,eAyB7BitC,EAAUD,GAAiB,SAASlpC,EAAQnE,EAAOmB,GACjDd,EAAeZ,KAAK0E,EAAQhD,GAC9BgD,EAAOhD,GAAKmE,KAAKtF,GAEjBitC,EAAgB9oC,EAAQhD,EAAK,CAACnB,OAIlCqB,EAAOC,QAAUgsC,qCCrCjB,IAAIC,EAAmC,oBAAflI,YACgB,oBAAhB0B,aACe,oBAAfP,WAExB,SAASzf,EAAKpU,EAAKxR,GACjB,OAAOrB,OAAOmB,UAAUZ,eAAeZ,KAAKkT,EAAKxR,GAGnDG,EAAQc,OAAS,SAAUuQ,GAEzB,IADA,IAAI66B,EAAU3sC,MAAMI,UAAUqM,MAAM7N,KAAKe,UAAW,GAC7CgtC,EAAQ/sC,QAAQ,CACrB,IAAIygB,EAASssB,EAAQtoB,QACrB,GAAKhE,EAAL,CAEA,GAAsB,iBAAXA,EACT,MAAM,IAAIxhB,UAAUwhB,EAAS,sBAG/B,IAAK,IAAIrf,KAAKqf,EACR6F,EAAK7F,EAAQrf,KACf8Q,EAAI9Q,GAAKqf,EAAOrf,KAKtB,OAAO8Q,GAKTrR,EAAQmsC,UAAY,SAAUC,EAAKxlB,GACjC,OAAIwlB,EAAIjtC,SAAWynB,EAAewlB,EAC9BA,EAAIC,SAAmBD,EAAIC,SAAS,EAAGzlB,IAC3CwlB,EAAIjtC,OAASynB,EACNwlB,IAIT,IAAIE,EAAU,CACZC,SAAU,SAAUC,EAAMC,EAAKC,EAAUC,EAAKC,GAC5C,GAAIH,EAAIJ,UAAYG,EAAKH,SACvBG,EAAKrhC,IAAIshC,EAAIJ,SAASK,EAAUA,EAAWC,GAAMC,QAInD,IAAK,IAAI9uC,EAAI,EAAGA,EAAI6uC,EAAK7uC,IACvB0uC,EAAKI,EAAY9uC,GAAK2uC,EAAIC,EAAW5uC,IAIzC+uC,cAAe,SAAUC,GACvB,IAAIhvC,EAAGsT,EAAGu7B,EAAKI,EAAKC,EAAOnqC,EAI3B,IADA8pC,EAAM,EACD7uC,EAAI,EAAGsT,EAAI07B,EAAO3tC,OAAQrB,EAAIsT,EAAGtT,IACpC6uC,GAAOG,EAAOhvC,GAAGqB,OAMnB,IAFA0D,EAAS,IAAIkhC,WAAW4I,GACxBI,EAAM,EACDjvC,EAAI,EAAGsT,EAAI07B,EAAO3tC,OAAQrB,EAAIsT,EAAGtT,IACpCkvC,EAAQF,EAAOhvC,GACf+E,EAAOsI,IAAI6hC,EAAOD,GAClBA,GAAOC,EAAM7tC,OAGf,OAAO0D,IAIPoqC,EAAY,CACdV,SAAU,SAAUC,EAAMC,EAAKC,EAAUC,EAAKC,GAC5C,IAAK,IAAI9uC,EAAI,EAAGA,EAAI6uC,EAAK7uC,IACvB0uC,EAAKI,EAAY9uC,GAAK2uC,EAAIC,EAAW5uC,IAIzC+uC,cAAe,SAAUC,GACvB,MAAO,GAAGniC,OAAOlL,MAAM,GAAIqtC,KAO/B9sC,EAAQktC,SAAW,SAAUC,GACvBA,GACFntC,EAAQotC,KAAQrJ,WAChB/jC,EAAQqtC,MAAQ5H,YAChBzlC,EAAQstC,MAAQpI,WAChBllC,EAAQc,OAAOd,EAASssC,KAExBtsC,EAAQotC,KAAQ7tC,MAChBS,EAAQqtC,MAAQ9tC,MAChBS,EAAQstC,MAAQ/tC,MAChBS,EAAQc,OAAOd,EAASitC,KAI5BjtC,EAAQktC,SAASjB,eCxGjB,IAAIsB,EAAc,EAAQ,KAkC1BxtC,EAAOC,QAJP,SAAiBtB,EAAOynB,GACtB,OAAOonB,EAAY7uC,EAAOynB,+BCL5B,SAASqnB,EAAWxT,GAClB,GAAoB,iBAATA,EACT,MAAM,IAAI57B,UAAU,mCAAqCgnC,KAAKqI,UAAUzT,IAK5E,SAAS0T,EAAqB1T,EAAM2T,GAMlC,IALA,IAIIC,EAJAxmC,EAAM,GACNymC,EAAoB,EACpBC,GAAa,EACbC,EAAO,EAEFjwC,EAAI,EAAGA,GAAKk8B,EAAK76B,SAAUrB,EAAG,CACrC,GAAIA,EAAIk8B,EAAK76B,OACXyuC,EAAO5T,EAAKuG,WAAWziC,OACpB,IAAa,KAAT8vC,EACP,MAEAA,EAAO,GACT,GAAa,KAATA,EAAmB,CACrB,GAAIE,IAAchwC,EAAI,GAAc,IAATiwC,QAEpB,GAAID,IAAchwC,EAAI,GAAc,IAATiwC,EAAY,CAC5C,GAAI3mC,EAAIjI,OAAS,GAA2B,IAAtB0uC,GAA8D,KAAnCzmC,EAAIm5B,WAAWn5B,EAAIjI,OAAS,IAAsD,KAAnCiI,EAAIm5B,WAAWn5B,EAAIjI,OAAS,GAC1H,GAAIiI,EAAIjI,OAAS,EAAG,CAClB,IAAI6uC,EAAiB5mC,EAAI6mC,YAAY,KACrC,GAAID,IAAmB5mC,EAAIjI,OAAS,EAAG,EACb,IAApB6uC,GACF5mC,EAAM,GACNymC,EAAoB,GAGpBA,GADAzmC,EAAMA,EAAI4E,MAAM,EAAGgiC,IACK7uC,OAAS,EAAIiI,EAAI6mC,YAAY,KAEvDH,EAAYhwC,EACZiwC,EAAO,EACP,eAEG,GAAmB,IAAf3mC,EAAIjI,QAA+B,IAAfiI,EAAIjI,OAAc,CAC/CiI,EAAM,GACNymC,EAAoB,EACpBC,EAAYhwC,EACZiwC,EAAO,EACP,SAGAJ,IACEvmC,EAAIjI,OAAS,EACfiI,GAAO,MAEPA,EAAM,KACRymC,EAAoB,QAGlBzmC,EAAIjI,OAAS,EACfiI,GAAO,IAAM4yB,EAAKhuB,MAAM8hC,EAAY,EAAGhwC,GAEvCsJ,EAAM4yB,EAAKhuB,MAAM8hC,EAAY,EAAGhwC,GAClC+vC,EAAoB/vC,EAAIgwC,EAAY,EAEtCA,EAAYhwC,EACZiwC,EAAO,OACW,KAATH,IAA+B,IAAVG,IAC5BA,EAEFA,GAAQ,EAGZ,OAAO3mC,EAeT,IAAI8mC,EAAQ,CAEV3rC,QAAS,WAKP,IAJA,IAEI4rC,EAFAC,EAAe,GACfC,GAAmB,EAGdvwC,EAAIoB,UAAUC,OAAS,EAAGrB,IAAM,IAAMuwC,EAAkBvwC,IAAK,CACpE,IAAIk8B,EACAl8B,GAAK,EACPk8B,EAAO96B,UAAUpB,SAELgJ,IAARqnC,IACFA,EAAMphC,QAAQohC,OAChBnU,EAAOmU,GAGTX,EAAWxT,GAGS,IAAhBA,EAAK76B,SAITivC,EAAepU,EAAO,IAAMoU,EAC5BC,EAA0C,KAAvBrU,EAAKuG,WAAW,IASrC,OAFA6N,EAAeV,EAAqBU,GAAeC,GAE/CA,EACED,EAAajvC,OAAS,EACjB,IAAMivC,EAEN,IACAA,EAAajvC,OAAS,EACxBivC,EAEA,KAIXE,UAAW,SAAmBtU,GAG5B,GAFAwT,EAAWxT,GAES,IAAhBA,EAAK76B,OAAc,MAAO,IAE9B,IAAIovC,EAAoC,KAAvBvU,EAAKuG,WAAW,GAC7BiO,EAAyD,KAArCxU,EAAKuG,WAAWvG,EAAK76B,OAAS,GAQtD,OAHoB,KAFpB66B,EAAO0T,EAAqB1T,GAAOuU,IAE1BpvC,QAAiBovC,IAAYvU,EAAO,KACzCA,EAAK76B,OAAS,GAAKqvC,IAAmBxU,GAAQ,KAE9CuU,EAAmB,IAAMvU,EACtBA,GAGTuU,WAAY,SAAoBvU,GAE9B,OADAwT,EAAWxT,GACJA,EAAK76B,OAAS,GAA4B,KAAvB66B,EAAKuG,WAAW,IAG5CzmB,KAAM,WACJ,GAAyB,IAArB5a,UAAUC,OACZ,MAAO,IAET,IADA,IAAIsvC,EACK3wC,EAAI,EAAGA,EAAIoB,UAAUC,SAAUrB,EAAG,CACzC,IAAIsB,EAAMF,UAAUpB,GACpB0vC,EAAWpuC,GACPA,EAAID,OAAS,SACA2H,IAAX2nC,EACFA,EAASrvC,EAETqvC,GAAU,IAAMrvC,GAGtB,YAAe0H,IAAX2nC,EACK,IACFP,EAAMI,UAAUG,IAGzBC,SAAU,SAAkBnW,EAAMC,GAIhC,GAHAgV,EAAWjV,GACXiV,EAAWhV,GAEPD,IAASC,EAAI,MAAO,GAKxB,IAHAD,EAAO2V,EAAM3rC,QAAQg2B,OACrBC,EAAK0V,EAAM3rC,QAAQi2B,IAEF,MAAO,GAIxB,IADA,IAAImW,EAAY,EACTA,EAAYpW,EAAKp5B,QACa,KAA/Bo5B,EAAKgI,WAAWoO,KADYA,GASlC,IALA,IAAIC,EAAUrW,EAAKp5B,OACf0vC,EAAUD,EAAUD,EAGpBG,EAAU,EACPA,EAAUtW,EAAGr5B,QACa,KAA3Bq5B,EAAG+H,WAAWuO,KADUA,GAW9B,IAPA,IACIC,EADQvW,EAAGr5B,OACK2vC,EAGhB3vC,EAAS0vC,EAAUE,EAAQF,EAAUE,EACrCC,GAAiB,EACjBlxC,EAAI,EACDA,GAAKqB,IAAUrB,EAAG,CACvB,GAAIA,IAAMqB,EAAQ,CAChB,GAAI4vC,EAAQ5vC,EAAQ,CAClB,GAAmC,KAA/Bq5B,EAAG+H,WAAWuO,EAAUhxC,GAG1B,OAAO06B,EAAGxsB,MAAM8iC,EAAUhxC,EAAI,GACzB,GAAU,IAANA,EAGT,OAAO06B,EAAGxsB,MAAM8iC,EAAUhxC,QAEnB+wC,EAAU1vC,IACoB,KAAnCo5B,EAAKgI,WAAWoO,EAAY7wC,GAG9BkxC,EAAgBlxC,EACD,IAANA,IAGTkxC,EAAgB,IAGpB,MAEF,IAAIC,EAAW1W,EAAKgI,WAAWoO,EAAY7wC,GAE3C,GAAImxC,IADSzW,EAAG+H,WAAWuO,EAAUhxC,GAEnC,MACoB,KAAbmxC,IACPD,EAAgBlxC,GAGpB,IAAIoxC,EAAM,GAGV,IAAKpxC,EAAI6wC,EAAYK,EAAgB,EAAGlxC,GAAK8wC,IAAW9wC,EAClDA,IAAM8wC,GAAkC,KAAvBrW,EAAKgI,WAAWziC,KAChB,IAAfoxC,EAAI/vC,OACN+vC,GAAO,KAEPA,GAAO,OAMb,OAAIA,EAAI/vC,OAAS,EACR+vC,EAAM1W,EAAGxsB,MAAM8iC,EAAUE,IAEhCF,GAAWE,EACoB,KAA3BxW,EAAG+H,WAAWuO,MACdA,EACGtW,EAAGxsB,MAAM8iC,KAIpBK,UAAW,SAAmBnV,GAC5B,OAAOA,GAGToV,QAAS,SAAiBpV,GAExB,GADAwT,EAAWxT,GACS,IAAhBA,EAAK76B,OAAc,MAAO,IAK9B,IAJA,IAAIyuC,EAAO5T,EAAKuG,WAAW,GACvB8O,EAAmB,KAATzB,EACV0B,GAAO,EACPC,GAAe,EACVzxC,EAAIk8B,EAAK76B,OAAS,EAAGrB,GAAK,IAAKA,EAEtC,GAAa,MADb8vC,EAAO5T,EAAKuG,WAAWziC,KAEnB,IAAKyxC,EAAc,CACjBD,EAAMxxC,EACN,YAIJyxC,GAAe,EAInB,OAAa,IAATD,EAAmBD,EAAU,IAAM,IACnCA,GAAmB,IAARC,EAAkB,KAC1BtV,EAAKhuB,MAAM,EAAGsjC,IAGvBE,SAAU,SAAkBxV,EAAMyV,GAChC,QAAY3oC,IAAR2oC,GAAoC,iBAARA,EAAkB,MAAM,IAAIrxC,UAAU,mCACtEovC,EAAWxT,GAEX,IAGIl8B,EAHA4xC,EAAQ,EACRJ,GAAO,EACPC,GAAe,EAGnB,QAAYzoC,IAAR2oC,GAAqBA,EAAItwC,OAAS,GAAKswC,EAAItwC,QAAU66B,EAAK76B,OAAQ,CACpE,GAAIswC,EAAItwC,SAAW66B,EAAK76B,QAAUswC,IAAQzV,EAAM,MAAO,GACvD,IAAI2V,EAASF,EAAItwC,OAAS,EACtBywC,GAAoB,EACxB,IAAK9xC,EAAIk8B,EAAK76B,OAAS,EAAGrB,GAAK,IAAKA,EAAG,CACrC,IAAI8vC,EAAO5T,EAAKuG,WAAWziC,GAC3B,GAAa,KAAT8vC,GAGA,IAAK2B,EAAc,CACjBG,EAAQ5xC,EAAI,EACZ,YAGsB,IAAtB8xC,IAGFL,GAAe,EACfK,EAAmB9xC,EAAI,GAErB6xC,GAAU,IAER/B,IAAS6B,EAAIlP,WAAWoP,IACR,KAAZA,IAGJL,EAAMxxC,IAKR6xC,GAAU,EACVL,EAAMM,IAOd,OADIF,IAAUJ,EAAKA,EAAMM,GAAmC,IAATN,IAAYA,EAAMtV,EAAK76B,QACnE66B,EAAKhuB,MAAM0jC,EAAOJ,GAEzB,IAAKxxC,EAAIk8B,EAAK76B,OAAS,EAAGrB,GAAK,IAAKA,EAClC,GAA2B,KAAvBk8B,EAAKuG,WAAWziC,IAGhB,IAAKyxC,EAAc,CACjBG,EAAQ5xC,EAAI,EACZ,YAEgB,IAATwxC,IAGXC,GAAe,EACfD,EAAMxxC,EAAI,GAId,OAAa,IAATwxC,EAAmB,GAChBtV,EAAKhuB,MAAM0jC,EAAOJ,IAI7BO,QAAS,SAAiB7V,GACxBwT,EAAWxT,GAQX,IAPA,IAAI8V,GAAY,EACZC,EAAY,EACZT,GAAO,EACPC,GAAe,EAGfS,EAAc,EACTlyC,EAAIk8B,EAAK76B,OAAS,EAAGrB,GAAK,IAAKA,EAAG,CACzC,IAAI8vC,EAAO5T,EAAKuG,WAAWziC,GAC3B,GAAa,KAAT8vC,GASS,IAAT0B,IAGFC,GAAe,EACfD,EAAMxxC,EAAI,GAEC,KAAT8vC,GAEkB,IAAdkC,EACFA,EAAWhyC,EACY,IAAhBkyC,IACPA,EAAc,IACK,IAAdF,IAGTE,GAAe,QArBb,IAAKT,EAAc,CACjBQ,EAAYjyC,EAAI,EAChB,OAuBR,OAAkB,IAAdgyC,IAA4B,IAATR,GAEH,IAAhBU,GAEgB,IAAhBA,GAAqBF,IAAaR,EAAM,GAAKQ,IAAaC,EAAY,EACjE,GAEF/V,EAAKhuB,MAAM8jC,EAAUR,IAG9BW,OAAQ,SAAgBC,GACtB,GAAmB,OAAfA,GAA6C,iBAAfA,EAChC,MAAM,IAAI9xC,UAAU,0EAA4E8xC,GAElG,OAvVJ,SAAiBC,EAAKD,GACpB,IAAIE,EAAMF,EAAWE,KAAOF,EAAWhO,KACnCmO,EAAOH,EAAWG,OAASH,EAAWzpC,MAAQ,KAAOypC,EAAWT,KAAO,IAC3E,OAAKW,EAGDA,IAAQF,EAAWhO,KACdkO,EAAMC,EAERD,EAAMD,EAAME,EALVA,EAmVAC,CAAQ,IAAKJ,IAGtB3V,MAAO,SAAeP,GACpBwT,EAAWxT,GAEX,IAAIuW,EAAM,CAAErO,KAAM,GAAIkO,IAAK,GAAIC,KAAM,GAAIZ,IAAK,GAAIhpC,KAAM,IACxD,GAAoB,IAAhBuzB,EAAK76B,OAAc,OAAOoxC,EAC9B,IAEIb,EAFA9B,EAAO5T,EAAKuG,WAAW,GACvBgO,EAAsB,KAATX,EAEbW,GACFgC,EAAIrO,KAAO,IACXwN,EAAQ,GAERA,EAAQ,EAaV,IAXA,IAAII,GAAY,EACZC,EAAY,EACZT,GAAO,EACPC,GAAe,EACfzxC,EAAIk8B,EAAK76B,OAAS,EAIlB6wC,EAAc,EAGXlyC,GAAK4xC,IAAS5xC,EAEnB,GAAa,MADb8vC,EAAO5T,EAAKuG,WAAWziC,KAUV,IAATwxC,IAGFC,GAAe,EACfD,EAAMxxC,EAAI,GAEC,KAAT8vC,GAEkB,IAAdkC,EAAiBA,EAAWhyC,EAA2B,IAAhBkyC,IAAmBA,EAAc,IACrD,IAAdF,IAGXE,GAAe,QAlBb,IAAKT,EAAc,CACjBQ,EAAYjyC,EAAI,EAChB,MAyCR,OArBkB,IAAdgyC,IAA4B,IAATR,GAEP,IAAhBU,GAEgB,IAAhBA,GAAqBF,IAAaR,EAAM,GAAKQ,IAAaC,EAAY,GACvD,IAATT,IACiCiB,EAAIF,KAAOE,EAAI9pC,KAAhC,IAAdspC,GAAmBxB,EAAkCvU,EAAKhuB,MAAM,EAAGsjC,GAAgCtV,EAAKhuB,MAAM+jC,EAAWT,KAG7G,IAAdS,GAAmBxB,GACrBgC,EAAI9pC,KAAOuzB,EAAKhuB,MAAM,EAAG8jC,GACzBS,EAAIF,KAAOrW,EAAKhuB,MAAM,EAAGsjC,KAEzBiB,EAAI9pC,KAAOuzB,EAAKhuB,MAAM+jC,EAAWD,GACjCS,EAAIF,KAAOrW,EAAKhuB,MAAM+jC,EAAWT,IAEnCiB,EAAId,IAAMzV,EAAKhuB,MAAM8jC,EAAUR,IAG7BS,EAAY,EAAGQ,EAAIH,IAAMpW,EAAKhuB,MAAM,EAAG+jC,EAAY,GAAYxB,IAAYgC,EAAIH,IAAM,KAElFG,GAGTJ,IAAK,IACLK,UAAW,IACXC,MAAO,KACPvC,MAAO,MAGTA,EAAMA,MAAQA,EAEdnuC,EAAOC,QAAUkuC,+BChhBjB,IAAIwC,EAAY,EAAQ,KACpBC,EAAa,EAAQ,KACrBC,EAAc,EAAQ,KACtBC,EAAW,EAAQ,KACnBC,EAAW,EAAQ,KACnBC,EAAW,EAAQ,KASvB,SAASC,EAAM9qB,GACb,IAAIkH,EAAO1sB,KAAKuwC,SAAW,IAAIP,EAAUxqB,GACzCxlB,KAAKkmB,KAAOwG,EAAKxG,KAInBoqB,EAAMrxC,UAAU2jB,MAAQqtB,EACxBK,EAAMrxC,UAAkB,OAAIixC,EAC5BI,EAAMrxC,UAAUsL,IAAM4lC,EACtBG,EAAMrxC,UAAU2f,IAAMwxB,EACtBE,EAAMrxC,UAAUwL,IAAM4lC,EAEtBhxC,EAAOC,QAAUgxC,aC1BjB,IAAIE,EAAiB,EAAQ,KACzBC,EAAkB,EAAQ,KAC1BC,EAAe,EAAQ,KACvBC,EAAe,EAAQ,KACvBC,EAAe,EAAQ,KAS3B,SAASZ,EAAUxqB,GACjB,IAAIhN,GAAS,EACT/Z,EAAoB,MAAX+mB,EAAkB,EAAIA,EAAQ/mB,OAG3C,IADAuB,KAAK4iB,UACIpK,EAAQ/Z,GAAQ,CACvB,IAAIumB,EAAQQ,EAAQhN,GACpBxY,KAAKyK,IAAIua,EAAM,GAAIA,EAAM,KAK7BgrB,EAAU/wC,UAAU2jB,MAAQ4tB,EAC5BR,EAAU/wC,UAAkB,OAAIwxC,EAChCT,EAAU/wC,UAAUsL,IAAMmmC,EAC1BV,EAAU/wC,UAAU2f,IAAM+xB,EAC1BX,EAAU/wC,UAAUwL,IAAMmmC,EAE1BvxC,EAAOC,QAAU0wC,aC/BjB,IAAI3oB,EAAK,EAAQ,KAoBjBhoB,EAAOC,QAVP,SAAsBoM,EAAOvM,GAE3B,IADA,IAAIV,EAASiN,EAAMjN,OACZA,KACL,GAAI4oB,EAAG3b,EAAMjN,GAAQ,GAAIU,GACvB,OAAOV,EAGX,OAAQ,cCjBV,IAGIoyC,EAHY,EAAQ,IAGLC,CAAUhzC,OAAQ,UAErCuB,EAAOC,QAAUuxC,aCLjB,IAAIE,EAAY,EAAQ,KAiBxB1xC,EAAOC,QAPP,SAAoBqM,EAAKxM,GACvB,IAAIutB,EAAO/gB,EAAI4kC,SACf,OAAOQ,EAAU5xC,GACbutB,EAAmB,iBAAPvtB,EAAkB,SAAW,QACzCutB,EAAK/gB,gBCdX,IAAIqlC,EAAmB,EAAQ,KAC3BC,EAAY,EAAQ,KACpBC,EAAW,EAAQ,KAGnBC,EAAmBD,GAAYA,EAASE,aAmBxCA,EAAeD,EAAmBF,EAAUE,GAAoBH,EAEpE3xC,EAAOC,QAAU8xC,OCzBjB,IAAIpH,EAAclsC,OAAOmB,UAgBzBI,EAAOC,QAPP,SAAqBtB,GACnB,IAAI+sC,EAAO/sC,GAASA,EAAMiC,YAG1B,OAAOjC,KAFqB,mBAAR+sC,GAAsBA,EAAK9rC,WAAc+qC,gBCZ/D,IAAIlrC,EAAU,EAAQ,IAClBuyC,EAAQ,EAAQ,KAChBtL,EAAe,EAAQ,KACvB/mC,EAAW,EAAQ,KAiBvBK,EAAOC,QAPP,SAAkBtB,EAAO2H,GACvB,OAAI7G,EAAQd,GACHA,EAEFqzC,EAAMrzC,EAAO2H,GAAU,CAAC3H,GAAS+nC,EAAa/mC,EAAShB,gBCjBhE,IAAID,EAAiB,EAAQ,KAwB7BsB,EAAOC,QAbP,SAAyBqG,EAAQxG,EAAKnB,GACzB,aAAPmB,GAAsBpB,EACxBA,EAAe4H,EAAQxG,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASnB,EACT,UAAY,IAGd2H,EAAOxG,GAAOnB,iBCpBlB,IAAI4rC,EAAW,EAAQ,KACnBkB,EAAS,EAAQ,KACjBb,EAAc,EAAQ,KACtBnrC,EAAU,EAAQ,IAClB+qC,EAAc,EAAQ,KACtB1L,EAAW,EAAQ,KACnBmT,EAAc,EAAQ,KACtBF,EAAe,EAAQ,KAUvB/yC,EAHcP,OAAOmB,UAGQZ,eA2DjCgB,EAAOC,QAxBP,SAAiBtB,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI6rC,EAAY7rC,KACXc,EAAQd,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMod,QAC1D+iB,EAASngC,IAAUozC,EAAapzC,IAAUisC,EAAYjsC,IAC1D,OAAQA,EAAMS,OAEhB,IAAI8yC,EAAMzG,EAAO9sC,GACjB,GApDW,gBAoDPuzC,GAnDO,gBAmDUA,EACnB,OAAQvzC,EAAMkoB,KAEhB,GAAIorB,EAAYtzC,GACd,OAAQ4rC,EAAS5rC,GAAOS,OAE1B,IAAK,IAAIU,KAAOnB,EACd,GAAIK,EAAeZ,KAAKO,EAAOmB,GAC7B,OAAO,EAGX,OAAO,wCCxETG,EAAQkyC,eAyBR,SAAwBzU,GACtB,OAAO,EAAIN,EAAOgM,aAAa1L,EAAM,CAAE4L,aAAc,KAzBvD,IAAIlM,EAAS,EAAQ,6BCDrBn9B,EAAQmyC,QAwBR,SAAiB1U,EAAM2U,GACrB,MAAM7I,GAAQ,EAAIpM,EAAOxD,QAAQ8D,GACjC,GAAIlzB,MAAM6nC,GAAS,OAAO,EAAIhJ,EAAQ5L,eAAeC,EAAM3D,KAC3D,IAAKsY,EAEH,OAAO7I,EAGT,OADAA,EAAMI,QAAQJ,EAAMK,UAAYwI,GACzB7I,GA/BT,IAAIpM,EAAS,EAAQ,IACjBiM,EAAU,EAAQ,4BCHtB,IAAIpH,EAAa,EAAQ,KAGrB+H,EAA4C/pC,IAAYA,EAAQgqC,UAAYhqC,EAG5EiqC,EAAaF,GAA4ChqC,IAAWA,EAAOiqC,UAAYjqC,EAMvFsyC,EAHgBpI,GAAcA,EAAWjqC,UAAY+pC,GAGtB/H,EAAWj1B,QAG1C6kC,EAAY,WACd,IAEE,IAAIU,EAAQrI,GAAcA,EAAWsI,SAAWtI,EAAWsI,QAAQ,QAAQD,MAE3E,OAAIA,GAKGD,GAAeA,EAAYG,SAAWH,EAAYG,QAAQ,QACjE,MAAOx0C,KAXI,GAcf+B,EAAOC,QAAU4xC,gBC7BhB,SAAS1sC,EAAQutC,GACjB,IAAIC,EAWL,SAAWxtC,EAAQ86B,EAAUjsB,GAC5B,aAGA,IAAI4+B,EAIHC,EAuCD,GArCA,WACC,IAAI7nC,EAEA8nC,EAAoB,CACvBC,UAAW,WACXC,YAAa,aACbC,aAAc,cACdC,aAAc,cACdC,WAAY,YAEZC,eAAgB,gBAChBC,gBAAiB,eACjBC,eAAgB,EAChBC,QAAS,WACTC,WAAY,cACZC,UAAW,aAEXC,QAAS,GACTC,YAAa,GACbC,MAAM,EACNC,UAAW,IACXC,KAAM,GACNC,SAAU,EACVC,YAAY,EACZC,WAAY,EACZC,cAAe,KAKhB,IAAIlpC,KAFJ6nC,EAAe1tC,EAAOgvC,iBAAmBhvC,EAAOivC,iBAAmB,GAEvDtB,EACN9nC,KAAQ6nC,IACZA,EAAa7nC,GAAQ8nC,EAAkB9nC,IAhC1C,IAqCKi1B,IAAaA,EAASoU,uBAC1B,MAAO,CACNT,KAAM,aAINU,IAAKzB,EAIL0B,WAAW,GAIb,IAAIC,EAAUvU,EAASwU,gBAEnBC,EAAiBvvC,EAAOwvC,mBAExBC,EAAoB,mBAEpBC,EAAgB,eAMhBC,EAAmB3vC,EAAOyvC,GAAmBx5B,KAAKjW,GAElD2T,EAAa3T,EAAO2T,WAEpBi8B,EAAwB5vC,EAAO4vC,uBAAyBj8B,EAExDk8B,EAAsB7vC,EAAO6vC,oBAE7BC,EAAa,aAEbC,EAAa,CAAC,OAAQ,QAAS,eAAgB,eAE/CC,EAAgB,GAEhB7lC,EAAU9P,MAAMI,UAAU0P,QAM1B8lC,EAAW,SAASC,EAAKC,GAI5B,OAHIH,EAAcG,KACjBH,EAAcG,GAAO,IAAIjnB,OAAO,UAAUinB,EAAI,YAExCH,EAAcG,GAAK5S,KAAK2S,EAAIR,GAAe,UAAY,KAAOM,EAAcG,IAOhFC,EAAW,SAASF,EAAKC,GACvBF,EAASC,EAAKC,IAClBD,EAAIG,aAAa,SAAUH,EAAIR,GAAe,UAAY,IAAIzU,OAAS,IAAMkV,IAQ3EG,EAAc,SAASJ,EAAKC,GAC/B,IAAII,GACCA,EAAMN,EAASC,EAAIC,KACvBD,EAAIG,aAAa,SAAUH,EAAIR,GAAe,UAAY,IAAI/6B,QAAQ47B,EAAK,OAIzEC,EAAsB,SAASC,EAAKpiC,EAAI0L,GAC3C,IAAIlM,EAASkM,EAAM01B,EAAoB,sBACpC11B,GACFy2B,EAAoBC,EAAKpiC,GAE1B0hC,EAAW5lC,SAAQ,SAASumC,GAC3BD,EAAI5iC,GAAQ6iC,EAAKriC,OAYfsiC,EAAe,SAASC,EAAMrvC,EAAMsvC,EAAQC,EAAWC,GAC1D,IAAI95B,EAAQ6jB,EAASkW,YAAY,SAajC,OAXIH,IACHA,EAAS,IAGVA,EAAOxmC,SAAWojC,EAElBx2B,EAAMg6B,UAAU1vC,GAAOuvC,GAAYC,GAEnC95B,EAAM45B,OAASA,EAEfD,EAAKM,cAAcj6B,GACZA,GAGJk6B,EAAiB,SAAUC,EAAIC,GAClC,IAAInd,GACCqb,IAAoBrb,EAAYl0B,EAAOsxC,aAAe5D,EAAa6D,KACpEF,GAAQA,EAAK9J,MAAQ6J,EAAG1B,GAAe,WACzC0B,EAAGf,aAAa,SAAUgB,EAAK9J,KAEhCrT,EAAS,CAACsd,YAAY,EAAMC,SAAU,CAACL,MAC9BC,GAAQA,EAAK9J,MACtB6J,EAAG7J,IAAM8J,EAAK9J,MAIZmK,EAAS,SAAUd,EAAMe,GAC5B,OAAQC,iBAAiBhB,EAAM,OAAS,IAAIe,IAUzCE,EAAW,SAASjB,EAAMkB,EAAQC,GAGrC,IAFAA,EAAQA,GAASnB,EAAKoB,YAEhBD,EAAQrE,EAAaa,SAAWuD,IAAWlB,EAAKqB,iBACrDF,EAASD,EAAOE,YAChBF,EAASA,EAAOI,WAGjB,OAAOH,GAGJI,GAECC,GAAW,GACXC,GAAY,GACZC,GAAMF,GAEN75B,GAAM,WACT,IAAIg6B,EAASD,GAOb,IALAA,GAAMF,GAASn4C,OAASo4C,GAAYD,GAEpCI,IAAU,EACVC,IAAU,EAEJF,EAAOt4C,QACZs4C,EAAO7zB,OAAP6zB,GAGDC,IAAU,GAGPE,GAAW,SAASrkC,EAAIskC,GACxBH,KAAYG,EACdtkC,EAAG9T,MAAMiB,KAAMxB,YAEfs4C,GAAIxzC,KAAKuP,GAELokC,KACHA,IAAU,GACT3X,EAAS8X,OAASj/B,EAAai8B,GAAuBr3B,OAK1Dm6B,GAASG,SAAWt6B,GAEbm6B,IAGJI,EAAQ,SAASzkC,EAAI0kC,GACxB,OAAOA,EACN,WACCZ,EAAI9jC,IAEL,WACC,IAAI2kC,EAAOx3C,KACPuL,EAAO/M,UACXm4C,GAAI,WACH9jC,EAAG9T,MAAMy4C,EAAMjsC,QAMfksC,EAAW,SAAS5kC,GACvB,IAAImkC,EACAU,EAAW,EACXC,EAASzF,EAAaqB,cACtBqE,EAAa1F,EAAaoB,WAC1Bv2B,EAAM,WACTi6B,GAAU,EACVU,EAAWrkC,EAAKC,MAChBT,KAEGglC,EAAexD,GAAuBuD,EAAa,GACtD,WACCvD,EAAoBt3B,EAAK,CAACkD,QAAS23B,IAEhCA,IAAe1F,EAAaoB,aAC9BsE,EAAa1F,EAAaoB,aAG5BgE,GAAM,WACLn/B,EAAW4E,MACT,GAGJ,OAAO,SAAS+6B,GACf,IAAIv7B,GAEAu7B,GAA4B,IAAfA,KAChBF,EAAa,IAGXZ,IAIHA,GAAW,GAEXz6B,EAAQo7B,GAAUtkC,EAAKC,MAAQokC,IAEpB,IACVn7B,EAAQ,GAGNu7B,GAAcv7B,EAAQ,EACxBs7B,IAEA1/B,EAAW0/B,EAAct7B,MAMxBw7B,EAAW,SAAS5yC,GACvB,IAAI8a,EAAS+3B,EACT/X,EAAO,GACPljB,EAAM,WACTkD,EAAU,KACV9a,KAEG8yC,EAAQ,WACX,IAAI/R,EAAO7yB,EAAKC,MAAQ0kC,EAEpB9R,EAAOjG,EACV9nB,EAAW8/B,EAAOhY,EAAOiG,IAExBmO,GAAuBt3B,GAAKA,IAI/B,OAAO,WACNi7B,EAAY3kC,EAAKC,MAEZ2M,IACJA,EAAU9H,EAAW8/B,EAAOhY,MAK3BiY,GAKCC,EAAS,SACTC,EAAY,YAEZC,EAAiB,aAAc7zC,IAAa,eAAeu9B,KAAK3C,UAAUkZ,WAE1EC,EAAe,EACfC,EAAgB,EAEhBC,EAAY,EACZC,IAAW,EAEXC,GAAkB,SAASr7C,GAC9Bm7C,MACIn7C,GAAKm7C,EAAY,IAAMn7C,EAAEuD,UAC5B43C,EAAY,IAIVG,GAAY,SAAUxD,GAKzB,OAJoB,MAAhByD,IACHA,EAAsD,UAAvC3C,EAAO5W,EAAS98B,KAAM,eAG/Bq2C,KAA2D,UAAzC3C,EAAOd,EAAKsB,WAAY,eAA2D,UAA9BR,EAAOd,EAAM,gBAGxF0D,GAAkB,SAAS1D,EAAM2D,GACpC,IAAIC,EACA1C,EAASlB,EACT6D,EAAUL,GAAUxD,GAOxB,IALA8D,GAASH,EACTI,GAAYJ,EACZK,GAAUL,EACVM,GAAWN,EAELE,IAAY3C,EAASA,EAAOgD,eAAiBhD,GAAUhX,EAAS98B,MAAQ8zC,GAAUzC,IACvFoF,GAAY/C,EAAOI,EAAQ,YAAc,GAAK,IAEF,WAA9BJ,EAAOI,EAAQ,cAC5B0C,EAAY1C,EAAOiD,wBACnBN,EAAUI,EAAUL,EAAUQ,MAC7BJ,EAASJ,EAAUS,OACnBN,EAAWH,EAAUU,IAAM,GAC3BR,EAAQF,EAAUW,OAAS,GAK9B,OAAOV,GAGJW,GAAgB,WACnB,IAAIC,EAAOz8C,EAAG08C,EAAMC,EAAcC,EAAiBjB,EAAYkB,EAAoBC,EAClFC,EAAiBC,EAAeC,EAAelH,EAC5CmH,EAAgBrI,EAAUgE,SAE9B,IAAI7C,EAAWlB,EAAakB,WAAaqF,EAAY,IAAMoB,EAAQS,EAAc77C,QAAQ,CAMxF,IAJArB,EAAI,EAEJs7C,KAEMt7C,EAAIy8C,EAAOz8C,IAEhB,GAAIk9C,EAAcl9C,KAAMk9C,EAAcl9C,GAAGm9C,UAEzC,IAAIlC,GAAkBpG,EAAUuI,iBAAmBvI,EAAUuI,gBAAgBF,EAAcl9C,IAAMq9C,GAAcH,EAAcl9C,SAoC7H,IAlCK88C,EAAgBI,EAAcl9C,GAAG82C,GAAe,kBAAqB6E,EAA6B,EAAhBmB,KACtFnB,EAAaP,GAGT4B,IACJA,GAAkBlI,EAAawI,QAAUxI,EAAawI,OAAS,EAC9D7G,EAAQ8G,aAAe,KAAO9G,EAAQ+G,YAAc,IAAM,IAAM,IAChE1I,EAAawI,OAEdzI,EAAU4I,OAAST,EAEnBC,EAAgBD,EAAgBlI,EAAagB,UAC7CC,EAAOjB,EAAaiB,KACpB0F,EAAe,KAEZL,EAAgB6B,GAAiB5B,EAAY,GAAKC,GAAU,GAAKtF,EAAW,IAAM9T,EAAS8X,QAC7FoB,EAAgB6B,EAChB3B,GAAU,GAEVF,EADSpF,EAAW,GAAKsF,GAAU,GAAKD,EAAY,EACpC2B,EAEA7B,GAIf4B,IAAoBpB,IACtB+B,EAAOC,WAAchC,EAAa5F,EAClC6H,EAAOC,YAAclC,EACrBkB,GAAmC,EAAdlB,EACrBoB,EAAkBpB,GAGnBe,EAAOQ,EAAcl9C,GAAGm8C,yBAEnBJ,EAAWW,EAAKH,SAAWM,IAC9Bf,EAAQY,EAAKJ,MAAQsB,IACrB3B,EAAUS,EAAKL,QAAUQ,EAAqB9G,IAC9CiG,EAASU,EAAKN,OAASsB,IACvB3B,GAAYE,GAAWD,GAAUF,KACjChH,EAAamB,YAAcuF,GAAU0B,EAAcl9C,OAClD89C,GAAezC,EAAY,IAAMyB,IAAkB9G,EAAW,GAAKsF,GAAU,IAAOI,GAAgBwB,EAAcl9C,GAAI27C,KAGxH,GAFA0B,GAAcH,EAAcl9C,IAC5B48C,GAAkB,EACfvB,EAAY,EAAG,WACRuB,GAAmBkB,IAAgBnB,GAC7CtB,EAAY,GAAKC,GAAU,GAAKtF,EAAW,IAC1C+H,EAAa,IAAMjJ,EAAakJ,oBAChCD,EAAa,KAAQjB,IAAmBf,GAAYE,GAAWD,GAAUF,GAAqE,QAA3DoB,EAAcl9C,GAAG82C,GAAehC,EAAaY,eACjIiH,EAAeoB,EAAa,IAAMb,EAAcl9C,IAI/C28C,IAAiBC,GACnBS,GAAcV,KAKbsB,GAAyB5D,EAASmC,IAElC0B,GAAqB,SAASh+C,GACjC,IAAI83C,EAAO93C,EAAEuD,OAETu0C,EAAKmG,kBACDnG,EAAKmG,YAIb5C,GAAgBr7C,GAChBs3C,EAASQ,EAAMlD,EAAaG,aAC5ByC,EAAYM,EAAMlD,EAAaI,cAC/B0C,EAAoBI,EAAMoG,IAC1BrG,EAAaC,EAAM,gBAEhBqG,GAA0BnE,EAAMgE,IAChCE,GAAwB,SAASl+C,GACpCm+C,GAAwB,CAAC56C,OAAQvD,EAAEuD,UAGhC66C,GAAkB,SAAStG,EAAMrJ,GACpC,IAAIqH,EAAWgC,EAAKuG,aAAa,mBAAqBzJ,EAAaS,eAGnD,GAAZS,EACHgC,EAAKwG,cAAc5uB,SAAS7T,QAAQ4yB,GACd,GAAZqH,IACVgC,EAAKrJ,IAAMA,IAIT8P,GAAgB,SAAS38B,GAC5B,IAAI8zB,EAEA8I,EAAe58B,EAAOg1B,GAAehC,EAAaW,aAEjDG,EAAcd,EAAac,YAAY9zB,EAAOg1B,GAAe,eAAiBh1B,EAAOg1B,GAAe,YACxGh1B,EAAO21B,aAAa,QAAS7B,GAG3B8I,GACF58B,EAAO21B,aAAa,SAAUiH,IAI5BC,GAAazE,GAAM,SAAUlC,EAAMC,EAAQ2G,EAAQC,EAAOC,GAC7D,IAAInQ,EAAKoQ,EAAQ7F,EAAQ8F,EAAW3gC,EAAO4gC,GAEtC5gC,EAAQ05B,EAAaC,EAAM,mBAAoBC,IAASiH,mBAEzDL,IACCD,EACFpH,EAASQ,EAAMlD,EAAaO,gBAE5B2C,EAAKP,aAAa,QAASoH,IAI7BE,EAAS/G,EAAKlB,GAAehC,EAAaW,YAC1C9G,EAAMqJ,EAAKlB,GAAehC,EAAaU,SAEpCsJ,IAEFE,GADA9F,EAASlB,EAAKsB,aACQpC,EAAWvS,KAAKuU,EAAOiG,UAAY,KAG1DF,EAAYhH,EAAOgH,WAAe,QAASjH,IAAU+G,GAAUpQ,GAAOqQ,GAEtE3gC,EAAQ,CAAC5a,OAAQu0C,GAEjBR,EAASQ,EAAMlD,EAAaI,cAEzB+J,IACFl8B,aAAaq8B,GACbA,EAAuBrkC,EAAWwgC,GAAiB,MACnD3D,EAAoBI,EAAMoG,IAAuB,IAG/CY,GACFztC,EAAQlR,KAAK64C,EAAOmG,qBAAqB,UAAWZ,IAGlDM,EACF/G,EAAKP,aAAa,SAAUsH,GACnBpQ,IAAQqQ,IACdhE,EAAUrW,KAAKqT,EAAKmH,UACtBb,GAAgBtG,EAAMrJ,GAEtBqJ,EAAKrJ,IAAMA,GAIVmQ,IAAUC,GAAUC,IACtBzG,EAAeP,EAAM,CAACrJ,IAAKA,KAI1BqJ,EAAKmF,kBACAnF,EAAKmF,UAEbzF,EAAYM,EAAMlD,EAAaE,WAE/BuE,GAAI,WAEH,IAAI+F,EAAWtH,EAAKuH,UAAYvH,EAAKwH,aAAe,EAE/CP,IAAaK,IACbA,GACH9H,EAASQ,EAAMlD,EAAaQ,iBAE7B4I,GAAmB7/B,GACnB25B,EAAKmG,YAAa,EAClBpjC,GAAW,WACN,eAAgBi9B,UACZA,EAAKmG,aAEX,IAEgB,QAAhBnG,EAAKyH,SACRpE,OAEC,MAOAgC,GAAgB,SAAUrF,GAC7B,IAAIA,EAAKmF,UAAT,CACA,IAAIlF,EAEA6G,EAAQ/D,EAAOpW,KAAKqT,EAAKmH,UAGzBN,EAAQC,IAAU9G,EAAKlB,GAAehC,EAAaY,YAAcsC,EAAKlB,GAAe,UACrF8H,EAAkB,QAATC,IAERD,GAAWd,IAAgBgB,IAAU9G,EAAKlB,GAAe,SAAUkB,EAAK+G,QAAY/G,EAAKuH,UAAalI,EAASW,EAAMlD,EAAaM,cAAeiC,EAASW,EAAMlD,EAAaE,cAElLiD,EAASF,EAAaC,EAAM,kBAAkBC,OAE3C2G,GACDc,EAAUC,WAAW3H,GAAM,EAAMA,EAAKoB,aAGxCpB,EAAKmF,WAAY,EACjB9B,IAEAsD,GAAW3G,EAAMC,EAAQ2G,EAAQC,EAAOC,MAGrCc,GAAcjF,GAAS,WAC1B7F,EAAakB,SAAW,EACxBiI,QAGG4B,GAA2B,WACF,GAAzB/K,EAAakB,WACflB,EAAakB,SAAW,GAEzB4J,MAGGE,GAAS,WACThC,IACA7nC,EAAKC,MAAQ6pC,EAAU,IACzBhlC,EAAW+kC,GAAQ,MAKpBhC,GAAc,EAEdhJ,EAAakB,SAAW,EAExBiI,KAEAlH,EAAiB,SAAU8I,IAA0B,MAG/C,CACNr6C,EAAG,WACFu6C,EAAU9pC,EAAKC,MAEf2+B,EAAUgE,SAAW3W,EAASoU,uBAAuBxB,EAAaE,WAClE+I,EAAe7b,EAASoU,uBAAuBxB,EAAaE,UAAY,IAAMF,EAAaK,cAE3F4B,EAAiB,SAAUkH,IAAwB,GAEnDlH,EAAiB,SAAUkH,IAAwB,GAEnDlH,EAAiB,YAAY,SAAU72C,GACtC,GAAIA,EAAE8/C,UAAW,CAChB,IAAIC,EAAkB/d,EAASge,iBAAiB,IAAMpL,EAAaI,cAE/D+K,EAAgB5+C,QAAU4+C,EAAgB1uC,SAC7CylC,GAAsB,WACrBiJ,EAAgB1uC,SAAS,SAAU4uC,GAC9BA,EAAIZ,UACPlC,GAAc8C,aAQjB/4C,EAAOg5C,iBACT,IAAIA,iBAAkBnC,IAAyB9lC,QAASs+B,EAAS,CAAC4J,WAAW,EAAMC,SAAS,EAAMC,YAAY,KAE9G9J,EAAQI,GAAmB,kBAAmBoH,IAAwB,GACtExH,EAAQI,GAAmB,kBAAmBoH,IAAwB,GACtEuC,YAAYvC,GAAwB,MAGrClH,EAAiB,aAAckH,IAAwB,GAGvD,CAAC,QAAS,YAAa,QAAS,OAAQ,gBAAiB,gBAAgB1sC,SAAQ,SAAS5I,GACzFu5B,EAAS2U,GAAmBluC,EAAMs1C,IAAwB,MAGvD,QAAQtZ,KAAKzC,EAASue,YACzBX,MAEA/I,EAAiB,OAAQ+I,IACzB5d,EAAS2U,GAAmB,mBAAoBoH,IAChDljC,EAAW+kC,GAAQ,MAGjBjL,EAAUgE,SAASx3C,QACrBm7C,KACAjD,EAAIU,YAEJgE,MAGFyC,WAAYzC,GACZ0C,OAAQtD,GACRuD,MAAOf,KAKLH,GAGCmB,EAAc3G,GAAM,SAASlC,EAAMkB,EAAQ76B,EAAO86B,GACrD,IAAI/K,EAASpuC,EAAG6uC,EAMhB,GALAmJ,EAAKqB,gBAAkBF,EACvBA,GAAS,KAETnB,EAAKP,aAAa,QAAS0B,GAExBjC,EAAWvS,KAAKuU,EAAOiG,UAAY,IAErC,IAAIn/C,EAAI,EAAG6uC,GADXT,EAAU8K,EAAOmG,qBAAqB,WACbh+C,OAAQrB,EAAI6uC,EAAK7uC,IACzCouC,EAAQpuC,GAAGy3C,aAAa,QAAS0B,GAI/B96B,EAAM45B,OAAO6I,UAChBvI,EAAeP,EAAM35B,EAAM45B,WASzB8I,EAAiB,SAAU/I,EAAM8I,EAAU3H,GAC9C,IAAI96B,EACA66B,EAASlB,EAAKsB,WAEfJ,IACFC,EAAQF,EAASjB,EAAMkB,EAAQC,IAC/B96B,EAAQ05B,EAAaC,EAAM,kBAAmB,CAACmB,MAAOA,EAAO2H,WAAYA,KAE/D5B,mBACT/F,EAAQ96B,EAAM45B,OAAOkB,QAETA,IAAUnB,EAAKqB,iBAC1BwH,EAAY7I,EAAMkB,EAAQ76B,EAAO86B,KAkBjC6H,EAA+BrG,GAZT,WACzB,IAAI36C,EACA6uC,EAAMoS,EAAe5/C,OACzB,GAAGwtC,EAGF,IAFA7uC,EAAI,EAEEA,EAAI6uC,EAAK7uC,IACd+gD,EAAeE,EAAejhD,OAO1B,CACNwF,EAAG,WACFy7C,EAAiB/e,EAASoU,uBAAuBxB,EAAaO,gBAC9D0B,EAAiB,SAAUiK,IAE5BN,WAAYM,EACZrB,WAAYoB,IAIVlL,EAAO,YACNA,EAAK71C,GAAKkiC,EAASoU,yBACtBT,EAAK71C,GAAI,EACT0/C,EAAUl6C,IACVs1C,EAAOt1C,MAzEO,IACXy7C,EAEAJ,EAwBAE,EA8BAC,EAnbQ,IACRjD,EAAcD,EAAasB,EAAsBpJ,EAAU+J,EAE3DrC,EAAME,EAAM9B,EAAOE,EAAQC,EAASF,EAAUN,EAE9CV,EACAC,EAEAC,EAEAE,EACAC,EAEAC,EACAC,GAEAC,GAOAC,GAQAE,GA0BAc,GA2EAyB,GAEAC,GAcAG,GACAD,GAIAE,GAWAG,GAcAE,GAmFAtB,GAwBAuC,GAKAC,GAOAC,GA5aK,IACLlG,GAASC,GACTL,GACAC,GACAC,GAEA/5B,GAeAm6B,GA4kBL,OAvBA/+B,GAAW,WACP+5B,EAAae,MACfA,OAIFhB,EAAY,CAIX0B,IAAKzB,EACL4K,UAAWA,EACX5E,OAAQA,EACRjF,KAAMA,EACNqL,GAAI3I,EACJ4I,GAAI3J,EACJ4J,GAAI1J,EACJ2J,GAAIhK,EACJiK,KAAMvJ,EACNwJ,GAAItI,EACJM,IAAKA,GAvyBU5E,CAAQvtC,EAAQA,EAAO86B,SAAUjsB,MACjD7O,EAAOwtC,UAAYA,EACa3yC,EAAOC,UACtCD,EAAOC,QAAU0yC,GAJnB,CAMmB,oBAAVxtC,OACHA,OAAS,2CCPf,IAAIo6C,EAAkB,EAAQ,KAC1B7U,EAAe,EAAQ,KA0B3B1qC,EAAOC,QAVP,SAASutC,EAAY7uC,EAAOynB,EAAOo5B,EAAS3T,EAAY4T,GACtD,OAAI9gD,IAAUynB,IAGD,MAATznB,GAA0B,MAATynB,IAAmBskB,EAAa/rC,KAAW+rC,EAAatkB,GACpEznB,GAAUA,GAASynB,GAAUA,EAE/Bm5B,EAAgB5gD,EAAOynB,EAAOo5B,EAAS3T,EAAY2B,EAAaiS,gBCxBzE,IAIIz4C,EAJY,EAAQ,IAIdyqC,CAHC,EAAQ,IAGO,OAE1BzxC,EAAOC,QAAU+G,aCNjB,IAAI6jC,EAAa,EAAQ,KACrB5kC,EAAW,EAAQ,IAmCvBjG,EAAOC,QAVP,SAAoBtB,GAClB,IAAKsH,EAAStH,GACZ,OAAO,EAIT,IAAIuzC,EAAMrH,EAAWlsC,GACrB,MA5BY,qBA4BLuzC,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,cCjC/D,IAAIwN,EAAgB,EAAQ,KACxBC,EAAiB,EAAQ,KACzBC,EAAc,EAAQ,KACtBC,EAAc,EAAQ,KACtBC,EAAc,EAAQ,KAS1B,SAASC,EAAS55B,GAChB,IAAIhN,GAAS,EACT/Z,EAAoB,MAAX+mB,EAAkB,EAAIA,EAAQ/mB,OAG3C,IADAuB,KAAK4iB,UACIpK,EAAQ/Z,GAAQ,CACvB,IAAIumB,EAAQQ,EAAQhN,GACpBxY,KAAKyK,IAAIua,EAAM,GAAIA,EAAM,KAK7Bo6B,EAASngD,UAAU2jB,MAAQm8B,EAC3BK,EAASngD,UAAkB,OAAI+/C,EAC/BI,EAASngD,UAAUsL,IAAM00C,EACzBG,EAASngD,UAAU2f,IAAMsgC,EACzBE,EAASngD,UAAUwL,IAAM00C,EAEzB9/C,EAAOC,QAAU8/C,OCdjB//C,EAAOC,QAVP,SAAoBmL,GAClB,IAAI+N,GAAS,EACTrW,EAAStD,MAAM4L,EAAIyb,MAKvB,OAHAzb,EAAIkE,SAAQ,SAAS3Q,GACnBmE,IAASqW,GAASxa,KAEbmE,QCKT9C,EAAOC,QAXP,SAAmBoM,EAAOuD,GAKxB,IAJA,IAAIuJ,GAAS,EACT/Z,EAASwQ,EAAOxQ,OAChB4gD,EAAS3zC,EAAMjN,SAEV+Z,EAAQ/Z,GACfiN,EAAM2zC,EAAS7mC,GAASvJ,EAAOuJ,GAEjC,OAAO9M,cChBT,IAAI4zC,EAAc,EAAQ,KACtBC,EAAY,EAAQ,KAMpB7+C,EAHc5C,OAAOmB,UAGcyB,qBAGnC8+C,EAAmB1hD,OAAO2C,sBAS1Bg/C,EAAcD,EAA+B,SAAS75C,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS7H,OAAO6H,GACT25C,EAAYE,EAAiB75C,IAAS,SAASipB,GACpD,OAAOluB,EAAqBjD,KAAKkI,EAAQipB,QANR2wB,EAUrClgD,EAAOC,QAAUmgD,OCKjBpgD,EAAOC,QALP,SAAkBtB,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,uBCYvBqB,EAAOC,QANP,SAAmB6F,GACjB,OAAO,SAASnH,GACd,OAAOmH,EAAKnH,oBCThB,IAAI0hD,EAAW,EAAQ,KACnBC,EAAQ,EAAQ,KAsBpBtgD,EAAOC,QAZP,SAAiBqG,EAAQ2zB,GAMvB,IAHA,IAAI9gB,EAAQ,EACR/Z,GAHJ66B,EAAOomB,EAASpmB,EAAM3zB,IAGJlH,OAED,MAAVkH,GAAkB6S,EAAQ/Z,GAC/BkH,EAASA,EAAOg6C,EAAMrmB,EAAK9gB,OAE7B,OAAQA,GAASA,GAAS/Z,EAAUkH,OAASS,cCpB/C,IAAItH,EAAU,EAAQ,IAClB6uB,EAAW,EAAQ,KAGnBiyB,EAAe,mDACfC,EAAgB,QAuBpBxgD,EAAOC,QAbP,SAAetB,EAAO2H,GACpB,GAAI7G,EAAQd,GACV,OAAO,EAET,IAAIyV,SAAczV,EAClB,QAAY,UAARyV,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATzV,IAAiB2vB,EAAS3vB,MAGvB6hD,EAAc9d,KAAK/jC,KAAW4hD,EAAa7d,KAAK/jC,IAC1C,MAAV2H,GAAkB3H,KAASF,OAAO6H,gBCzBvC,IAAIslC,EAAkB,EAAQ,KAC1B5jB,EAAK,EAAQ,KAMbhpB,EAHcP,OAAOmB,UAGQZ,eAoBjCgB,EAAOC,QARP,SAAqBqG,EAAQxG,EAAKnB,GAChC,IAAI8hD,EAAWn6C,EAAOxG,GAChBd,EAAeZ,KAAKkI,EAAQxG,IAAQkoB,EAAGy4B,EAAU9hD,UACxCoI,IAAVpI,GAAyBmB,KAAOwG,IACnCslC,EAAgBtlC,EAAQxG,EAAKnB,eCvBjC,IAGI+hD,EAHU,EAAQ,IAGHC,CAAQliD,OAAO2H,eAAgB3H,QAElDuB,EAAOC,QAAUygD,aCLjB,IAAI1c,EAAa,EAAQ,KAezBhkC,EAAOC,QANP,SAA0Boe,GACxB,IAAIvb,EAAS,IAAIub,EAAYzd,YAAYyd,EAAYuiC,YAErD,OADA,IAAI5c,EAAWlhC,GAAQsI,IAAI,IAAI44B,EAAW3lB,IACnCvb,qBCJT,IAAI1B,EAAwB3C,OAAO2C,sBAC/BpC,EAAiBP,OAAOmB,UAAUZ,eAClC6hD,EAAmBpiD,OAAOmB,UAAUyB,qBAExC,SAASy/C,EAASpiB,GACjB,GAAIA,MAAAA,EACH,MAAM,IAAIrgC,UAAU,yDAGrB,OAAOI,OAAOigC,GA+Cf1+B,EAAOC,QA5CP,WACC,IACC,IAAKxB,OAAOsC,OACX,OAAO,EAMR,IAAIggD,EAAQ,IAAIziD,OAAO,OAEvB,GADAyiD,EAAM,GAAK,KACkC,MAAzCtiD,OAAOigB,oBAAoBqiC,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACHjjD,EAAI,EAAGA,EAAI,GAAIA,IACvBijD,EAAM,IAAM1iD,OAAO2iD,aAAaljD,IAAMA,EAKvC,GAAwB,eAHXU,OAAOigB,oBAAoBsiC,GAAO10C,KAAI,SAAUrL,GAC5D,OAAO+/C,EAAM//C,MAEH8Y,KAAK,IACf,OAAO,EAIR,IAAImnC,EAAQ,GAIZ,MAHA,uBAAuBC,MAAM,IAAI7xC,SAAQ,SAAU8xC,GAClDF,EAAME,GAAUA,KAGf,yBADE3iD,OAAO4Q,KAAK5Q,OAAOsC,OAAO,GAAImgD,IAAQnnC,KAAK,IAM9C,MAAOpF,GAER,OAAO,GAIQ0sC,GAAoB5iD,OAAOsC,OAAS,SAAUS,EAAQqe,GAKtE,IAJA,IAAI2Y,EAEA8oB,EADA7oB,EAAKqoB,EAASt/C,GAGTR,EAAI,EAAGA,EAAI7B,UAAUC,OAAQ4B,IAAK,CAG1C,IAAK,IAAIlB,KAFT04B,EAAO/5B,OAAOU,UAAU6B,IAGnBhC,EAAeZ,KAAKo6B,EAAM14B,KAC7B24B,EAAG34B,GAAO04B,EAAK14B,IAIjB,GAAIsB,EAAuB,CAC1BkgD,EAAUlgD,EAAsBo3B,GAChC,IAAK,IAAIz6B,EAAI,EAAGA,EAAIujD,EAAQliD,OAAQrB,IAC/B8iD,EAAiBziD,KAAKo6B,EAAM8oB,EAAQvjD,MACvC06B,EAAG6oB,EAAQvjD,IAAMy6B,EAAK8oB,EAAQvjD,MAMlC,OAAO06B,2BCtFR,IAAI8oB,EAAQ,EAAQ,IAChBC,EAAsB,EAAQ,KAC9BC,EAAe,EAAQ,KAEvBC,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsBC,EAASjjD,IACjC4iD,EAAM5iB,YAAYijB,IAAYL,EAAM5iB,YAAYijB,EAAQ,mBAC3DA,EAAQ,gBAAkBjjD,GA+B9B,IA1BMkjD,EA0BFC,EAAW,CAEbC,aAAc,CACZC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GAGvBL,UAjC8B,oBAAnBM,gBAGmB,oBAAZn1C,SAAuE,qBAA5CvO,OAAOmB,UAAUD,SAASvB,KAAK4O,YAD1E60C,EAAU,EAAQ,MAKbA,GA4BPO,iBAAkB,CAAC,SAA0B/0B,EAAMu0B,GAIjD,OAHAJ,EAAoBI,EAAS,UAC7BJ,EAAoBI,EAAS,gBAEzBL,EAAMxiB,WAAW1R,IACnBk0B,EAAM1iB,cAAcxR,IACpBk0B,EAAMziB,SAASzR,IACfk0B,EAAM7hB,SAASrS,IACfk0B,EAAM/hB,OAAOnS,IACbk0B,EAAM9hB,OAAOpS,GAENA,EAELk0B,EAAMtiB,kBAAkB5R,GACnBA,EAAK+R,OAEVmiB,EAAM3hB,kBAAkBvS,IAC1Bs0B,EAAsBC,EAAS,mDACxBv0B,EAAK1tB,YAEV4hD,EAAMt7C,SAASonB,IAAUu0B,GAAuC,qBAA5BA,EAAQ,iBAC9CD,EAAsBC,EAAS,oBA9CrC,SAAyBS,EAAUC,EAAQC,GACzC,GAAIhB,EAAMliB,SAASgjB,GACjB,IAEE,OADCC,GAAUjd,KAAK7K,OAAO6nB,GAChBd,EAAMnhB,KAAKiiB,GAClB,MAAOpkD,GACP,GAAe,gBAAXA,EAAEyI,KACJ,MAAMzI,EAKZ,OAAQskD,GAAWld,KAAKqI,WAAW2U,GAmCxBG,CAAgBn1B,IAElBA,IAGTo1B,kBAAmB,CAAC,SAA2Bp1B,GAC7C,IAAI00B,EAAephD,KAAKohD,aACpBC,EAAoBD,GAAgBA,EAAaC,kBACjDC,EAAoBF,GAAgBA,EAAaE,kBACjDS,GAAqBV,GAA2C,SAAtBrhD,KAAKgiD,aAEnD,GAAID,GAAsBT,GAAqBV,EAAMliB,SAAShS,IAASA,EAAKjuB,OAC1E,IACE,OAAOimC,KAAK7K,MAAMnN,GAClB,MAAOpvB,GACP,GAAIykD,EAAmB,CACrB,GAAe,gBAAXzkD,EAAEyI,KACJ,MAAM+6C,EAAaxjD,EAAG0C,KAAM,gBAE9B,MAAM1C,GAKZ,OAAOovB,IAOTzM,QAAS,EAETgiC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBC,eAAgB,SAAwBC,GACtC,OAAOA,GAAU,KAAOA,EAAS,MAIrCnB,EAASF,QAAU,CACjBsB,OAAQ,CACN,OAAU,sCAId3B,EAAMjyC,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6B6zC,GACpErB,EAASF,QAAQuB,GAAU,MAG7B5B,EAAMjyC,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+B6zC,GACrErB,EAASF,QAAQuB,GAAU5B,EAAM97B,MAAMi8B,MAGzC1hD,EAAOC,QAAU6hD,OCjHjB9hD,EAAOC,QAJP,SAAkBtB,GAChB,OAAOA,2BCfT,IAAIykD,EAAiB,EAAQ,KAE7BpjD,EAAOC,QAAU4Z,SAASja,UAAUwb,MAAQgoC,0BCF5C,IAGIC,EAHe,EAAQ,IAGLC,CAAa,2BAA2B,KAAS,EACvE,GAAID,EACH,IACCA,EAAgB,GAAI,IAAK,CAAE1kD,MAAO,IACjC,MAAOV,GAERolD,GAAkB,EAIpBrjD,EAAOC,QAAUojD,oBCbjB,IAAIvpC,EAAUxb,OAAOsB,UAAUka,QAC3BypC,EAAkB,OAElBC,EACS,UADTA,EAES,UAGbxjD,EAAOC,QAAU,CACb,QAAWujD,EACXC,WAAY,CACRC,QAAS,SAAU/kD,GACf,OAAOmb,EAAQ1b,KAAKO,EAAO4kD,EAAiB,MAEhDI,QAAS,SAAUhlD,GACf,OAAOL,OAAOK,KAGtB+kD,QAASF,EACTG,QAASH,6DCrBbxjD,EAAOC,QAAU,CAChB2jD,EAAI,EACJC,EAAI,EACJC,EAAI,EACJC,EAAI,4DCHL9jD,EAAQ+jD,UA4BR,SAAmBtmB,EAAM2U,GACvB,MAAM7I,GAAQ,EAAIpM,EAAOxD,QAAQ8D,GACjC,GAAIlzB,MAAM6nC,GAAS,OAAO,EAAIhJ,EAAQ5L,eAAeC,EAAM3D,KAC3D,IAAKsY,EAEH,OAAO7I,EAET,MAAMya,EAAaza,EAAMK,UAUnBqa,GAAoB,EAAI7a,EAAQ5L,eAAeC,EAAM8L,EAAM2a,WACjED,EAAkBE,SAAS5a,EAAM6a,WAAahS,EAAS,EAAG,GAC1D,MAAMiS,EAAcJ,EAAkBra,UACtC,OAAIoa,GAAcK,EAGTJ,GASP1a,EAAM+a,YACJL,EAAkBM,cAClBN,EAAkBG,WAClBJ,GAEKza,IAhEX,IAAIpM,EAAS,EAAQ,IACjBiM,EAAU,EAAQ,4DCDlBob,OAA8B19C,EAKlC,IACE09C,EAAUt/C,OACV,MAAOlH,IAYF,SAASymD,EAAUC,GACxB,IAAI,UAA6B,IAAZF,EAArB,CAGE,IAAMlO,EAAKoO,EAEX,OAAOpO,GAAMA,EAAGqO,eAAiBrO,EAAGqO,cAAcC,YAActO,EAAGqO,cAAcC,YAAcJ,iDCkE/FK,UA3FSC,EAIL,EAJKA,EASC,EATDA,EAcE,EAkETC,EAAwC,oBAAdjlB,WAA6B,UAAU2C,KAAK3C,UAAUkZ,WAElFgM,EAAkC,GAGtC,IACEA,EAAU9/C,OACV,UAaF,iBA4BE,WAAY+/C,GAzBJ,KAAAC,OAAmB,GACnB,KAAAC,gBAA4B,GAE5B,KAAAC,eAA2B,GAC3B,KAAAC,SAAW,EACX,KAAAC,gBAA6C,GAC7C,KAAAC,kBAAoC,GAEpC,KAAAC,iBAAsE,GAkB5E9kD,KAAK+kD,SAAU,SACbC,cAAeZ,EACfa,cAAe,MACfC,eAAW9+C,EACX++C,iBAAa/+C,GACVm+C,GAGLvkD,KAAK4kD,gBAAkB5kD,KAAK+kD,QAAQK,gBAAkB,GA2M1D,OAhOgB,EAAAC,YAAd,iBAGE,KAFAlB,EAAcG,EAA0B,iBAEnBH,EAAYmB,mBAAqBnB,EAAYmB,kBAAkBrB,gBAAkB3kB,SAAW,CAC/G,IAAMimB,GAAsB,QAAP,EAAAjB,SAAO,eAAEkB,eAAgB,GAE9CrB,EAAcG,EAA0B,eAAI,IAAImB,EAAWF,EAAaG,aAG1E,OAAOvB,GAkBF,YAAAwB,UAAP,SAAiBpB,GACfvkD,KAAK+kD,SAAU,oBACV/kD,KAAK+kD,SACLR,IASA,YAAAqB,QAAP,SAAe9+C,GACb9G,KAAK6kD,kBAAkBvhD,KAAKwD,IAQvB,YAAA++C,aAAP,SAAoBz6B,GACV,IAAA85B,EAAA,aAAAA,UAGR,OAAUA,EAAYA,EAAY,IAAM,KAFzB95B,GAAeprB,KAAK+kD,QAAQE,eAEQ,IAAIjlD,KAAK2kD,YAOvD,YAAAmB,eAAP,SAAsBr+B,EAAmBtoB,EAAaoM,EAAgBw6C,GACpE/lD,KAAK4kD,gBAAgBzlD,GAAOsoB,EAC5BznB,KAAK8kD,iBAAiBr9B,GAAa,CACjClc,KAAI,EACJw6C,MAAK,IAQF,YAAAC,iBAAP,SAAwB7mD,GACtB,OAAOa,KAAK4kD,gBAAgBzlD,IAMvB,YAAA8mD,kBAAP,WACE,OAAOjmD,KAAK4kD,iBAOP,YAAAsB,kBAAP,SAAyBz+B,GACvB,IAAMzC,EAAQhlB,KAAK8kD,iBAAiBr9B,GAEpC,OAAOzC,GAASA,EAAMzZ,MAOjB,YAAA46C,2BAAP,SAAkC1+B,GAChC,IAAMzC,EAAQhlB,KAAK8kD,iBAAiBr9B,GAEpC,OAAOzC,GAASA,EAAM+gC,OAOjB,YAAAK,WAAP,SAAkBC,EAAcC,GACtB,IACFriC,EADE,aAAA+gC,gBAC0BZ,EAAqBpkD,KAAKumD,wBAAqBngD,EAMjF,GAJIkgD,GACFtmD,KAAKykD,gBAAgBnhD,KAAK+iD,GAGxBpiC,EACF,OAAQjkB,KAAK+kD,QAAQC,eACnB,KAAKZ,EACK,IAAAoC,EAAA,EAAAA,MAER,IACGA,EAAwBJ,WAAWC,EAAOG,EAAwBC,SAAShoD,QAC5E,MAAOnB,IAKT,MAEF,KAAK8mD,EACHngC,EAAQyiC,YAAYpnB,SAASqnB,eAAeN,SAIhDrmD,KAAKwkD,OAAOlhD,KAAK+iD,GAGfrmD,KAAK+kD,QAAQ6B,cACf5mD,KAAK+kD,QAAQ6B,aAAaP,IAQvB,YAAAQ,SAAP,SAAgBC,GACd,OACGA,EAAwB9mD,KAAKykD,gBAAgBrrC,KAAK,IAAM,IAAMpZ,KAAKwkD,OAAOprC,KAAK,IAAMpZ,KAAK0kD,eAAetrC,KAAK,KAQ5G,YAAA2tC,MAAP,WACE/mD,KAAKwkD,OAAS,GACdxkD,KAAK0kD,eAAiB,GACtB1kD,KAAK2kD,SAAW,EAChB3kD,KAAK8kD,iBAAmB,GACxB9kD,KAAK4kD,gBAAkB,GAEvB5kD,KAAK6kD,kBAAkBl2C,SAAQ,SAAC7H,GAAyB,OAAAA,QAIpD,YAAAkgD,UAAP,WACEhnD,KAAK4kD,gBAAkB,IAGjB,YAAA2B,iBAAR,sBAWE,OAVKvmD,KAAKinD,eAAqC,oBAAb3nB,WAChCt/B,KAAKinD,cAAgBjnD,KAAKknD,sBAErB7C,GAEH7/C,OAAO4vC,uBAAsB,WAC3B,EAAK6S,mBAAgB7gD,MAIpBpG,KAAKinD,eAGN,YAAAC,oBAAR,WACE,IAAMC,EAAwB7nB,SAAS6nB,KACjCC,EAAe9nB,SAASjO,cAAc,SACxCg2B,EAAkC,KAEtCD,EAAavS,aAAa,oBAAqB,QAEvC,IAAAsQ,EAAA,aAAAA,YAMR,GALIA,GACEA,EAAYmC,OACdF,EAAavS,aAAa,QAASsQ,EAAYmC,OAG/CtnD,KAAKslD,kBAGP+B,EAAqBrnD,KAAKslD,kBAAkBiC,uBACvC,CACL,IAAMC,EAAsCxnD,KAAKynD,2BAG/CJ,EADEG,EACmBA,EAAoBD,mBAEpBJ,EAAKO,WAAW,GAOzC,OAHAP,EAAMQ,aAAaP,EAAcD,EAAMS,SAASP,GAAsBA,EAAqB,MAC3FrnD,KAAKslD,kBAAoB8B,EAElBA,GAGD,YAAAK,yBAAR,WACE,IAAMN,EAAwB7nB,SAAS6nB,KACvC,OAAIA,EACKA,EAAKU,cAAc,4BAErB,MAEX,EAhPA,0DC5FIC,GAA+B,EAC/BC,EAAgB,EACdC,EAAe,CAAEC,OAAO,GACxBC,EAAmB,GACrBC,EAA8B,oBAAZ31B,QAA0B,KAAOA,QAmBhD,SAAS41B,IACdL,IAiDK,SAASM,EACd9qC,EACA+qC,EACAC,GAGA,QAJA,IAAAD,IAAAA,EAAA,UACA,IAAAC,IAAAA,GAAA,IAGKJ,EACH,OAAO5qC,EAGT,IAAKuqC,EAA8B,CACjC,IAAMU,EAAa,IAAWnD,cAE1BmD,GAAcA,EAAW5C,SAC3B,IAAWP,cAAcO,QAAQwC,GAEnCN,GAA+B,EAGjC,IAAIW,EACAC,EAAY,EACZC,EAAoBZ,EAExB,OAAO,eAA0B,sDAC/B,IAAIa,EAAmBH,QAGRriD,IAAbqiD,GACAE,IAAsBZ,GACrBO,EAAe,GAAKI,EAAYJ,KAEjCG,EAAWI,IACXH,EAAY,EACZC,EAAoBZ,GAGtBa,EAAcH,EAGd,IAAK,IAAIrrD,EAAI,EAAGA,EAAImO,EAAK9M,OAAQrB,IAAK,CACpC,IAAIsB,EAAMoqD,EAAcv9C,EAAKnO,IAExBwrD,EAAYj9C,IAAIiT,IAAIlgB,IACvBkqD,EAAYj9C,IAAIlB,IAAI/L,EAAKmqD,KAG3BD,EAAcA,EAAYj9C,IAAIpB,IAAI7L,GAYpC,OATKkqD,EAAYvqD,eAAe,WAC9BuqD,EAAY5qD,MAAQuf,EAAE,aAAIhS,GAC1Bm9C,MAGEH,GAAsD,OAAtBK,EAAY5qD,YAAwCoI,IAAtBwiD,EAAY5qD,QAC5E4qD,EAAY5qD,MAAQuf,EAAE,aAAIhS,IAGrBq9C,EAAY5qD,OA8CvB,SAAS8qD,EAAc/qB,GACrB,OAAKA,EAEqB,iBAARA,GAAmC,mBAARA,EACpCA,GACGmqB,EAAYnqB,KACtBmqB,EAAYnqB,GAAO,CAAEA,IAAG,IAGnBmqB,EAAYnqB,IAPViqB,EAUX,SAASa,IACP,MAAO,CACLl9C,IAAKw8C,EAAW,IAAIA,EAAa,6BCzMrC,IAAI3mB,EAAO,EAAQ,IAGf6H,EAA4C/pC,IAAYA,EAAQgqC,UAAYhqC,EAG5EiqC,EAAaF,GAA4ChqC,IAAWA,EAAOiqC,UAAYjqC,EAMvFmqC,EAHgBD,GAAcA,EAAWjqC,UAAY+pC,EAG5B7H,EAAKgI,YAASpjC,EACvC2iD,EAAcvf,EAASA,EAAOuf,iBAAc3iD,EAqBhD/G,EAAOC,QAXP,SAAqBm/B,EAAQuqB,GAC3B,GAAIA,EACF,OAAOvqB,EAAOnzB,QAEhB,IAAI7M,EAASggC,EAAOhgC,OAChB0D,EAAS4mD,EAAcA,EAAYtqD,GAAU,IAAIggC,EAAOx+B,YAAYxB,GAGxE,OADAggC,EAAOwqB,KAAK9mD,GACLA,UC/BT,SAAS8lB,EAAQzkB,GAGf,OAAOnE,EAAOC,QAAU2oB,EAAU,mBAAqB1qB,QAAU,iBAAmBA,OAAO2F,SAAW,SAAUM,GAC9G,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAK,mBAAqBjG,QAAUiG,EAAEvD,cAAgB1C,QAAUiG,IAAMjG,OAAO0B,UAAY,gBAAkBuE,GACjHnE,EAAOC,QAAQurB,YAAa,EAAMxrB,EAAOC,QAAiB,QAAID,EAAOC,QAAS2oB,EAAQzkB,GAE3FnE,EAAOC,QAAU2oB,EAAS5oB,EAAOC,QAAQurB,YAAa,EAAMxrB,EAAOC,QAAiB,QAAID,EAAOC,mBCT/FD,EAAOC,QAAU,EAAjB,gBCAA,IAAI4pD,EAAU,EAAQ,KAkCtB7pD,EAAOC,QAJP,SAAaqG,EAAQ2zB,EAAMt7B,GACzB,OAAiB,MAAV2H,EAAiBA,EAASujD,EAAQvjD,EAAQ2zB,EAAMt7B,2BC/BvD,IAoBGmrD,EAjBH9pD,EAAOC,SAiBJ6pD,EAAWA,GAAa,SAAUhnC,EAAM/b,GAExC,IAAIgjD,EA4BJ,GAzBsB,oBAAX5kD,QAA0BA,OAAO4kD,SACxCA,EAAS5kD,OAAO4kD,QAIA,oBAAT3kD,MAAwBA,KAAK2kD,SACpCA,EAAS3kD,KAAK2kD,QAIQ,oBAAfC,YAA8BA,WAAWD,SAChDA,EAASC,WAAWD,SAInBA,GAA4B,oBAAX5kD,QAA0BA,OAAO8kD,WACnDF,EAAS5kD,OAAO8kD,WAIfF,QAA4B,IAAX,EAAAzmD,GAA0B,EAAAA,EAAOymD,SACnDA,EAAS,EAAAzmD,EAAOymD,SAIfA,EACD,IACIA,EAAS,EAAQ,MACnB,MAAOp1C,IAQb,IAAIu1C,EAAwB,WACxB,GAAIH,EAAQ,CAER,GAAsC,mBAA3BA,EAAOI,gBACd,IACI,OAAOJ,EAAOI,gBAAgB,IAAIxkB,YAAY,IAAI,GACpD,MAAOhxB,IAIb,GAAkC,mBAAvBo1C,EAAOK,YACd,IACI,OAAOL,EAAOK,YAAY,GAAGC,cAC/B,MAAO11C,KAIjB,MAAM,IAAI/O,MAAM,wEAOhB/E,EAASpC,OAAOoC,QAAW,WAC3B,SAASypD,KAET,OAAO,SAAUh5C,GACb,IAAIi5C,EAQJ,OANAD,EAAE1qD,UAAY0R,EAEdi5C,EAAU,IAAID,EAEdA,EAAE1qD,UAAY,KAEP2qD,GAZe,GAmB1BC,EAAI,GAKJC,EAAQD,EAAEE,IAAM,GAKhBC,EAAOF,EAAME,KAGN,CAmBHxqB,OAAQ,SAAUyqB,GAEd,IAAIL,EAAU1pD,EAAOF,MAoBrB,OAjBIiqD,GACAL,EAAQM,MAAMD,GAIbL,EAAQvrD,eAAe,SAAW2B,KAAKizC,OAAS2W,EAAQ3W,OACzD2W,EAAQ3W,KAAO,WACX2W,EAAQO,OAAOlX,KAAKl0C,MAAMiB,KAAMxB,aAKxCorD,EAAQ3W,KAAKh0C,UAAY2qD,EAGzBA,EAAQO,OAASnqD,KAEV4pD,GAeX1pD,OAAQ,WACJ,IAAI2O,EAAW7O,KAAKw/B,SAGpB,OAFA3wB,EAASokC,KAAKl0C,MAAM8P,EAAUrQ,WAEvBqQ,GAeXokC,KAAM,aAcNiX,MAAO,SAAUpsC,GACb,IAAK,IAAI9R,KAAgB8R,EACjBA,EAAWzf,eAAe2N,KAC1BhM,KAAKgM,GAAgB8R,EAAW9R,IAKpC8R,EAAWzf,eAAe,cAC1B2B,KAAKhB,SAAW8e,EAAW9e,WAanCqkB,MAAO,WACH,OAAOrjB,KAAKizC,KAAKh0C,UAAUugC,OAAOx/B,QAW1CoqD,EAAYN,EAAMM,UAAYJ,EAAKxqB,OAAO,CAa1CyT,KAAM,SAAUoX,EAAOC,GACnBD,EAAQrqD,KAAKqqD,MAAQA,GAAS,GAG1BrqD,KAAKsqD,SADLA,GAAYlkD,EACIkkD,EAEe,EAAfD,EAAM5rD,QAiB9BO,SAAU,SAAU4iD,GAChB,OAAQA,GAAW2I,GAAKxd,UAAU/sC,OActCiK,OAAQ,SAAUugD,GAEd,IAAIC,EAAYzqD,KAAKqqD,MACjBK,EAAYF,EAAUH,MACtBM,EAAe3qD,KAAKsqD,SACpBM,EAAeJ,EAAUF,SAM7B,GAHAtqD,KAAK6qD,QAGDF,EAAe,EAEf,IAAK,IAAIvtD,EAAI,EAAGA,EAAIwtD,EAAcxtD,IAAK,CACnC,IAAI0tD,EAAYJ,EAAUttD,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IAC7DqtD,EAAWE,EAAevtD,IAAO,IAAM0tD,GAAa,IAAOH,EAAevtD,GAAK,EAAK,OAIxF,IAAK,IAAI6G,EAAI,EAAGA,EAAI2mD,EAAc3mD,GAAK,EACnCwmD,EAAWE,EAAe1mD,IAAO,GAAKymD,EAAUzmD,IAAM,GAM9D,OAHAjE,KAAKsqD,UAAYM,EAGV5qD,MAUX6qD,MAAO,WAEH,IAAIR,EAAQrqD,KAAKqqD,MACbC,EAAWtqD,KAAKsqD,SAGpBD,EAAMC,IAAa,IAAM,YAAe,GAAMA,EAAW,EAAK,EAC9DD,EAAM5rD,OAAS0jB,EAAK4oC,KAAKT,EAAW,IAYxCjnC,MAAO,WACH,IAAIA,EAAQ2mC,EAAK3mC,MAAM5lB,KAAKuC,MAG5B,OAFAqjB,EAAMgnC,MAAQrqD,KAAKqqD,MAAM/+C,MAAM,GAExB+X,GAgBX2nC,OAAQ,SAAUC,GAGd,IAFA,IAAIZ,EAAQ,GAEHjtD,EAAI,EAAGA,EAAI6tD,EAAQ7tD,GAAK,EAC7BitD,EAAM/mD,KAAKimD,KAGf,OAAO,IAAIa,EAAUnX,KAAKoX,EAAOY,MAOrCC,EAAQrB,EAAEsB,IAAM,GAKhBZ,EAAMW,EAAMX,IAAM,CAclBxd,UAAW,SAAUyd,GAOjB,IALA,IAAIH,EAAQG,EAAUH,MAClBC,EAAWE,EAAUF,SAGrBc,EAAW,GACNhuD,EAAI,EAAGA,EAAIktD,EAAUltD,IAAK,CAC/B,IAAIiuD,EAAQhB,EAAMjtD,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IACrDguD,EAAS9nD,MAAM+nD,IAAS,GAAGrsD,SAAS,KACpCosD,EAAS9nD,MAAa,GAAP+nD,GAAarsD,SAAS,KAGzC,OAAOosD,EAAShyC,KAAK,KAgBzBygB,MAAO,SAAUyxB,GAMb,IAJA,IAAIC,EAAeD,EAAO7sD,OAGtB4rD,EAAQ,GACHjtD,EAAI,EAAGA,EAAImuD,EAAcnuD,GAAK,EACnCitD,EAAMjtD,IAAM,IAAMohB,SAAS8sC,EAAOE,OAAOpuD,EAAG,GAAI,KAAQ,GAAMA,EAAI,EAAK,EAG3E,OAAO,IAAIgtD,EAAUnX,KAAKoX,EAAOkB,EAAe,KAOpDE,EAASP,EAAMO,OAAS,CAcxB1e,UAAW,SAAUyd,GAOjB,IALA,IAAIH,EAAQG,EAAUH,MAClBC,EAAWE,EAAUF,SAGrBoB,EAAc,GACTtuD,EAAI,EAAGA,EAAIktD,EAAUltD,IAAK,CAC/B,IAAIiuD,EAAQhB,EAAMjtD,IAAM,KAAQ,GAAMA,EAAI,EAAK,EAAM,IACrDsuD,EAAYpoD,KAAK3F,OAAO2iD,aAAa+K,IAGzC,OAAOK,EAAYtyC,KAAK,KAgB5BygB,MAAO,SAAU8xB,GAMb,IAJA,IAAIC,EAAkBD,EAAUltD,OAG5B4rD,EAAQ,GACHjtD,EAAI,EAAGA,EAAIwuD,EAAiBxuD,IACjCitD,EAAMjtD,IAAM,KAAiC,IAA1BuuD,EAAU9rB,WAAWziC,KAAe,GAAMA,EAAI,EAAK,EAG1E,OAAO,IAAIgtD,EAAUnX,KAAKoX,EAAOuB,KAOrCC,EAAOX,EAAMW,KAAO,CAcpB9e,UAAW,SAAUyd,GACjB,IACI,OAAOzmB,mBAAmB+nB,OAAOL,EAAO1e,UAAUyd,KACpD,MAAOltD,GACL,MAAM,IAAI2H,MAAM,0BAiBxB40B,MAAO,SAAUkyB,GACb,OAAON,EAAO5xB,MAAMmyB,SAAS/nB,mBAAmB8nB,OAWpDE,EAAyBnC,EAAMmC,uBAAyBjC,EAAKxqB,OAAO,CAQpEunB,MAAO,WAEH/mD,KAAK4kB,MAAQ,IAAIwlC,EAAUnX,KAC3BjzC,KAAKksD,YAAc,GAavBC,QAAS,SAAUz/B,GAEI,iBAARA,IACPA,EAAOm/B,EAAKhyB,MAAMnN,IAItB1sB,KAAK4kB,MAAM3a,OAAOyiB,GAClB1sB,KAAKksD,aAAex/B,EAAK49B,UAiB7B8B,SAAU,SAAUC,GAChB,IAAIC,EAGA5/B,EAAO1sB,KAAK4kB,MACZ2nC,EAAY7/B,EAAK29B,MACjBmC,EAAe9/B,EAAK49B,SACpBmC,EAAYzsD,KAAKysD,UAIjBC,EAAeF,GAHc,EAAZC,GAcjBE,GARAD,EAFAL,EAEelqC,EAAK4oC,KAAK2B,GAIVvqC,EAAKC,KAAoB,EAAfsqC,GAAoB1sD,KAAK4sD,eAAgB,IAIrCH,EAG7BI,EAAc1qC,EAAKE,IAAkB,EAAdsqC,EAAiBH,GAG5C,GAAIG,EAAa,CACb,IAAK,IAAItN,EAAS,EAAGA,EAASsN,EAAatN,GAAUoN,EAEjDzsD,KAAK8sD,gBAAgBP,EAAWlN,GAIpCiN,EAAiBC,EAAUnxC,OAAO,EAAGuxC,GACrCjgC,EAAK49B,UAAYuC,EAIrB,OAAO,IAAIzC,EAAUnX,KAAKqZ,EAAgBO,IAY9CxpC,MAAO,WACH,IAAIA,EAAQ2mC,EAAK3mC,MAAM5lB,KAAKuC,MAG5B,OAFAqjB,EAAMuB,MAAQ5kB,KAAK4kB,MAAMvB,QAElBA,GAGXupC,eAAgB,IA2IhBG,GAnISjD,EAAMkD,OAASf,EAAuBzsB,OAAO,CAItDmU,IAAKqW,EAAKxqB,SAWVyT,KAAM,SAAUU,GAEZ3zC,KAAK2zC,IAAM3zC,KAAK2zC,IAAInU,OAAOmU,GAG3B3zC,KAAK+mD,SAUTA,MAAO,WAEHkF,EAAuBlF,MAAMtpD,KAAKuC,MAGlCA,KAAKitD,YAeTC,OAAQ,SAAUC,GAQd,OANAntD,KAAKmsD,QAAQgB,GAGbntD,KAAKosD,WAGEpsD,MAiBXotD,SAAU,SAAUD,GAShB,OAPIA,GACAntD,KAAKmsD,QAAQgB,GAINntD,KAAKqtD,eAKpBZ,UAAW,GAeXa,cAAe,SAAUC,GACrB,OAAO,SAAUzoD,EAAS6uC,GACtB,OAAO,IAAI4Z,EAAOta,KAAKU,GAAKyZ,SAAStoD,KAiB7C0oD,kBAAmB,SAAUD,GACzB,OAAO,SAAUzoD,EAAS3F,GACtB,OAAO,IAAI4tD,EAAOU,KAAKxa,KAAKsa,EAAQpuD,GAAKiuD,SAAStoD,OAQjD+kD,EAAE6D,KAAO,IAEtB,OAAO7D,EA5wBgB,CA6wBzB1nC,MAGKgnC,gBC7xBR,IAAIK,EAAqC,oBAAZ,QAA2BJ,OAAOI,iBAAmBJ,OAAOI,gBAAgB/uC,KAAK2uC,SACnE,oBAAd,UAAuE,mBAAnC5kD,OAAO8kD,SAASE,iBAAiCF,SAASE,gBAAgB/uC,KAAK6uC,UAEhJ,GAAIE,EAAiB,CAEnB,IAAImE,EAAQ,IAAItqB,WAAW,IAE3BhkC,EAAOC,QAAU,WAEf,OADAkqD,EAAgBmE,GACTA,OAEJ,CAKL,IAAIC,EAAO,IAAI/uD,MAAM,IAErBQ,EAAOC,QAAU,WACf,IAAK,IAAWjC,EAAPD,EAAI,EAAMA,EAAI,GAAIA,IACN,IAAV,EAAJA,KAAiBC,EAAoB,WAAhB8kB,KAAK6oC,UAC/B4C,EAAKxwD,GAAKC,MAAY,EAAJD,IAAa,GAAK,IAGtC,OAAOwwD,8GC9BX,IAAItsB,EAA8B,iBAAV,EAAA3+B,GAAsB,EAAAA,GAAU,EAAAA,EAAO7E,SAAWA,QAAU,EAAA6E,EAEpFtD,EAAOC,QAAUgiC,OCFjB,IAGIusB,EAHY30C,SAASja,UAGID,SAqB7BK,EAAOC,QAZP,SAAkB6F,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO0oD,EAAapwD,KAAK0H,GACzB,MAAO7H,IACT,IACE,OAAQ6H,EAAO,GACf,MAAO7H,KAEX,MAAO,eCtBT,IAAIwwD,EAAW,EAAQ,KACnBC,EAAY,EAAQ,KACpBC,EAAW,EAAQ,KAiFvB3uD,EAAOC,QA9DP,SAAqBoM,EAAO+Z,EAAOo5B,EAAS3T,EAAY+iB,EAAWnP,GACjE,IAAIoP,EAjBqB,EAiBTrP,EACZsP,EAAYziD,EAAMjN,OAClB2vD,EAAY3oC,EAAMhnB,OAEtB,GAAI0vD,GAAaC,KAAeF,GAAaE,EAAYD,GACvD,OAAO,EAGT,IAAIE,EAAavP,EAAMv0C,IAAImB,GACvB4iD,EAAaxP,EAAMv0C,IAAIkb,GAC3B,GAAI4oC,GAAcC,EAChB,OAAOD,GAAc5oC,GAAS6oC,GAAc5iD,EAE9C,IAAI8M,GAAS,EACTrW,GAAS,EACTosD,EA/BuB,EA+Bf1P,EAAoC,IAAIiP,OAAW1nD,EAM/D,IAJA04C,EAAMr0C,IAAIiB,EAAO+Z,GACjBq5B,EAAMr0C,IAAIgb,EAAO/Z,KAGR8M,EAAQ21C,GAAW,CAC1B,IAAIK,EAAW9iD,EAAM8M,GACjBi2C,EAAWhpC,EAAMjN,GAErB,GAAI0yB,EACF,IAAIwjB,EAAWR,EACXhjB,EAAWujB,EAAUD,EAAUh2C,EAAOiN,EAAO/Z,EAAOozC,GACpD5T,EAAWsjB,EAAUC,EAAUj2C,EAAO9M,EAAO+Z,EAAOq5B,GAE1D,QAAiB14C,IAAbsoD,EAAwB,CAC1B,GAAIA,EACF,SAEFvsD,GAAS,EACT,MAGF,GAAIosD,GACF,IAAKR,EAAUtoC,GAAO,SAASgpC,EAAUE,GACnC,IAAKX,EAASO,EAAMI,KACfH,IAAaC,GAAYR,EAAUO,EAAUC,EAAU5P,EAAS3T,EAAY4T,IAC/E,OAAOyP,EAAKjrD,KAAKqrD,MAEjB,CACNxsD,GAAS,EACT,YAEG,GACDqsD,IAAaC,IACXR,EAAUO,EAAUC,EAAU5P,EAAS3T,EAAY4T,GACpD,CACL38C,GAAS,EACT,OAKJ,OAFA28C,EAAc,OAAEpzC,GAChBozC,EAAc,OAAEr5B,GACTtjB,cChFT,IAAIi9C,EAAW,EAAQ,KACnBwP,EAAc,EAAQ,KACtBC,EAAc,EAAQ,KAU1B,SAASf,EAAS7+C,GAChB,IAAIuJ,GAAS,EACT/Z,EAAmB,MAAVwQ,EAAiB,EAAIA,EAAOxQ,OAGzC,IADAuB,KAAKuwC,SAAW,IAAI6O,IACX5mC,EAAQ/Z,GACfuB,KAAKue,IAAItP,EAAOuJ,IAKpBs1C,EAAS7uD,UAAUsf,IAAMuvC,EAAS7uD,UAAUqE,KAAOsrD,EACnDd,EAAS7uD,UAAU2f,IAAMiwC,EAEzBxvD,EAAOC,QAAUwuD,OCdjBzuD,EAAOC,QAJP,SAAkBgL,EAAOnL,GACvB,OAAOmL,EAAMsU,IAAIzf,eCTnB,IAGIkkC,EAHO,EAAQ,IAGGA,WAEtBhkC,EAAOC,QAAU+jC,aCLjB,IAAIyrB,EAAiB,EAAQ,KACzBrP,EAAa,EAAQ,KACrB/wC,EAAO,EAAQ,KAanBrP,EAAOC,QAJP,SAAoBqG,GAClB,OAAOmpD,EAAenpD,EAAQ+I,EAAM+wC,eCZtC,IAAIsP,EAAY,EAAQ,KACpBjwD,EAAU,EAAQ,IAkBtBO,EAAOC,QALP,SAAwBqG,EAAQqpD,EAAUC,GACxC,IAAI9sD,EAAS6sD,EAASrpD,GACtB,OAAO7G,EAAQ6G,GAAUxD,EAAS4sD,EAAU5sD,EAAQ8sD,EAAYtpD,UCMlEtG,EAAOC,QAJP,WACE,MAAO,eCnBT,IAAI4vD,EAAY,EAAQ,KACpBjlB,EAAc,EAAQ,KACtBnrC,EAAU,EAAQ,IAClBq/B,EAAW,EAAQ,KACnBgxB,EAAU,EAAQ,KAClB/d,EAAe,EAAQ,KAMvB/yC,EAHcP,OAAOmB,UAGQZ,eAqCjCgB,EAAOC,QA3BP,SAAuBtB,EAAOoxD,GAC5B,IAAIC,EAAQvwD,EAAQd,GAChBsxD,GAASD,GAASplB,EAAYjsC,GAC9BuxD,GAAUF,IAAUC,GAASnxB,EAASngC,GACtCwxD,GAAUH,IAAUC,IAAUC,GAAUne,EAAapzC,GACrDyxD,EAAcJ,GAASC,GAASC,GAAUC,EAC1CrtD,EAASstD,EAAcP,EAAUlxD,EAAMS,OAAQd,QAAU,GACzDc,EAAS0D,EAAO1D,OAEpB,IAAK,IAAIU,KAAOnB,GACToxD,IAAa/wD,EAAeZ,KAAKO,EAAOmB,IACvCswD,IAEQ,UAAPtwD,GAECowD,IAAkB,UAAPpwD,GAA0B,UAAPA,IAE9BqwD,IAAkB,UAAPrwD,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDgwD,EAAQhwD,EAAKV,KAElB0D,EAAOmB,KAAKnE,GAGhB,OAAOgD,cC7CT,IAAImvC,EAAc,EAAQ,KACtBoe,EAAa,EAAQ,KAMrBrxD,EAHcP,OAAOmB,UAGQZ,eAsBjCgB,EAAOC,QAbP,SAAkBqG,GAChB,IAAK2rC,EAAY3rC,GACf,OAAO+pD,EAAW/pD,GAEpB,IAAIxD,EAAS,GACb,IAAK,IAAIhD,KAAOrB,OAAO6H,GACjBtH,EAAeZ,KAAKkI,EAAQxG,IAAe,eAAPA,GACtCgD,EAAOmB,KAAKnE,GAGhB,OAAOgD,QCZT9C,EAAOC,QANP,SAAiB6F,EAAMwqD,GACrB,OAAO,SAASjxD,GACd,OAAOyG,EAAKwqD,EAAUjxD,iBCV1B,IAII6H,EAJY,EAAQ,IAIduqC,CAHC,EAAQ,IAGO,OAE1BzxC,EAAOC,QAAUiH,cCDjB,IADA,IAAIqpD,EAAY,GACPxyD,EAAI,EAAGA,EAAI,MAAOA,EACzBwyD,EAAUxyD,IAAMA,EAAI,KAAO4B,SAAS,IAAIwsD,OAAO,GAmBjDnsD,EAAOC,QAhBP,SAAqBosC,EAAK2T,GACxB,IAAIjiD,EAAIiiD,GAAU,EACdwQ,EAAMD,EAEV,MAAO,CACLC,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,MACvByyD,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,MAAO,IAC9ByyD,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,MAAO,IAC9ByyD,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,MAAO,IAC9ByyD,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,MAAO,IAC9ByyD,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,MACvByyD,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,MACvByyD,EAAInkB,EAAItuC,MAAOyyD,EAAInkB,EAAItuC,OACtBgc,KAAK,gBCtBV,IAAI02C,EAAe,EAAQ,KA2B3BzwD,EAAOC,QAJP,SAAkBtB,GAChB,OAAgB,MAATA,EAAgB,GAAK8xD,EAAa9xD,SCJ3CqB,EAAOC,QAXP,SAAkBoM,EAAOqkD,GAKvB,IAJA,IAAIv3C,GAAS,EACT/Z,EAAkB,MAATiN,EAAgB,EAAIA,EAAMjN,OACnC0D,EAAStD,MAAMJ,KAEV+Z,EAAQ/Z,GACf0D,EAAOqW,GAASu3C,EAASrkD,EAAM8M,GAAQA,EAAO9M,GAEhD,OAAOvJ,cCjBT,IAAI2uC,EAAY,EAAQ,KAEpB/yC,EAAkB,WACpB,IACE,IAAIoH,EAAO2rC,EAAUhzC,OAAQ,kBAE7B,OADAqH,EAAK,GAAI,GAAI,IACNA,EACP,MAAO7H,KALU,GAQrB+B,EAAOC,QAAUvB,OCSjBsB,EAAOC,QAXP,SAAmB4f,EAAQxT,GACzB,IAAI8M,GAAS,EACT/Z,EAASygB,EAAOzgB,OAGpB,IADAiN,IAAUA,EAAQ7M,MAAMJ,MACf+Z,EAAQ/Z,GACfiN,EAAM8M,GAAS0G,EAAO1G,GAExB,OAAO9M,cChBT,IAAIqjD,EAAY,EAAQ,KACpBhP,EAAe,EAAQ,KACvBN,EAAa,EAAQ,KACrBF,EAAY,EAAQ,KAYpByQ,EATmBlyD,OAAO2C,sBASqB,SAASkF,GAE1D,IADA,IAAIxD,EAAS,GACNwD,GACLopD,EAAU5sD,EAAQs9C,EAAW95C,IAC7BA,EAASo6C,EAAap6C,GAExB,OAAOxD,GAN8Bo9C,EASvClgD,EAAOC,QAAU0wD,aCxBjB,IAAIC,EAAmB,EAAQ,KAe/B5wD,EAAOC,QALP,SAAyB4wD,EAAYlH,GACnC,IAAIvqB,EAASuqB,EAASiH,EAAiBC,EAAWzxB,QAAUyxB,EAAWzxB,OACvE,OAAO,IAAIyxB,EAAWjwD,YAAYw+B,EAAQyxB,EAAWC,WAAYD,EAAWzxD,oBCZ9E,IAAI2xD,EAAa,EAAQ,KACrBrQ,EAAe,EAAQ,KACvBzO,EAAc,EAAQ,KAe1BjyC,EAAOC,QANP,SAAyBqG,GACvB,MAAqC,mBAAtBA,EAAO1F,aAA8BqxC,EAAY3rC,GAE5D,GADAyqD,EAAWrQ,EAAap6C,uBCX9BtG,EAAOC,QAAU,SAAcuT,EAAIrR,GACjC,OAAO,WAEL,IADA,IAAI+J,EAAO,IAAI1M,MAAML,UAAUC,QACtBrB,EAAI,EAAGA,EAAImO,EAAK9M,OAAQrB,IAC/BmO,EAAKnO,GAAKoB,UAAUpB,GAEtB,OAAOyV,EAAG9T,MAAMyC,EAAS+J,6BCN7B,IAAIq1C,EAAQ,EAAQ,IAEpB,SAASyP,EAAOtyB,GACd,OAAOkG,mBAAmBlG,GACxB5kB,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KAUrB9Z,EAAOC,QAAU,SAAkBgxD,EAAKC,EAAQC,GAE9C,IAAKD,EACH,OAAOD,EAGT,IAAIG,EACJ,GAAID,EACFC,EAAmBD,EAAiBD,QAC/B,GAAI3P,EAAM3hB,kBAAkBsxB,GACjCE,EAAmBF,EAAOvxD,eACrB,CACL,IAAI0nC,EAAQ,GAEZka,EAAMjyC,QAAQ4hD,GAAQ,SAAmBxyB,EAAK5+B,GACxC4+B,MAAAA,IAIA6iB,EAAM9hD,QAAQi/B,GAChB5+B,GAAY,KAEZ4+B,EAAM,CAACA,GAGT6iB,EAAMjyC,QAAQovB,GAAK,SAAoB56B,GACjCy9C,EAAMhiB,OAAOz7B,GACfA,EAAIA,EAAEutD,cACG9P,EAAMt7C,SAASnC,KACxBA,EAAIuhC,KAAKqI,UAAU5pC,IAErBujC,EAAMpjC,KAAK+sD,EAAOlxD,GAAO,IAAMkxD,EAAOltD,WAI1CstD,EAAmB/pB,EAAMttB,KAAK,KAGhC,GAAIq3C,EAAkB,CACpB,IAAIE,EAAgBL,EAAI9vD,QAAQ,MACT,IAAnBmwD,IACFL,EAAMA,EAAIhlD,MAAM,EAAGqlD,IAGrBL,KAA8B,IAAtBA,EAAI9vD,QAAQ,KAAc,IAAM,KAAOiwD,EAGjD,OAAOH,qBCxDTjxD,EAAOC,QAAU,SAAsBsE,EAAO2gD,EAAQrX,EAAM0jB,EAASC,GA4BnE,OA3BAjtD,EAAM2gD,OAASA,EACXrX,IACFtpC,EAAMspC,KAAOA,GAGftpC,EAAMgtD,QAAUA,EAChBhtD,EAAMitD,SAAWA,EACjBjtD,EAAMktD,cAAe,EAErBltD,EAAM+R,OAAS,WACb,MAAO,CAEL7Q,QAAS9E,KAAK8E,QACdiB,KAAM/F,KAAK+F,KAEXgrD,YAAa/wD,KAAK+wD,YAClB5qB,OAAQnmC,KAAKmmC,OAEb6qB,SAAUhxD,KAAKgxD,SACfC,WAAYjxD,KAAKixD,WACjBC,aAAclxD,KAAKkxD,aACnBpS,MAAO9+C,KAAK8+C,MAEZyF,OAAQvkD,KAAKukD,OACbrX,KAAMltC,KAAKktC,OAGRtpC,2BCtCT,IAAIk9C,EAAe,EAAQ,KAY3BzhD,EAAOC,QAAU,SAAqBwF,EAASy/C,EAAQrX,EAAM0jB,EAASC,GACpE,IAAIjtD,EAAQ,IAAIqB,MAAMH,GACtB,OAAOg8C,EAAal9C,EAAO2gD,EAAQrX,EAAM0jB,EAASC,sBCdpDxxD,EAAOC,QAAU,SAAkBtB,GACjC,SAAUA,IAASA,EAAMmzD,qCCD3B,IAAIvQ,EAAQ,EAAQ,IAUpBvhD,EAAOC,QAAU,SAAqB8xD,EAASC,GAE7CA,EAAUA,GAAW,GACrB,IAAI9M,EAAS,GAET+M,EAAuB,CAAC,MAAO,SAAU,QACzCC,EAA0B,CAAC,UAAW,OAAQ,QAAS,UACvDC,EAAuB,CACzB,UAAW,mBAAoB,oBAAqB,mBACpD,UAAW,iBAAkB,kBAAmB,UAAW,eAAgB,iBAC3E,iBAAkB,mBAAoB,qBAAsB,aAC5D,mBAAoB,gBAAiB,eAAgB,YAAa,YAClE,aAAc,cAAe,aAAc,oBAEzCC,EAAkB,CAAC,kBAEvB,SAASC,EAAe7wD,EAAQqe,GAC9B,OAAI0hC,EAAMr7C,cAAc1E,IAAW+/C,EAAMr7C,cAAc2Z,GAC9C0hC,EAAM97B,MAAMjkB,EAAQqe,GAClB0hC,EAAMr7C,cAAc2Z,GACtB0hC,EAAM97B,MAAM,GAAI5F,GACd0hC,EAAM9hD,QAAQogB,GAChBA,EAAO5T,QAET4T,EAGT,SAASyyC,EAAoBtnD,GACtBu2C,EAAM5iB,YAAYqzB,EAAQhnD,IAEnBu2C,EAAM5iB,YAAYozB,EAAQ/mD,MACpCk6C,EAAOl6C,GAAQqnD,OAAetrD,EAAWgrD,EAAQ/mD,KAFjDk6C,EAAOl6C,GAAQqnD,EAAeN,EAAQ/mD,GAAOgnD,EAAQhnD,IAMzDu2C,EAAMjyC,QAAQ2iD,GAAsB,SAA0BjnD,GACvDu2C,EAAM5iB,YAAYqzB,EAAQhnD,MAC7Bk6C,EAAOl6C,GAAQqnD,OAAetrD,EAAWirD,EAAQhnD,QAIrDu2C,EAAMjyC,QAAQ4iD,EAAyBI,GAEvC/Q,EAAMjyC,QAAQ6iD,GAAsB,SAA0BnnD,GACvDu2C,EAAM5iB,YAAYqzB,EAAQhnD,IAEnBu2C,EAAM5iB,YAAYozB,EAAQ/mD,MACpCk6C,EAAOl6C,GAAQqnD,OAAetrD,EAAWgrD,EAAQ/mD,KAFjDk6C,EAAOl6C,GAAQqnD,OAAetrD,EAAWirD,EAAQhnD,OAMrDu2C,EAAMjyC,QAAQ8iD,GAAiB,SAAepnD,GACxCA,KAAQgnD,EACV9M,EAAOl6C,GAAQqnD,EAAeN,EAAQ/mD,GAAOgnD,EAAQhnD,IAC5CA,KAAQ+mD,IACjB7M,EAAOl6C,GAAQqnD,OAAetrD,EAAWgrD,EAAQ/mD,QAIrD,IAAIunD,EAAYN,EACbrnD,OAAOsnD,GACPtnD,OAAOunD,GACPvnD,OAAOwnD,GAENI,EAAY/zD,OACb4Q,KAAK0iD,GACLnnD,OAAOnM,OAAO4Q,KAAK2iD,IACnBx1C,QAAO,SAAyB1c,GAC/B,OAAmC,IAA5ByyD,EAAUpxD,QAAQrB,MAK7B,OAFAyhD,EAAMjyC,QAAQkjD,EAAWF,GAElBpN,qBC7ET,SAASuN,EAAOhtD,GACd9E,KAAK8E,QAAUA,EAGjBgtD,EAAO7yD,UAAUD,SAAW,WAC1B,MAAO,UAAYgB,KAAK8E,QAAU,KAAO9E,KAAK8E,QAAU,KAG1DgtD,EAAO7yD,UAAUkyD,YAAa,EAE9B9xD,EAAOC,QAAUwyD,aClBjB,IAAI7mB,EAAkB,EAAQ,KAC1B5jB,EAAK,EAAQ,KAkBjBhoB,EAAOC,QAPP,SAA0BqG,EAAQxG,EAAKnB,SACtBoI,IAAVpI,IAAwBqpB,EAAG1hB,EAAOxG,GAAMnB,SAC9BoI,IAAVpI,KAAyBmB,KAAOwG,KACnCslC,EAAgBtlC,EAAQxG,EAAKnB,eCfjC,IAaI+zD,EAbgB,EAAQ,IAadC,GAEd3yD,EAAOC,QAAUyyD,OCKjB1yD,EAAOC,QAZP,SAAiBqG,EAAQxG,GACvB,IAAY,gBAARA,GAAgD,mBAAhBwG,EAAOxG,KAIhC,aAAPA,EAIJ,OAAOwG,EAAOxG,eCjBhB,IAAIJ,EAAQ,EAAQ,KAGhBghC,EAAY5d,KAAKC,IAgCrB/iB,EAAOC,QArBP,SAAkB6F,EAAM6pC,EAAO2gB,GAE7B,OADA3gB,EAAQjP,OAAoB35B,IAAV4oC,EAAuB7pC,EAAK1G,OAAS,EAAKuwC,EAAO,GAC5D,WAML,IALA,IAAIzjC,EAAO/M,UACPga,GAAS,EACT/Z,EAASshC,EAAUx0B,EAAK9M,OAASuwC,EAAO,GACxCtjC,EAAQ7M,MAAMJ,KAET+Z,EAAQ/Z,GACfiN,EAAM8M,GAASjN,EAAKyjC,EAAQx2B,GAE9BA,GAAS,EAET,IADA,IAAIy5C,EAAYpzD,MAAMmwC,EAAQ,KACrBx2B,EAAQw2B,GACfijB,EAAUz5C,GAASjN,EAAKiN,GAG1B,OADAy5C,EAAUjjB,GAAS2gB,EAAUjkD,GACtB3M,EAAMoG,EAAMnF,KAAMiyD,gBC/B7B,IAAIC,EAAkB,EAAQ,KAW1BC,EAVW,EAAQ,IAULC,CAASF,GAE3B7yD,EAAOC,QAAU6yD,0BCYjB,IAAIE,EAAW,EAAQ,KAEvB,SAASC,IACPtyD,KAAKuyD,SAAW,KAChBvyD,KAAKwyD,QAAU,KACfxyD,KAAKyyD,KAAO,KACZzyD,KAAK0yD,KAAO,KACZ1yD,KAAK2yD,KAAO,KACZ3yD,KAAK4yD,SAAW,KAChB5yD,KAAK6yD,KAAO,KACZ7yD,KAAK8yD,OAAS,KACd9yD,KAAK+yD,MAAQ,KACb/yD,KAAKgzD,SAAW,KAChBhzD,KAAKs5B,KAAO,KACZt5B,KAAKizD,KAAO,KASd,IAAIC,EAAkB,oBACpBC,EAAc,WAGdC,EAAoB,oCAWpBC,EAAS,CACP,IAAK,IAAK,IAAK,KAAM,IAAK,KAC1BppD,OAPO,CACP,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,OASvCqpD,EAAa,CAAC,KAAMrpD,OAAOopD,GAO3BE,EAAe,CACb,IAAK,IAAK,IAAK,IAAK,KACpBtpD,OAAOqpD,GACTE,EAAkB,CAChB,IAAK,IAAK,KAGZC,EAAsB,yBACtBC,EAAoB,+BAEpBC,EAAiB,CACfC,YAAY,EACZ,eAAe,GAGjBC,EAAmB,CACjBD,YAAY,EACZ,eAAe,GAGjBE,EAAkB,CAChBC,MAAM,EACNC,OAAO,EACPC,KAAK,EACLC,QAAQ,EACRC,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,GAEXC,EAAc,EAAQ,KAExB,SAASC,EAAS/D,EAAKgE,EAAkBC,GACvC,GAAIjE,GAAsB,iBAARA,GAAoBA,aAAegC,EAAO,OAAOhC,EAEnE,IAAIlnC,EAAI,IAAIkpC,EAEZ,OADAlpC,EAAEyQ,MAAMy2B,EAAKgE,EAAkBC,GACxBnrC,EAGTkpC,EAAIrzD,UAAU46B,MAAQ,SAAUy2B,EAAKgE,EAAkBC,GACrD,GAAmB,iBAARjE,EACT,MAAM,IAAI5yD,UAAU,gDAAkD4yD,GAQxE,IAAIkE,EAAalE,EAAI9vD,QAAQ,KAC3Bi0D,GAA2B,IAAhBD,GAAqBA,EAAalE,EAAI9vD,QAAQ,KAAO,IAAM,IACtEk0D,EAASpE,EAAI9P,MAAMiU,GAErBC,EAAO,GAAKA,EAAO,GAAGv7C,QADP,MAC2B,KAG1C,IAAIgU,EAFJmjC,EAAMoE,EAAOt7C,KAAKq7C,GAUlB,GAFAtnC,EAAOA,EAAKsS,QAEP80B,GAA+C,IAA1BjE,EAAI9P,MAAM,KAAK/hD,OAAc,CAErD,IAAIk2D,EAAavB,EAAkBxtB,KAAKzY,GACxC,GAAIwnC,EAeF,OAdA30D,KAAKs5B,KAAOnM,EACZntB,KAAKizD,KAAO9lC,EACZntB,KAAKgzD,SAAW2B,EAAW,GACvBA,EAAW,IACb30D,KAAK8yD,OAAS6B,EAAW,GAEvB30D,KAAK+yD,MADHuB,EACWF,EAAYv6B,MAAM75B,KAAK8yD,OAAOtH,OAAO,IAErCxrD,KAAK8yD,OAAOtH,OAAO,IAEzB8I,IACTt0D,KAAK8yD,OAAS,GACd9yD,KAAK+yD,MAAQ,IAER/yD,KAIX,IAAIwF,EAAQ0tD,EAAgBttB,KAAKzY,GACjC,GAAI3nB,EAAO,CAET,IAAIovD,GADJpvD,EAAQA,EAAM,IACSuoB,cACvB/tB,KAAKuyD,SAAWqC,EAChBznC,EAAOA,EAAKq+B,OAAOhmD,EAAM/G,QAS3B,GAAI81D,GAAqB/uD,GAAS2nB,EAAKyM,MAAM,sBAAuB,CAClE,IAAI44B,EAAgC,OAAtBrlC,EAAKq+B,OAAO,EAAG,IACzBgH,GAAahtD,GAASquD,EAAiBruD,KACzC2nB,EAAOA,EAAKq+B,OAAO,GACnBxrD,KAAKwyD,SAAU,GAInB,IAAKqB,EAAiBruD,KAAWgtD,GAAYhtD,IAAUsuD,EAAgBtuD,IAAU,CAuB/E,IADA,IAUIitD,EAAMoC,EAVNC,GAAW,EACN13D,EAAI,EAAGA,EAAIo2D,EAAgB/0D,OAAQrB,IAAK,EAElC,KADT23D,EAAM5nC,EAAK3sB,QAAQgzD,EAAgBp2D,QACP,IAAb03D,GAAkBC,EAAMD,KAAYA,EAAUC,IAuBnD,KAbdF,GAFe,IAAbC,EAEO3nC,EAAKogB,YAAY,KAMjBpgB,EAAKogB,YAAY,IAAKunB,MAQ/BrC,EAAOtlC,EAAK7hB,MAAM,EAAGupD,GACrB1nC,EAAOA,EAAK7hB,MAAMupD,EAAS,GAC3B70D,KAAKyyD,KAAO1uB,mBAAmB0uB,IAIjCqC,GAAW,EACX,IAAS13D,EAAI,EAAGA,EAAIm2D,EAAa90D,OAAQrB,IAAK,CAC5C,IAAI23D,GACS,KADTA,EAAM5nC,EAAK3sB,QAAQ+yD,EAAan2D,QACJ,IAAb03D,GAAkBC,EAAMD,KAAYA,EAAUC,IAGlD,IAAbD,IAAkBA,EAAU3nC,EAAK1uB,QAErCuB,KAAK0yD,KAAOvlC,EAAK7hB,MAAM,EAAGwpD,GAC1B3nC,EAAOA,EAAK7hB,MAAMwpD,GAGlB90D,KAAKg1D,YAMLh1D,KAAK4yD,SAAW5yD,KAAK4yD,UAAY,GAMjC,IAAIqC,EAAoC,MAArBj1D,KAAK4yD,SAAS,IAA0D,MAA5C5yD,KAAK4yD,SAAS5yD,KAAK4yD,SAASn0D,OAAS,GAGpF,IAAKw2D,EAEH,IADA,IAAIC,EAAYl1D,KAAK4yD,SAASpS,MAAM,MACpB9vC,GAAPtT,EAAI,EAAO83D,EAAUz2D,QAAQrB,EAAIsT,EAAGtT,IAAK,CAChD,IAAI4pC,EAAOkuB,EAAU93D,GACrB,GAAK4pC,IACAA,EAAKpN,MAAM65B,GAAsB,CAEpC,IADA,IAAI0B,EAAU,GACLlxD,EAAI,EAAGF,EAAIijC,EAAKvoC,OAAQwF,EAAIF,EAAGE,IAClC+iC,EAAKnH,WAAW57B,GAAK,IAMvBkxD,GAAW,IAEXA,GAAWnuB,EAAK/iC,GAIpB,IAAKkxD,EAAQv7B,MAAM65B,GAAsB,CACvC,IAAI2B,EAAaF,EAAU5pD,MAAM,EAAGlO,GAChCi4D,EAAUH,EAAU5pD,MAAMlO,EAAI,GAC9Bk4D,EAAMtuB,EAAKpN,MAAM85B,GACjB4B,IACFF,EAAW9xD,KAAKgyD,EAAI,IACpBD,EAAQlyC,QAAQmyC,EAAI,KAElBD,EAAQ52D,SACV0uB,EAAO,IAAMkoC,EAAQj8C,KAAK,KAAO+T,GAEnCntB,KAAK4yD,SAAWwC,EAAWh8C,KAAK,KAChC,QAMJpZ,KAAK4yD,SAASn0D,OAjOH,IAkObuB,KAAK4yD,SAAW,GAGhB5yD,KAAK4yD,SAAW5yD,KAAK4yD,SAAS7kC,cAG3BknC,IAOHj1D,KAAK4yD,SAAWP,EAASkD,QAAQv1D,KAAK4yD,WAGxC,IAAI/yD,EAAIG,KAAK2yD,KAAO,IAAM3yD,KAAK2yD,KAAO,GAClCxpC,EAAInpB,KAAK4yD,UAAY,GACzB5yD,KAAK0yD,KAAOvpC,EAAItpB,EAChBG,KAAKizD,MAAQjzD,KAAK0yD,KAMduC,IACFj1D,KAAK4yD,SAAW5yD,KAAK4yD,SAASpH,OAAO,EAAGxrD,KAAK4yD,SAASn0D,OAAS,GAC/C,MAAZ0uB,EAAK,KACPA,EAAO,IAAMA,IASnB,IAAKwmC,EAAeiB,GAOlB,IAASx3D,EAAI,EAAGsT,EAAI4iD,EAAW70D,OAAQrB,EAAIsT,EAAGtT,IAAK,CACjD,IAAIo4D,EAAKlC,EAAWl2D,GACpB,IAA0B,IAAtB+vB,EAAK3sB,QAAQg1D,GAAjB,CACA,IAAIC,EAAMxxB,mBAAmBuxB,GACzBC,IAAQD,IACVC,EAAM3J,OAAO0J,IAEfroC,EAAOA,EAAKqzB,MAAMgV,GAAIp8C,KAAKq8C,IAK/B,IAAI5C,EAAO1lC,EAAK3sB,QAAQ,MACV,IAAVqyD,IAEF7yD,KAAK6yD,KAAO1lC,EAAKq+B,OAAOqH,GACxB1lC,EAAOA,EAAK7hB,MAAM,EAAGunD,IAEvB,IAAI6C,EAAKvoC,EAAK3sB,QAAQ,KAmBtB,IAlBY,IAARk1D,GACF11D,KAAK8yD,OAAS3lC,EAAKq+B,OAAOkK,GAC1B11D,KAAK+yD,MAAQ5lC,EAAKq+B,OAAOkK,EAAK,GAC1BpB,IACFt0D,KAAK+yD,MAAQqB,EAAYv6B,MAAM75B,KAAK+yD,QAEtC5lC,EAAOA,EAAK7hB,MAAM,EAAGoqD,IACZpB,IAETt0D,KAAK8yD,OAAS,GACd9yD,KAAK+yD,MAAQ,IAEX5lC,IAAQntB,KAAKgzD,SAAW7lC,GACxB2mC,EAAgBc,IAAe50D,KAAK4yD,WAAa5yD,KAAKgzD,WACxDhzD,KAAKgzD,SAAW,KAIdhzD,KAAKgzD,UAAYhzD,KAAK8yD,OAAQ,CAC5BjzD,EAAIG,KAAKgzD,UAAY,GAAzB,IACI3yD,EAAIL,KAAK8yD,QAAU,GACvB9yD,KAAKs5B,KAAOz5B,EAAIQ,EAKlB,OADAL,KAAKizD,KAAOjzD,KAAKuvC,SACVvvC,MAgBTsyD,EAAIrzD,UAAUswC,OAAS,WACrB,IAAIkjB,EAAOzyD,KAAKyyD,MAAQ,GACpBA,IAEFA,GADAA,EAAOxuB,mBAAmBwuB,IACdt5C,QAAQ,OAAQ,KAC5Bs5C,GAAQ,KAGV,IAAIF,EAAWvyD,KAAKuyD,UAAY,GAC9BS,EAAWhzD,KAAKgzD,UAAY,GAC5BH,EAAO7yD,KAAK6yD,MAAQ,GACpBH,GAAO,EACPK,EAAQ,GAEN/yD,KAAK0yD,KACPA,EAAOD,EAAOzyD,KAAK0yD,KACV1yD,KAAK4yD,WACdF,EAAOD,IAAwC,IAAhCzyD,KAAK4yD,SAASpyD,QAAQ,KAAcR,KAAK4yD,SAAW,IAAM5yD,KAAK4yD,SAAW,KACrF5yD,KAAK2yD,OACPD,GAAQ,IAAM1yD,KAAK2yD,OAInB3yD,KAAK+yD,OAA+B,iBAAf/yD,KAAK+yD,OAAsBj1D,OAAO4Q,KAAK1O,KAAK+yD,OAAOt0D,SAC1Es0D,EAAQqB,EAAYrnB,UAAU/sC,KAAK+yD,MAAO,CACxC4C,YAAa,SACbC,gBAAgB,KAIpB,IAAI9C,EAAS9yD,KAAK8yD,QAAWC,GAAU,IAAMA,GAAW,GAuBxD,OArBIR,GAAoC,MAAxBA,EAAS/G,QAAQ,KAAc+G,GAAY,KAMvDvyD,KAAKwyD,WAAaD,GAAYuB,EAAgBvB,MAAuB,IAATG,GAC9DA,EAAO,MAAQA,GAAQ,IACnBM,GAAmC,MAAvBA,EAAS6C,OAAO,KAAc7C,EAAW,IAAMA,IACrDN,IACVA,EAAO,IAGLG,GAA2B,MAAnBA,EAAKgD,OAAO,KAAchD,EAAO,IAAMA,GAC/CC,GAA+B,MAArBA,EAAO+C,OAAO,KAAc/C,EAAS,IAAMA,GAOlDP,EAAWG,GALlBM,EAAWA,EAAS75C,QAAQ,SAAS,SAAUygB,GAC7C,OAAOqK,mBAAmBrK,QAE5Bk5B,EAASA,EAAO35C,QAAQ,IAAK,QAEgB05C,GAO/CP,EAAIrzD,UAAU4C,QAAU,SAAUmsC,GAChC,OAAOhuC,KAAK81D,cAAczB,EAASrmB,GAAU,GAAO,IAAOuB,UAQ7D+iB,EAAIrzD,UAAU62D,cAAgB,SAAU9nB,GACtC,GAAwB,iBAAbA,EAAuB,CAChC,IAAI+nB,EAAM,IAAIzD,EACdyD,EAAIl8B,MAAMmU,GAAU,GAAO,GAC3BA,EAAW+nB,EAKb,IAFA,IAAI5zD,EAAS,IAAImwD,EACb0D,EAAQl4D,OAAO4Q,KAAK1O,MACfi2D,EAAK,EAAGA,EAAKD,EAAMv3D,OAAQw3D,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACjB9zD,EAAO+zD,GAAQl2D,KAAKk2D,GAUtB,GAHA/zD,EAAO0wD,KAAO7kB,EAAS6kB,KAGD,KAAlB7kB,EAASilB,KAEX,OADA9wD,EAAO8wD,KAAO9wD,EAAOotC,SACdptC,EAIT,GAAI6rC,EAASwkB,UAAYxkB,EAASukB,SAAU,CAG1C,IADA,IAAI4D,EAAQr4D,OAAO4Q,KAAKs/B,GACfooB,EAAK,EAAGA,EAAKD,EAAM13D,OAAQ23D,IAAM,CACxC,IAAIC,EAAOF,EAAMC,GACJ,aAATC,IAAuBl0D,EAAOk0D,GAAQroB,EAASqoB,IAUrD,OANIvC,EAAgB3xD,EAAOowD,WAAapwD,EAAOywD,WAAazwD,EAAO6wD,WACjE7wD,EAAO6wD,SAAW,IAClB7wD,EAAOm3B,KAAOn3B,EAAO6wD,UAGvB7wD,EAAO8wD,KAAO9wD,EAAOotC,SACdptC,EAGT,GAAI6rC,EAASukB,UAAYvkB,EAASukB,WAAapwD,EAAOowD,SAAU,CAW9D,IAAKuB,EAAgB9lB,EAASukB,UAAW,CAEvC,IADA,IAAI7jD,EAAO5Q,OAAO4Q,KAAKs/B,GACd7qC,EAAI,EAAGA,EAAIuL,EAAKjQ,OAAQ0E,IAAK,CACpC,IAAIY,EAAI2K,EAAKvL,GACbhB,EAAO4B,GAAKiqC,EAASjqC,GAGvB,OADA5B,EAAO8wD,KAAO9wD,EAAOotC,SACdptC,EAIT,GADAA,EAAOowD,SAAWvkB,EAASukB,SACtBvkB,EAAS0kB,MAASmB,EAAiB7lB,EAASukB,UAS/CpwD,EAAO6wD,SAAWhlB,EAASglB,aAT+B,CAE1D,IADA,IAAIsD,GAAWtoB,EAASglB,UAAY,IAAIxS,MAAM,KACvC8V,EAAQ73D,UAAYuvC,EAAS0kB,KAAO4D,EAAQpzC,WAC9C8qB,EAAS0kB,OAAQ1kB,EAAS0kB,KAAO,IACjC1kB,EAAS4kB,WAAY5kB,EAAS4kB,SAAW,IAC3B,KAAf0D,EAAQ,IAAaA,EAAQnzC,QAAQ,IACrCmzC,EAAQ73D,OAAS,GAAK63D,EAAQnzC,QAAQ,IAC1ChhB,EAAO6wD,SAAWsD,EAAQl9C,KAAK,KAWjC,GAPAjX,EAAO2wD,OAAS9kB,EAAS8kB,OACzB3wD,EAAO4wD,MAAQ/kB,EAAS+kB,MACxB5wD,EAAOuwD,KAAO1kB,EAAS0kB,MAAQ,GAC/BvwD,EAAOswD,KAAOzkB,EAASykB,KACvBtwD,EAAOywD,SAAW5kB,EAAS4kB,UAAY5kB,EAAS0kB,KAChDvwD,EAAOwwD,KAAO3kB,EAAS2kB,KAEnBxwD,EAAO6wD,UAAY7wD,EAAO2wD,OAAQ,CACpC,IAAIjzD,EAAIsC,EAAO6wD,UAAY,GACvB3yD,EAAI8B,EAAO2wD,QAAU,GACzB3wD,EAAOm3B,KAAOz5B,EAAIQ,EAIpB,OAFA8B,EAAOqwD,QAAUrwD,EAAOqwD,SAAWxkB,EAASwkB,QAC5CrwD,EAAO8wD,KAAO9wD,EAAOotC,SACdptC,EAGT,IAAIo0D,EAAcp0D,EAAO6wD,UAA0C,MAA9B7wD,EAAO6wD,SAAS6C,OAAO,GAC1DW,EAAWxoB,EAAS0kB,MAAQ1kB,EAASglB,UAA4C,MAAhChlB,EAASglB,SAAS6C,OAAO,GAC1EY,EAAaD,GAAYD,GAAgBp0D,EAAOuwD,MAAQ1kB,EAASglB,SACjE0D,EAAgBD,EAChBE,EAAUx0D,EAAO6wD,UAAY7wD,EAAO6wD,SAASxS,MAAM,MAAQ,GAE3DoW,GADAN,EAAUtoB,EAASglB,UAAYhlB,EAASglB,SAASxS,MAAM,MAAQ,GACnDr+C,EAAOowD,WAAauB,EAAgB3xD,EAAOowD,WA2BzD,GAlBIqE,IACFz0D,EAAOywD,SAAW,GAClBzwD,EAAOwwD,KAAO,KACVxwD,EAAOuwD,OACU,KAAfiE,EAAQ,GAAaA,EAAQ,GAAKx0D,EAAOuwD,KAAeiE,EAAQxzC,QAAQhhB,EAAOuwD,OAErFvwD,EAAOuwD,KAAO,GACV1kB,EAASukB,WACXvkB,EAAS4kB,SAAW,KACpB5kB,EAAS2kB,KAAO,KACZ3kB,EAAS0kB,OACQ,KAAf4D,EAAQ,GAAaA,EAAQ,GAAKtoB,EAAS0kB,KAAe4D,EAAQnzC,QAAQ6qB,EAAS0kB,OAEzF1kB,EAAS0kB,KAAO,MAElB+D,EAAaA,IAA8B,KAAfH,EAAQ,IAA4B,KAAfK,EAAQ,KAGvDH,EAEFr0D,EAAOuwD,KAAO1kB,EAAS0kB,MAA0B,KAAlB1kB,EAAS0kB,KAAc1kB,EAAS0kB,KAAOvwD,EAAOuwD,KAC7EvwD,EAAOywD,SAAW5kB,EAAS4kB,UAAkC,KAAtB5kB,EAAS4kB,SAAkB5kB,EAAS4kB,SAAWzwD,EAAOywD,SAC7FzwD,EAAO2wD,OAAS9kB,EAAS8kB,OACzB3wD,EAAO4wD,MAAQ/kB,EAAS+kB,MACxB4D,EAAUL,OAEL,GAAIA,EAAQ73D,OAKZk4D,IAAWA,EAAU,IAC1BA,EAAQtzD,MACRszD,EAAUA,EAAQ1sD,OAAOqsD,GACzBn0D,EAAO2wD,OAAS9kB,EAAS8kB,OACzB3wD,EAAO4wD,MAAQ/kB,EAAS+kB,WACnB,GAAuB,MAAnB/kB,EAAS8kB,OAAgB,CAMlC,GAAI8D,EACFz0D,EAAOuwD,KAAOiE,EAAQzzC,QACtB/gB,EAAOywD,SAAWzwD,EAAOuwD,MAMrBmE,KAAa10D,EAAOuwD,MAAQvwD,EAAOuwD,KAAKlyD,QAAQ,KAAO,IAAI2B,EAAOuwD,KAAKlS,MAAM,QAE/Er+C,EAAOswD,KAAOoE,EAAW3zC,QACzB/gB,EAAOywD,SAAWiE,EAAW3zC,QAC7B/gB,EAAOuwD,KAAOvwD,EAAOywD,UAUzB,OAPAzwD,EAAO2wD,OAAS9kB,EAAS8kB,OACzB3wD,EAAO4wD,MAAQ/kB,EAAS+kB,MAEA,OAApB5wD,EAAO6wD,UAAuC,OAAlB7wD,EAAO2wD,SACrC3wD,EAAOm3B,MAAQn3B,EAAO6wD,SAAW7wD,EAAO6wD,SAAW,KAAO7wD,EAAO2wD,OAAS3wD,EAAO2wD,OAAS,KAE5F3wD,EAAO8wD,KAAO9wD,EAAOotC,SACdptC,EAGT,IAAKw0D,EAAQl4D,OAaX,OARA0D,EAAO6wD,SAAW,KAEd7wD,EAAO2wD,OACT3wD,EAAOm3B,KAAO,IAAMn3B,EAAO2wD,OAE3B3wD,EAAOm3B,KAAO,KAEhBn3B,EAAO8wD,KAAO9wD,EAAOotC,SACdptC,EAgBT,IARA,IAAI+jC,EAAOywB,EAAQrrD,OAAO,GAAG,GACzBwrD,GAAoB30D,EAAOuwD,MAAQ1kB,EAAS0kB,MAAQiE,EAAQl4D,OAAS,KAAgB,MAATynC,GAAyB,OAATA,IAA2B,KAATA,EAM9G6wB,EAAK,EACA35D,EAAIu5D,EAAQl4D,OAAQrB,GAAK,EAAGA,IAEtB,OADb8oC,EAAOywB,EAAQv5D,IAEbu5D,EAAQv7C,OAAOhe,EAAG,GACA,OAAT8oC,GACTywB,EAAQv7C,OAAOhe,EAAG,GAClB25D,KACSA,IACTJ,EAAQv7C,OAAOhe,EAAG,GAClB25D,KAKJ,IAAKN,IAAeC,EAClB,KAAOK,IAAMA,EACXJ,EAAQxzC,QAAQ,OAIhBszC,GAA6B,KAAfE,EAAQ,IAAeA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAGd,OAAO,IACvEc,EAAQxzC,QAAQ,IAGd2zC,GAAsD,MAAjCH,EAAQv9C,KAAK,KAAKoyC,QAAQ,IACjDmL,EAAQrzD,KAAK,IAGf,IAWMuzD,EAXFhpB,EAA4B,KAAf8oB,EAAQ,IAAcA,EAAQ,IAA+B,MAAzBA,EAAQ,GAAGd,OAAO,GAGnEe,IACFz0D,EAAOywD,SAAW/kB,EAAa,GAAK8oB,EAAQl4D,OAASk4D,EAAQzzC,QAAU,GACvE/gB,EAAOuwD,KAAOvwD,EAAOywD,UAMjBiE,KAAa10D,EAAOuwD,MAAQvwD,EAAOuwD,KAAKlyD,QAAQ,KAAO,IAAI2B,EAAOuwD,KAAKlS,MAAM,QAE/Er+C,EAAOswD,KAAOoE,EAAW3zC,QACzB/gB,EAAOywD,SAAWiE,EAAW3zC,QAC7B/gB,EAAOuwD,KAAOvwD,EAAOywD,WAwBzB,OApBA6D,EAAaA,GAAet0D,EAAOuwD,MAAQiE,EAAQl4D,UAEhCovC,GACjB8oB,EAAQxzC,QAAQ,IAGdwzC,EAAQl4D,OAAS,EACnB0D,EAAO6wD,SAAW2D,EAAQv9C,KAAK,MAE/BjX,EAAO6wD,SAAW,KAClB7wD,EAAOm3B,KAAO,MAIQ,OAApBn3B,EAAO6wD,UAAuC,OAAlB7wD,EAAO2wD,SACrC3wD,EAAOm3B,MAAQn3B,EAAO6wD,SAAW7wD,EAAO6wD,SAAW,KAAO7wD,EAAO2wD,OAAS3wD,EAAO2wD,OAAS,KAE5F3wD,EAAOswD,KAAOzkB,EAASykB,MAAQtwD,EAAOswD,KACtCtwD,EAAOqwD,QAAUrwD,EAAOqwD,SAAWxkB,EAASwkB,QAC5CrwD,EAAO8wD,KAAO9wD,EAAOotC,SACdptC,GAGTmwD,EAAIrzD,UAAU+1D,UAAY,WACxB,IAAItC,EAAO1yD,KAAK0yD,KACZC,EAAOQ,EAAYvtB,KAAK8sB,GACxBC,IAEW,OADbA,EAAOA,EAAK,MAEV3yD,KAAK2yD,KAAOA,EAAKnH,OAAO,IAE1BkH,EAAOA,EAAKlH,OAAO,EAAGkH,EAAKj0D,OAASk0D,EAAKl0D,SAEvCi0D,IAAQ1yD,KAAK4yD,SAAWF,IAG9BpzD,EAAQu6B,MAAQw6B,EAChB/0D,EAAQuC,QA/SR,SAAoBqd,EAAQ8uB,GAC1B,OAAOqmB,EAASn1C,GAAQ,GAAO,GAAMrd,QAAQmsC,IA+S/C1uC,EAAQw2D,cAxSR,SAA0B52C,EAAQ8uB,GAChC,OAAK9uB,EACEm1C,EAASn1C,GAAQ,GAAO,GAAM42C,cAAc9nB,GAD7BA,GAwSxB1uC,EAAQiwC,OArXR,SAAmB5+B,GAQjB,MADmB,iBAARA,IAAoBA,EAAM0jD,EAAS1jD,IACxCA,aAAe2hD,EACd3hD,EAAI4+B,SADyB+iB,EAAIrzD,UAAUswC,OAAO9xC,KAAKkT,IA+WhErR,EAAQgzD,IAAMA,oBCpwBdjzD,EAAOC,QAAU03D,oCCDjB,IAEIr0B,EAFe,EAAQ,IAEfggB,CAAa,qCAAqC,GAE9D,GAAIhgB,EACH,IACCA,EAAM,GAAI,UACT,MAAOrlC,GAERqlC,EAAQ,KAIVtjC,EAAOC,QAAUqjC,0BCbjB,IAAIs0B,EAAU,EAAQ,KAElBr4C,EAAM9gB,OAAOmB,UAAUZ,eACvBS,EAAUD,MAAMC,QAEhBo4D,EAAY,WAEZ,IADA,IAAIxrD,EAAQ,GACHtO,EAAI,EAAGA,EAAI,MAAOA,EACvBsO,EAAMpI,KAAK,MAAQlG,EAAI,GAAK,IAAM,IAAMA,EAAE4B,SAAS,KAAKm4D,eAG5D,OAAOzrD,EANI,GA4BX0rD,EAAgB,SAAuBl4C,EAAQrS,GAE/C,IADA,IAAI8D,EAAM9D,GAAWA,EAAQwqD,aAAev5D,OAAOoC,OAAO,MAAQ,GACzD9C,EAAI,EAAGA,EAAI8hB,EAAOzgB,SAAUrB,OACR,IAAd8hB,EAAO9hB,KACduT,EAAIvT,GAAK8hB,EAAO9hB,IAIxB,OAAOuT,GAiFP2mD,EAAQ,KAiIZj4D,EAAOC,QAAU,CACb83D,cAAeA,EACfh3D,OAxJS,SAA4BS,EAAQqe,GAC7C,OAAOphB,OAAO4Q,KAAKwQ,GAAQq4C,QAAO,SAAUC,EAAKr4D,GAE7C,OADAq4D,EAAIr4D,GAAO+f,EAAO/f,GACXq4D,IACR32D,IAqJH42D,QAlBU,SAAiBzzD,EAAGtE,GAC9B,MAAO,GAAGuK,OAAOjG,EAAGtE,IAkBpBg4D,QAvDU,SAAiB15D,GAI3B,IAHA,IAAIm5C,EAAQ,CAAC,CAAExmC,IAAK,CAAEnN,EAAGxF,GAASqM,KAAM,MACpCstD,EAAO,GAEFv6D,EAAI,EAAGA,EAAI+5C,EAAM14C,SAAUrB,EAKhC,IAJA,IAAI6gB,EAAOk5B,EAAM/5C,GACbuT,EAAMsN,EAAKtN,IAAIsN,EAAK5T,MAEpBqE,EAAO5Q,OAAO4Q,KAAKiC,GACd1M,EAAI,EAAGA,EAAIyK,EAAKjQ,SAAUwF,EAAG,CAClC,IAAI9E,EAAMuP,EAAKzK,GACX85B,EAAMptB,EAAIxR,GACK,iBAAR4+B,GAA4B,OAARA,IAAuC,IAAvB45B,EAAKn3D,QAAQu9B,KACxDoZ,EAAM7zC,KAAK,CAAEqN,IAAKA,EAAKtG,KAAMlL,IAC7Bw4D,EAAKr0D,KAAKy6B,IAOtB,OA/Me,SAAsBoZ,GACrC,KAAOA,EAAM14C,OAAS,GAAG,CACrB,IAAIwf,EAAOk5B,EAAM9zC,MACbsN,EAAMsN,EAAKtN,IAAIsN,EAAK5T,MAExB,GAAIvL,EAAQ6R,GAAM,CAGd,IAFA,IAAIinD,EAAY,GAEP3zD,EAAI,EAAGA,EAAI0M,EAAIlS,SAAUwF,OACR,IAAX0M,EAAI1M,IACX2zD,EAAUt0D,KAAKqN,EAAI1M,IAI3Bga,EAAKtN,IAAIsN,EAAK5T,MAAQutD,IA+L9BC,CAAa1gB,GAENn5C,GAmCP85D,OApJS,SAAUp4B,EAAKq4B,EAASC,GACjC,IAAIC,EAAiBv4B,EAAIvmB,QAAQ,MAAO,KACxC,GAAgB,eAAZ6+C,EAEA,OAAOC,EAAe9+C,QAAQ,iBAAkB6yC,UAGpD,IACI,OAAOjoB,mBAAmBk0B,GAC5B,MAAO36D,GACL,OAAO26D,IA2IX5H,OAnIS,SAAgB3wB,EAAKw4B,EAAgBF,EAASG,EAAM5oB,GAG7D,GAAmB,IAAf7P,EAAIjhC,OACJ,OAAOihC,EAGX,IAAIsG,EAAStG,EAOb,GANmB,iBAARA,EACPsG,EAASzoC,OAAO0B,UAAUD,SAASvB,KAAKiiC,GAClB,iBAARA,IACdsG,EAASroC,OAAO+hC,IAGJ,eAAZs4B,EACA,OAAOlM,OAAO9lB,GAAQ7sB,QAAQ,mBAAmB,SAAUi/C,GACvD,MAAO,SAAW55C,SAAS45C,EAAG9sD,MAAM,GAAI,IAAM,SAKtD,IADA,IAAIkjC,EAAM,GACDvqC,EAAI,EAAGA,EAAI+hC,EAAOvnC,OAAQwF,GAAKqzD,EAAO,CAI3C,IAHA,IAAIe,EAAUryB,EAAOvnC,QAAU64D,EAAQtxB,EAAO16B,MAAMrH,EAAGA,EAAIqzD,GAAStxB,EAChEsyB,EAAM,GAEDl7D,EAAI,EAAGA,EAAIi7D,EAAQ55D,SAAUrB,EAAG,CACrC,IAAI2D,EAAIs3D,EAAQx4B,WAAWziC,GAEjB,KAAN2D,GACS,KAANA,GACM,KAANA,GACM,MAANA,GACCA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,KAClBwuC,IAAW0nB,EAAQlU,UAAkB,KAANhiD,GAAoB,KAANA,GAEjDu3D,EAAIA,EAAI75D,QAAU45D,EAAQxC,OAAOz4D,GAIjC2D,EAAI,IACJu3D,EAAIA,EAAI75D,QAAUy4D,EAASn2D,GAI3BA,EAAI,KACJu3D,EAAIA,EAAI75D,QAAUy4D,EAAS,IAAQn2D,GAAK,GAClCm2D,EAAS,IAAY,GAAJn2D,GAIvBA,EAAI,OAAUA,GAAK,MACnBu3D,EAAIA,EAAI75D,QAAUy4D,EAAS,IAAQn2D,GAAK,IAClCm2D,EAAS,IAASn2D,GAAK,EAAK,IAC5Bm2D,EAAS,IAAY,GAAJn2D,IAI3B3D,GAAK,EACL2D,EAAI,QAAiB,KAAJA,IAAc,GAA+B,KAAxBs3D,EAAQx4B,WAAWziC,IAEzDk7D,EAAIA,EAAI75D,QAAUy4D,EAAS,IAAQn2D,GAAK,IAClCm2D,EAAS,IAASn2D,GAAK,GAAM,IAC7Bm2D,EAAS,IAASn2D,GAAK,EAAK,IAC5Bm2D,EAAS,IAAY,GAAJn2D,IAG3BytC,GAAO8pB,EAAIl/C,KAAK,IAGpB,OAAOo1B,GA6DPrQ,SA9BW,SAAkBxtB,GAC7B,SAAKA,GAAsB,iBAARA,OAITA,EAAI1Q,aAAe0Q,EAAI1Q,YAAYk+B,UAAYxtB,EAAI1Q,YAAYk+B,SAASxtB,KA0BlF4nD,SAnCW,SAAkB5nD,GAC7B,MAA+C,oBAAxC7S,OAAOmB,UAAUD,SAASvB,KAAKkT,IAmCtC6nD,SApBW,SAAkBz6B,EAAKlrB,GAClC,GAAI/T,EAAQi/B,GAAM,CAEd,IADA,IAAI06B,EAAS,GACJr7D,EAAI,EAAGA,EAAI2gC,EAAIt/B,OAAQrB,GAAK,EACjCq7D,EAAOn1D,KAAKuP,EAAGkrB,EAAI3gC,KAEvB,OAAOq7D,EAEX,OAAO5lD,EAAGkrB,IAaVjZ,MAzNQ,SAASA,EAAMjkB,EAAQqe,EAAQrS,GAEvC,IAAKqS,EACD,OAAOre,EAGX,GAAsB,iBAAXqe,EAAqB,CAC5B,GAAIpgB,EAAQ+B,GACRA,EAAOyC,KAAK4b,OACT,KAAIre,GAA4B,iBAAXA,EAKxB,MAAO,CAACA,EAAQqe,IAJXrS,IAAYA,EAAQwqD,cAAgBxqD,EAAQ6rD,mBAAsB95C,EAAInhB,KAAKK,OAAOmB,UAAWigB,MAC9Fre,EAAOqe,IAAU,GAMzB,OAAOre,EAGX,IAAKA,GAA4B,iBAAXA,EAClB,MAAO,CAACA,GAAQoJ,OAAOiV,GAG3B,IAAIy5C,EAAc93D,EAKlB,OAJI/B,EAAQ+B,KAAY/B,EAAQogB,KAC5By5C,EAAcvB,EAAcv2D,EAAQgM,IAGpC/N,EAAQ+B,IAAW/B,EAAQogB,IAC3BA,EAAOvQ,SAAQ,SAAUsP,EAAM7gB,GAC3B,GAAIwhB,EAAInhB,KAAKoD,EAAQzD,GAAI,CACrB,IAAIw7D,EAAa/3D,EAAOzD,GACpBw7D,GAAoC,iBAAfA,GAA2B36C,GAAwB,iBAATA,EAC/Dpd,EAAOzD,GAAK0nB,EAAM8zC,EAAY36C,EAAMpR,GAEpChM,EAAOyC,KAAK2a,QAGhBpd,EAAOzD,GAAK6gB,KAGbpd,GAGJ/C,OAAO4Q,KAAKwQ,GAAQq4C,QAAO,SAAUC,EAAKr4D,GAC7C,IAAInB,EAAQkhB,EAAO/f,GAOnB,OALIyf,EAAInhB,KAAK+5D,EAAKr4D,GACdq4D,EAAIr4D,GAAO2lB,EAAM0yC,EAAIr4D,GAAMnB,EAAO6O,GAElC2qD,EAAIr4D,GAAOnB,EAERw5D,IACRmB,gBCpGP,IAAIjZ,EAAW,EAAQ,KACnBzV,EAAc,EAAQ,KACtBnrC,EAAU,EAAQ,IAClBqwD,EAAU,EAAQ,KAClBntB,EAAW,EAAQ,KACnB2d,EAAQ,EAAQ,KAiCpBtgD,EAAOC,QAtBP,SAAiBqG,EAAQ2zB,EAAMu/B,GAO7B,IAJA,IAAIrgD,GAAS,EACT/Z,GAHJ66B,EAAOomB,EAASpmB,EAAM3zB,IAGJlH,OACd0D,GAAS,IAEJqW,EAAQ/Z,GAAQ,CACvB,IAAIU,EAAMwgD,EAAMrmB,EAAK9gB,IACrB,KAAMrW,EAAmB,MAAVwD,GAAkBkzD,EAAQlzD,EAAQxG,IAC/C,MAEFwG,EAASA,EAAOxG,GAElB,OAAIgD,KAAYqW,GAAS/Z,EAChB0D,KAET1D,EAAmB,MAAVkH,EAAiB,EAAIA,EAAOlH,SAClBujC,EAASvjC,IAAW0wD,EAAQhwD,EAAKV,KACjDK,EAAQ6G,IAAWskC,EAAYtkC,kBCnCpC,IAAImoD,EAAW,EAAQ,KACnBgL,EAAgB,EAAQ,KACxBC,EAAoB,EAAQ,KAC5B/K,EAAW,EAAQ,KACnBgL,EAAY,EAAQ,KACpBC,EAAa,EAAQ,KAkEzB55D,EAAOC,QApDP,SAAkBoM,EAAOqkD,EAAUmJ,GACjC,IAAI1gD,GAAS,EACTtZ,EAAW45D,EACXr6D,EAASiN,EAAMjN,OACf06D,GAAW,EACXh3D,EAAS,GACTosD,EAAOpsD,EAEX,GAAI+2D,EACFC,GAAW,EACXj6D,EAAW65D,OAER,GAAIt6D,GAvBY,IAuBgB,CACnC,IAAIgM,EAAMslD,EAAW,KAAOiJ,EAAUttD,GACtC,GAAIjB,EACF,OAAOwuD,EAAWxuD,GAEpB0uD,GAAW,EACXj6D,EAAW8uD,EACXO,EAAO,IAAIT,OAGXS,EAAOwB,EAAW,GAAK5tD,EAEzBi3D,EACA,OAAS5gD,EAAQ/Z,GAAQ,CACvB,IAAIT,EAAQ0N,EAAM8M,GACd7I,EAAWogD,EAAWA,EAAS/xD,GAASA,EAG5C,GADAA,EAASk7D,GAAwB,IAAVl7D,EAAeA,EAAQ,EAC1Cm7D,GAAYxpD,GAAaA,EAAU,CAErC,IADA,IAAI0pD,EAAY9K,EAAK9vD,OACd46D,KACL,GAAI9K,EAAK8K,KAAe1pD,EACtB,SAASypD,EAGTrJ,GACFxB,EAAKjrD,KAAKqM,GAEZxN,EAAOmB,KAAKtF,QAEJkB,EAASqvD,EAAM5+C,EAAUupD,KAC7B3K,IAASpsD,GACXosD,EAAKjrD,KAAKqM,GAEZxN,EAAOmB,KAAKtF,IAGhB,OAAOmE,qBC7CT,IAOIm3D,EAPAC,EAAuB,iBAAZt4D,QAAuBA,QAAU,KAC5Cu4D,EAAeD,GAAwB,mBAAZA,EAAEx6D,MAC7Bw6D,EAAEx6D,MACF,SAAsB8B,EAAQ44D,EAAUluD,GACxC,OAAO2N,SAASja,UAAUF,MAAMtB,KAAKoD,EAAQ44D,EAAUluD,IAKzD+tD,EADEC,GAA0B,mBAAdA,EAAEG,QACCH,EAAEG,QACV57D,OAAO2C,sBACC,SAAwBI,GACvC,OAAO/C,OAAOigB,oBAAoBld,GAC/BoJ,OAAOnM,OAAO2C,sBAAsBI,KAGxB,SAAwBA,GACvC,OAAO/C,OAAOigB,oBAAoBld,IAQtC,IAAI84D,EAAc/7D,OAAOiM,OAAS,SAAqB7L,GACrD,OAAOA,GAAUA,GAGnB,SAASyuB,IACPA,EAAawmB,KAAKx1C,KAAKuC,MAEzBX,EAAOC,QAAUmtB,EACjBptB,EAAOC,QAAQ4F,KAwYf,SAAc00D,EAAS7zD,GACrB,OAAO,IAAInE,SAAQ,SAAUC,EAASC,GACpC,SAAS+3D,EAAc7lD,GACrB4lD,EAAQE,eAAe/zD,EAAMg0D,GAC7Bj4D,EAAOkS,GAGT,SAAS+lD,IAC+B,mBAA3BH,EAAQE,gBACjBF,EAAQE,eAAe,QAASD,GAElCh4D,EAAQ,GAAGyJ,MAAM7N,KAAKe,YAGxBw7D,EAA+BJ,EAAS7zD,EAAMg0D,EAAU,CAAE70D,MAAM,IACnD,UAATa,GAMR,SAAuC6zD,EAASvkD,EAAS4kD,GAC7B,mBAAfL,EAAQntB,IACjButB,EAA+BJ,EAAS,QAASvkD,EAAS4kD,GAPxDC,CAA8BN,EAASC,EAAe,CAAE30D,MAAM,QArZpEunB,EAAaA,aAAeA,EAE5BA,EAAaxtB,UAAUk7D,aAAU/zD,EACjCqmB,EAAaxtB,UAAUm7D,aAAe,EACtC3tC,EAAaxtB,UAAUo7D,mBAAgBj0D,EAIvC,IAAIk0D,EAAsB,GAE1B,SAASC,EAAc/kD,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAI9X,UAAU,0EAA4E8X,GAsCpG,SAASglD,EAAiBhjB,GACxB,YAA2BpxC,IAAvBoxC,EAAK6iB,cACA5tC,EAAa6tC,oBACf9iB,EAAK6iB,cAmDd,SAASI,EAAa55D,EAAQ4S,EAAM+B,EAAUklD,GAC5C,IAAIj3D,EACAk3D,EACAC,EA1HsBC,EAgJ1B,GApBAN,EAAc/kD,QAGCpP,KADfu0D,EAAS95D,EAAOs5D,UAEdQ,EAAS95D,EAAOs5D,QAAUr8D,OAAOoC,OAAO,MACxCW,EAAOu5D,aAAe,SAIKh0D,IAAvBu0D,EAAOG,cACTj6D,EAAOsyB,KAAK,cAAe1f,EACf+B,EAASA,SAAWA,EAASA,SAAWA,GAIpDmlD,EAAS95D,EAAOs5D,SAElBS,EAAWD,EAAOlnD,SAGHrN,IAAbw0D,EAEFA,EAAWD,EAAOlnD,GAAQ+B,IACxB3U,EAAOu5D,kBAeT,GAbwB,mBAAbQ,EAETA,EAAWD,EAAOlnD,GAChBinD,EAAU,CAACllD,EAAUolD,GAAY,CAACA,EAAUplD,GAErCklD,EACTE,EAASz3C,QAAQ3N,GAEjBolD,EAASt3D,KAAKkS,IAIhB/R,EAAI+2D,EAAiB35D,IACb,GAAK+5D,EAASn8D,OAASgF,IAAMm3D,EAASG,OAAQ,CACpDH,EAASG,QAAS,EAGlB,IAAIC,EAAI,IAAI/1D,MAAM,+CACE21D,EAASn8D,OAAS,IAAMd,OAAO8V,GADjC,qEAIlBunD,EAAEj1D,KAAO,8BACTi1D,EAAEpB,QAAU/4D,EACZm6D,EAAEvnD,KAAOA,EACTunD,EAAEC,MAAQL,EAASn8D,OA7KGo8D,EA8KHG,EA7KnBtiD,SAAWA,QAAQ4B,MAAM5B,QAAQ4B,KAAKugD,GAiL1C,OAAOh6D,EAcT,SAASq6D,IACP,IAAKl7D,KAAKm7D,MAGR,OAFAn7D,KAAKa,OAAOi5D,eAAe95D,KAAKyT,KAAMzT,KAAKo7D,QAC3Cp7D,KAAKm7D,OAAQ,EACY,IAArB38D,UAAUC,OACLuB,KAAKwV,SAAS/X,KAAKuC,KAAKa,QAC1Bb,KAAKwV,SAASzW,MAAMiB,KAAKa,OAAQrC,WAI5C,SAAS68D,EAAUx6D,EAAQ4S,EAAM+B,GAC/B,IAAI8f,EAAQ,CAAE6lC,OAAO,EAAOC,YAAQh1D,EAAWvF,OAAQA,EAAQ4S,KAAMA,EAAM+B,SAAUA,GACjF8lD,EAAUJ,EAAYzgD,KAAK6a,GAG/B,OAFAgmC,EAAQ9lD,SAAWA,EACnB8f,EAAM8lC,OAASE,EACRA,EA0HT,SAASC,EAAW16D,EAAQ4S,EAAM+T,GAChC,IAAImzC,EAAS95D,EAAOs5D,QAEpB,QAAe/zD,IAAXu0D,EACF,MAAO,GAET,IAAIa,EAAab,EAAOlnD,GACxB,YAAmBrN,IAAfo1D,EACK,GAEiB,mBAAfA,EACFh0C,EAAS,CAACg0C,EAAWhmD,UAAYgmD,GAAc,CAACA,GAElDh0C,EAsDT,SAAyB8wC,GAEvB,IADA,IAAIzoB,EAAM,IAAIhxC,MAAMy5D,EAAI75D,QACfrB,EAAI,EAAGA,EAAIyyC,EAAIpxC,SAAUrB,EAChCyyC,EAAIzyC,GAAKk7D,EAAIl7D,GAAGoY,UAAY8iD,EAAIl7D,GAElC,OAAOyyC,EA1DL4rB,CAAgBD,GAAcE,EAAWF,EAAYA,EAAW/8D,QAoBpE,SAASk9D,EAAcloD,GACrB,IAAIknD,EAAS36D,KAAKm6D,QAElB,QAAe/zD,IAAXu0D,EAAsB,CACxB,IAAIa,EAAab,EAAOlnD,GAExB,GAA0B,mBAAf+nD,EACT,OAAO,EACF,QAAmBp1D,IAAfo1D,EACT,OAAOA,EAAW/8D,OAItB,OAAO,EAOT,SAASi9D,EAAWpD,EAAKh4D,GAEvB,IADA,IAAI2oD,EAAO,IAAIpqD,MAAMyB,GACZlD,EAAI,EAAGA,EAAIkD,IAAKlD,EACvB6rD,EAAK7rD,GAAKk7D,EAAIl7D,GAChB,OAAO6rD,EA4CT,SAAS+Q,EAA+BJ,EAAS7zD,EAAMyP,EAAUykD,GAC/D,GAA0B,mBAAfL,EAAQntB,GACbwtB,EAAM/0D,KACR00D,EAAQ10D,KAAKa,EAAMyP,GAEnBokD,EAAQntB,GAAG1mC,EAAMyP,OAEd,IAAwC,mBAA7BokD,EAAQzlB,iBAYxB,MAAM,IAAIz2C,UAAU,6EAA+Ek8D,GATnGA,EAAQzlB,iBAAiBpuC,GAAM,SAAS61D,EAAal9D,GAG/Cu7D,EAAM/0D,MACR00D,EAAQiC,oBAAoB91D,EAAM61D,GAEpCpmD,EAAS9W,OAhafZ,OAAOC,eAAe0uB,EAAc,sBAAuB,CACzDxuB,YAAY,EACZsM,IAAK,WACH,OAAO+vD,GAET7vD,IAAK,SAAS/L,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKi7D,EAAYj7D,GACpD,MAAM,IAAIo9D,WAAW,kGAAoGp9D,EAAM,KAEjI47D,EAAsB57D,KAI1B+tB,EAAawmB,KAAO,gBAEG7sC,IAAjBpG,KAAKm6D,SACLn6D,KAAKm6D,UAAYr8D,OAAO2H,eAAezF,MAAMm6D,UAC/Cn6D,KAAKm6D,QAAUr8D,OAAOoC,OAAO,MAC7BF,KAAKo6D,aAAe,GAGtBp6D,KAAKq6D,cAAgBr6D,KAAKq6D,oBAAiBj0D,GAK7CqmB,EAAaxtB,UAAU88D,gBAAkB,SAAyBz7D,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKq5D,EAAYr5D,GAChD,MAAM,IAAIw7D,WAAW,gFAAkFx7D,EAAI,KAG7G,OADAN,KAAKq6D,cAAgB/5D,EACdN,MASTysB,EAAaxtB,UAAU+8D,gBAAkB,WACvC,OAAOxB,EAAiBx6D,OAG1BysB,EAAaxtB,UAAUk0B,KAAO,SAAc1f,GAE1C,IADA,IAAIlI,EAAO,GACFnO,EAAI,EAAGA,EAAIoB,UAAUC,OAAQrB,IAAKmO,EAAKjI,KAAK9E,UAAUpB,IAC/D,IAAI6+D,EAAoB,UAATxoD,EAEXknD,EAAS36D,KAAKm6D,QAClB,QAAe/zD,IAAXu0D,EACFsB,EAAWA,QAA4B71D,IAAjBu0D,EAAO/2D,WAC1B,IAAKq4D,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFI3wD,EAAK9M,OAAS,IAChBy9D,EAAK3wD,EAAK,IACR2wD,aAAcj3D,MAGhB,MAAMi3D,EAGR,IAAIloD,EAAM,IAAI/O,MAAM,oBAAsBi3D,EAAK,KAAOA,EAAGp3D,QAAU,IAAM,KAEzE,MADAkP,EAAIhF,QAAUktD,EACRloD,EAGR,IAAIqB,EAAUslD,EAAOlnD,GAErB,QAAgBrN,IAAZiP,EACF,OAAO,EAET,GAAuB,mBAAZA,EACTmkD,EAAankD,EAASrV,KAAMuL,OAE5B,KAAI0gC,EAAM52B,EAAQ5W,OACdid,EAAYggD,EAAWrmD,EAAS42B,GACpC,IAAS7uC,EAAI,EAAGA,EAAI6uC,IAAO7uC,EACzBo8D,EAAa99C,EAAUte,GAAI4C,KAAMuL,GAGrC,OAAO,GAiETkhB,EAAaxtB,UAAUk9D,YAAc,SAAqB1oD,EAAM+B,GAC9D,OAAOilD,EAAaz6D,KAAMyT,EAAM+B,GAAU,IAG5CiX,EAAaxtB,UAAUwtC,GAAKhgB,EAAaxtB,UAAUk9D,YAEnD1vC,EAAaxtB,UAAUm9D,gBACnB,SAAyB3oD,EAAM+B,GAC7B,OAAOilD,EAAaz6D,KAAMyT,EAAM+B,GAAU,IAqBhDiX,EAAaxtB,UAAUiG,KAAO,SAAcuO,EAAM+B,GAGhD,OAFA+kD,EAAc/kD,GACdxV,KAAKysC,GAAGh5B,EAAM4nD,EAAUr7D,KAAMyT,EAAM+B,IAC7BxV,MAGTysB,EAAaxtB,UAAUo9D,oBACnB,SAA6B5oD,EAAM+B,GAGjC,OAFA+kD,EAAc/kD,GACdxV,KAAKo8D,gBAAgB3oD,EAAM4nD,EAAUr7D,KAAMyT,EAAM+B,IAC1CxV,MAIbysB,EAAaxtB,UAAU66D,eACnB,SAAwBrmD,EAAM+B,GAC5B,IAAI8C,EAAMqiD,EAAQ2B,EAAUl/D,EAAGm/D,EAK/B,GAHAhC,EAAc/kD,QAGCpP,KADfu0D,EAAS36D,KAAKm6D,SAEZ,OAAOn6D,KAGT,QAAaoG,KADbkS,EAAOqiD,EAAOlnD,IAEZ,OAAOzT,KAET,GAAIsY,IAAS9C,GAAY8C,EAAK9C,WAAaA,EACb,KAAtBxV,KAAKo6D,aACTp6D,KAAKm6D,QAAUr8D,OAAOoC,OAAO,cAEtBy6D,EAAOlnD,GACVknD,EAAOb,gBACT95D,KAAKmzB,KAAK,iBAAkB1f,EAAM6E,EAAK9C,UAAYA,SAElD,GAAoB,mBAAT8C,EAAqB,CAGrC,IAFAgkD,GAAY,EAEPl/D,EAAIkb,EAAK7Z,OAAS,EAAGrB,GAAK,EAAGA,IAChC,GAAIkb,EAAKlb,KAAOoY,GAAY8C,EAAKlb,GAAGoY,WAAaA,EAAU,CACzD+mD,EAAmBjkD,EAAKlb,GAAGoY,SAC3B8mD,EAAWl/D,EACX,MAIJ,GAAIk/D,EAAW,EACb,OAAOt8D,KAEQ,IAAbs8D,EACFhkD,EAAK4K,QAiIf,SAAmB5K,EAAME,GACvB,KAAOA,EAAQ,EAAIF,EAAK7Z,OAAQ+Z,IAC9BF,EAAKE,GAASF,EAAKE,EAAQ,GAC7BF,EAAKjV,MAlIGm5D,CAAUlkD,EAAMgkD,GAGE,IAAhBhkD,EAAK7Z,SACPk8D,EAAOlnD,GAAQ6E,EAAK,SAEQlS,IAA1Bu0D,EAAOb,gBACT95D,KAAKmzB,KAAK,iBAAkB1f,EAAM8oD,GAAoB/mD,GAG1D,OAAOxV,MAGbysB,EAAaxtB,UAAUw9D,IAAMhwC,EAAaxtB,UAAU66D,eAEpDrtC,EAAaxtB,UAAUy9D,mBACnB,SAA4BjpD,GAC1B,IAAIiI,EAAWi/C,EAAQv9D,EAGvB,QAAegJ,KADfu0D,EAAS36D,KAAKm6D,SAEZ,OAAOn6D,KAGT,QAA8BoG,IAA1Bu0D,EAAOb,eAUT,OATyB,IAArBt7D,UAAUC,QACZuB,KAAKm6D,QAAUr8D,OAAOoC,OAAO,MAC7BF,KAAKo6D,aAAe,QACMh0D,IAAjBu0D,EAAOlnD,KACY,KAAtBzT,KAAKo6D,aACTp6D,KAAKm6D,QAAUr8D,OAAOoC,OAAO,aAEtBy6D,EAAOlnD,IAEXzT,KAIT,GAAyB,IAArBxB,UAAUC,OAAc,CAC1B,IACIU,EADAuP,EAAO5Q,OAAO4Q,KAAKisD,GAEvB,IAAKv9D,EAAI,EAAGA,EAAIsR,EAAKjQ,SAAUrB,EAEjB,oBADZ+B,EAAMuP,EAAKtR,KAEX4C,KAAK08D,mBAAmBv9D,GAK1B,OAHAa,KAAK08D,mBAAmB,kBACxB18D,KAAKm6D,QAAUr8D,OAAOoC,OAAO,MAC7BF,KAAKo6D,aAAe,EACbp6D,KAKT,GAAyB,mBAFzB0b,EAAYi/C,EAAOlnD,IAGjBzT,KAAK85D,eAAermD,EAAMiI,QACrB,QAAkBtV,IAAdsV,EAET,IAAKte,EAAIse,EAAUjd,OAAS,EAAGrB,GAAK,EAAGA,IACrC4C,KAAK85D,eAAermD,EAAMiI,EAAUte,IAIxC,OAAO4C,MAoBbysB,EAAaxtB,UAAUyc,UAAY,SAAmBjI,GACpD,OAAO8nD,EAAWv7D,KAAMyT,GAAM,IAGhCgZ,EAAaxtB,UAAU09D,aAAe,SAAsBlpD,GAC1D,OAAO8nD,EAAWv7D,KAAMyT,GAAM,IAGhCgZ,EAAakvC,cAAgB,SAAS/B,EAASnmD,GAC7C,MAAqC,mBAA1BmmD,EAAQ+B,cACV/B,EAAQ+B,cAAcloD,GAEtBkoD,EAAcl+D,KAAKm8D,EAASnmD,IAIvCgZ,EAAaxtB,UAAU08D,cAAgBA,EAiBvClvC,EAAaxtB,UAAU29D,WAAa,WAClC,OAAO58D,KAAKo6D,aAAe,EAAId,EAAet5D,KAAKm6D,SAAW,qBCxahE,IAAI0C,EAAkB,EAAQ,KAC1BC,EAAiB,EAAQ,KACzBC,EAAe,EAAQ,KACvBj+D,EAAU,EAAQ,IAmBtBO,EAAOC,QATP,SAA0B2W,EAAQ7J,GAChC,OAAO,SAAS4wD,EAAYjN,GAC1B,IAAI5qD,EAAOrG,EAAQk+D,GAAcH,EAAkBC,EAC/C54C,EAAc9X,EAAcA,IAAgB,GAEhD,OAAOjH,EAAK63D,EAAY/mD,EAAQ8mD,EAAahN,EAAU,GAAI7rC,gBClB/D,IAAI+4C,EAAc,EAAQ,KACtBC,EAAsB,EAAQ,KAC9BxzD,EAAW,EAAQ,KACnB5K,EAAU,EAAQ,IAClBma,EAAW,EAAQ,KA0BvB5Z,EAAOC,QAjBP,SAAsBtB,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACK0L,EAEW,iBAAT1L,EACFc,EAAQd,GACXk/D,EAAoBl/D,EAAM,GAAIA,EAAM,IACpCi/D,EAAYj/D,GAEXib,EAASjb,eC3BlB,IAAIsyC,EAAQ,EAAQ,KAChBzD,EAAc,EAAQ,KA4D1BxtC,EAAOC,QA5CP,SAAqBqG,EAAQuZ,EAAQi+C,EAAWjyB,GAC9C,IAAI1yB,EAAQ2kD,EAAU1+D,OAClBA,EAAS+Z,EACT4kD,GAAgBlyB,EAEpB,GAAc,MAAVvlC,EACF,OAAQlH,EAGV,IADAkH,EAAS7H,OAAO6H,GACT6S,KAAS,CACd,IAAIkU,EAAOywC,EAAU3kD,GACrB,GAAK4kD,GAAgB1wC,EAAK,GAClBA,EAAK,KAAO/mB,EAAO+mB,EAAK,MACtBA,EAAK,KAAM/mB,GAEnB,OAAO,EAGX,OAAS6S,EAAQ/Z,GAAQ,CAEvB,IAAIU,GADJutB,EAAOywC,EAAU3kD,IACF,GACXsnC,EAAWn6C,EAAOxG,GAClBk+D,EAAW3wC,EAAK,GAEpB,GAAI0wC,GAAgB1wC,EAAK,IACvB,QAAiBtmB,IAAb05C,KAA4B3gD,KAAOwG,GACrC,OAAO,MAEJ,CACL,IAAIm5C,EAAQ,IAAIxO,EAChB,GAAIpF,EACF,IAAI/oC,EAAS+oC,EAAW4U,EAAUud,EAAUl+D,EAAKwG,EAAQuZ,EAAQ4/B,GAEnE,UAAiB14C,IAAXjE,EACE0qC,EAAYwwB,EAAUvd,EAAUwd,EAA+CpyB,EAAY4T,GAC3F38C,GAEN,OAAO,GAIb,OAAO,cC1DT,IAAIo7D,EAAqB,EAAQ,KAC7B7uD,EAAO,EAAQ,KAsBnBrP,EAAOC,QAbP,SAAsBqG,GAIpB,IAHA,IAAIxD,EAASuM,EAAK/I,GACdlH,EAAS0D,EAAO1D,OAEbA,KAAU,CACf,IAAIU,EAAMgD,EAAO1D,GACbT,EAAQ2H,EAAOxG,GAEnBgD,EAAO1D,GAAU,CAACU,EAAKnB,EAAOu/D,EAAmBv/D,IAEnD,OAAOmE,cCpBT,IAAImD,EAAW,EAAQ,IAcvBjG,EAAOC,QAJP,SAA4BtB,GAC1B,OAAOA,GAAUA,IAAUsH,EAAStH,SCQtCqB,EAAOC,QAVP,SAAiCH,EAAKk+D,GACpC,OAAO,SAAS13D,GACd,OAAc,MAAVA,IAGGA,EAAOxG,KAASk+D,SACPj3D,IAAbi3D,GAA2Bl+D,KAAOrB,OAAO6H,0BCZhD,SAAS63D,IACPx9D,KAAKy9D,MAAQ,IAAI14B,YAAY,IAC7B/kC,KAAK09D,MAAQ,IAAI34B,YAAY,KAG/B,SAAS44B,EAAKz+C,EAAQ4sB,GACpB9rC,KAAKkf,OAASA,EACdlf,KAAK49D,YAAc,EACnB59D,KAAKuxC,IAAM,EACXvxC,KAAK69D,SAAW,EAEhB79D,KAAK8rC,KAAOA,EACZ9rC,KAAK89D,QAAU,EAEf99D,KAAK+9D,MAAQ,IAAIP,EACjBx9D,KAAKg+D,MAAQ,IAAIR,EAOnB,IAAIS,EAAS,IAAIT,EACbU,EAAS,IAAIV,EAGbW,EAAc,IAAI96B,WAAW,IAC7B+6B,EAAc,IAAIr5B,YAAY,IAG9Bs5B,EAAY,IAAIh7B,WAAW,IAC3Bi7B,EAAY,IAAIv5B,YAAY,IAG5Bw5B,EAAS,IAAIl7B,WAAW,CAC1B,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EACxB,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACzB,GAAI,EAAG,KAILm7B,EAAY,IAAIhB,EAChBiB,EAAU,IAAIp7B,WAAW,KAO7B,SAASq7B,EAAqBC,EAAMhvB,EAAM1tB,EAAOgkB,GAC/C,IAAI7oC,EAAGwhE,EAGP,IAAKxhE,EAAI,EAAGA,EAAI6kB,IAAS7kB,EAAGuhE,EAAKvhE,GAAK,EACtC,IAAKA,EAAI,EAAGA,EAAI,GAAK6kB,IAAS7kB,EAAGuhE,EAAKvhE,EAAI6kB,GAAS7kB,EAAI6kB,EAAQ,EAG/D,IAAK28C,EAAM34B,EAAO7oC,EAAI,EAAGA,EAAI,KAAMA,EACjCuyC,EAAKvyC,GAAKwhE,EACVA,GAAO,GAAKD,EAAKvhE,GA6BrB,IAAIyhE,EAAO,IAAI95B,YAAY,IAE3B,SAAS+5B,EAAgB3hE,EAAGshE,EAAShC,EAAKsC,GACxC,IAAI3hE,EAAGwhE,EAGP,IAAKxhE,EAAI,EAAGA,EAAI,KAAMA,EAAGD,EAAEsgE,MAAMrgE,GAAK,EAGtC,IAAKA,EAAI,EAAGA,EAAI2hE,IAAO3hE,EAAGD,EAAEsgE,MAAMgB,EAAQhC,EAAMr/D,MAKhD,IAHAD,EAAEsgE,MAAM,GAAK,EAGRmB,EAAM,EAAGxhE,EAAI,EAAGA,EAAI,KAAMA,EAC7ByhE,EAAKzhE,GAAKwhE,EACVA,GAAOzhE,EAAEsgE,MAAMrgE,GAIjB,IAAKA,EAAI,EAAGA,EAAI2hE,IAAO3hE,EACjBqhE,EAAQhC,EAAMr/D,KAAID,EAAEugE,MAAMmB,EAAKJ,EAAQhC,EAAMr/D,OAASA,GAS9D,SAAS4hE,EAAYv/D,GAEdA,EAAEo+D,aAELp+D,EAAE8xC,IAAM9xC,EAAEyf,OAAOzf,EAAEm+D,eACnBn+D,EAAEo+D,SAAW,GAIf,IAAIvI,EAAc,EAAR71D,EAAE8xC,IAGZ,OAFA9xC,EAAE8xC,OAAS,EAEJ+jB,EAIT,SAAS2J,EAAex/D,EAAGs/D,EAAKpvB,GAC9B,IAAKovB,EACH,OAAOpvB,EAET,KAAOlwC,EAAEo+D,SAAW,IAClBp+D,EAAE8xC,KAAO9xC,EAAEyf,OAAOzf,EAAEm+D,gBAAkBn+D,EAAEo+D,SACxCp+D,EAAEo+D,UAAY,EAGhB,IAAI9/B,EAAMt+B,EAAE8xC,IAAO,QAAY,GAAKwtB,EAGpC,OAFAt/D,EAAE8xC,OAASwtB,EACXt/D,EAAEo+D,UAAYkB,EACPhhC,EAAM4R,EAIf,SAASuvB,EAAmBz/D,EAAGtC,GAC7B,KAAOsC,EAAEo+D,SAAW,IAClBp+D,EAAE8xC,KAAO9xC,EAAEyf,OAAOzf,EAAEm+D,gBAAkBn+D,EAAEo+D,SACxCp+D,EAAEo+D,UAAY,EAGhB,IAAIe,EAAM,EAAGO,EAAM,EAAGlzB,EAAM,EACxBsF,EAAM9xC,EAAE8xC,IAGZ,GACE4tB,EAAM,EAAIA,GAAa,EAAN5tB,GACjBA,KAAS,IACPtF,EAEF2yB,GAAOzhE,EAAEsgE,MAAMxxB,GACfkzB,GAAOhiE,EAAEsgE,MAAMxxB,SACRkzB,GAAO,GAKhB,OAHA1/D,EAAE8xC,IAAMA,EACR9xC,EAAEo+D,UAAY5xB,EAEP9uC,EAAEugE,MAAMkB,EAAMO,GAIvB,SAASC,EAAkB3/D,EAAG4/D,EAAIC,GAChC,IAAIC,EAAMC,EAAOC,EACbriE,EAAG2hE,EAAKtgE,EAWZ,IARA8gE,EAAON,EAAex/D,EAAG,EAAG,KAG5B+/D,EAAQP,EAAex/D,EAAG,EAAG,GAG7BggE,EAAQR,EAAex/D,EAAG,EAAG,GAExBrC,EAAI,EAAGA,EAAI,KAAMA,EAAGqhE,EAAQrhE,GAAK,EAGtC,IAAKA,EAAI,EAAGA,EAAIqiE,IAASriE,EAAG,CAE1B,IAAIsiE,EAAOT,EAAex/D,EAAG,EAAG,GAChCg/D,EAAQF,EAAOnhE,IAAMsiE,EAOvB,IAHAZ,EAAgBN,EAAWC,EAAS,EAAG,IAGlCM,EAAM,EAAGA,EAAMQ,EAAOC,GAAQ,CACjC,IAAIG,EAAMT,EAAmBz/D,EAAG++D,GAEhC,OAAQmB,GACN,KAAK,GAEH,IAAIrtD,EAAOmsD,EAAQM,EAAM,GACzB,IAAKtgE,EAASwgE,EAAex/D,EAAG,EAAG,GAAIhB,IAAUA,EAC/CggE,EAAQM,KAASzsD,EAEnB,MACF,KAAK,GAEH,IAAK7T,EAASwgE,EAAex/D,EAAG,EAAG,GAAIhB,IAAUA,EAC/CggE,EAAQM,KAAS,EAEnB,MACF,KAAK,GAEH,IAAKtgE,EAASwgE,EAAex/D,EAAG,EAAG,IAAKhB,IAAUA,EAChDggE,EAAQM,KAAS,EAEnB,MACF,QAEEN,EAAQM,KAASY,GAMvBb,EAAgBO,EAAIZ,EAAS,EAAGc,GAChCT,EAAgBQ,EAAIb,EAASc,EAAMC,GAQrC,SAASI,EAAwBngE,EAAG4/D,EAAIC,GACtC,OAAU,CACR,IAUM7gE,EAAQohE,EAAMhB,EACdzhE,EAXFuiE,EAAMT,EAAmBz/D,EAAG4/D,GAGhC,GAAY,MAARM,EACF,OA3PQ,EA8PV,GAAIA,EAAM,IACRlgE,EAAEqsC,KAAKrsC,EAAEq+D,WAAa6B,OAgBtB,IARAlhE,EAASwgE,EAAex/D,EAAG0+D,EAH3BwB,GAAO,KAGsCvB,EAAYuB,IAEzDE,EAAOX,EAAmBz/D,EAAG6/D,GAMxBliE,EAHLyhE,EAAOp/D,EAAEq+D,QAAUmB,EAAex/D,EAAG4+D,EAAUwB,GAAOvB,EAAUuB,IAGjDziE,EAAIyhE,EAAOpgE,IAAUrB,EAClCqC,EAAEqsC,KAAKrsC,EAAEq+D,WAAar+D,EAAEqsC,KAAK1uC,IAOrC,SAAS0iE,EAAgCrgE,GAKvC,IAJA,IAAIhB,EACArB,EAGGqC,EAAEo+D,SAAW,GAClBp+D,EAAEm+D,cACFn+D,EAAEo+D,UAAY,EAYhB,IAPAp/D,EAAS,KADTA,EAASgB,EAAEyf,OAAOzf,EAAEm+D,YAAc,IACVn+D,EAAEyf,OAAOzf,EAAEm+D,iBAON,QAHjB,IADAn+D,EAAEyf,OAAOzf,EAAEm+D,YAAc,GACPn+D,EAAEyf,OAAOzf,EAAEm+D,YAAc,KAIrD,OA1SkB,EA+SpB,IAHAn+D,EAAEm+D,aAAe,EAGZxgE,EAAIqB,EAAQrB,IAAKA,EACpBqC,EAAEqsC,KAAKrsC,EAAEq+D,WAAar+D,EAAEyf,OAAOzf,EAAEm+D,eAKnC,OAFAn+D,EAAEo+D,SAAW,EApTD,GAmEd,SAAgCwB,EAAIC,GAClC,IAAIliE,EAGJ,IAAKA,EAAI,EAAGA,EAAI,IAAKA,EAAGiiE,EAAG5B,MAAMrgE,GAAK,EAMtC,IAJAiiE,EAAG5B,MAAM,GAAK,GACd4B,EAAG5B,MAAM,GAAK,IACd4B,EAAG5B,MAAM,GAAK,IAETrgE,EAAI,EAAGA,EAAI,KAAMA,EAAGiiE,EAAG3B,MAAMtgE,GAAK,IAAMA,EAC7C,IAAKA,EAAI,EAAGA,EAAI,MAAOA,EAAGiiE,EAAG3B,MAAM,GAAKtgE,GAAKA,EAC7C,IAAKA,EAAI,EAAGA,EAAI,IAAKA,EAAGiiE,EAAG3B,MAAM,IAAWtgE,GAAK,IAAMA,EACvD,IAAKA,EAAI,EAAGA,EAAI,MAAOA,EAAGiiE,EAAG3B,MAAM,IAAetgE,GAAK,IAAMA,EAG7D,IAAKA,EAAI,EAAGA,EAAI,IAAKA,EAAGkiE,EAAG7B,MAAMrgE,GAAK,EAItC,IAFAkiE,EAAG7B,MAAM,GAAK,GAETrgE,EAAI,EAAGA,EAAI,KAAMA,EAAGkiE,EAAG5B,MAAMtgE,GAAKA,EAqRzC2iE,CAAuB9B,EAAQC,GAG/BQ,EAAqBP,EAAaC,EAAa,EAAG,GAClDM,EAAqBL,EAAWC,EAAW,EAAG,GAG9CH,EAAY,IAAM,EAClBC,EAAY,IAAM,IAElB/+D,EAAOC,QA5DP,SAAyB4f,EAAQ4sB,GAC/B,IACIk0B,EAAet5D,EADfjH,EAAI,IAAIk+D,EAAKz+C,EAAQ4sB,GAGzB,EAAG,CAQD,OANAk0B,EAAShB,EAAYv/D,GAGbw/D,EAAex/D,EAAG,EAAG,IAI3B,KAAK,EAEHiH,EAAMo5D,EAAgCrgE,GACtC,MACF,KAAK,EAEHiH,EAAMk5D,EAAwBngE,EAAGw+D,EAAQC,GACzC,MACF,KAAK,EAEHkB,EAAkB3/D,EAAGA,EAAEs+D,MAAOt+D,EAAEu+D,OAChCt3D,EAAMk5D,EAAwBngE,EAAGA,EAAEs+D,MAAOt+D,EAAEu+D,OAC5C,MACF,QACEt3D,GApVc,EAuVlB,GAxVU,IAwVNA,EACF,MAAM,IAAIzB,MAAM,qBAEV+6D,GAEV,OAAIvgE,EAAEq+D,QAAUr+D,EAAEqsC,KAAKrtC,OACO,mBAAjBgB,EAAEqsC,KAAKxgC,MACT7L,EAAEqsC,KAAKxgC,MAAM,EAAG7L,EAAEq+D,SAElBr+D,EAAEqsC,KAAKH,SAAS,EAAGlsC,EAAEq+D,SAGzBr+D,EAAEqsC,wBClTXzsC,EAAOC,QAzBP,SAAiB2gE,EAAOv0B,EAAKO,EAAKI,GAKhC,IAJA,IAAI6zB,EAAc,MAARD,EAAiB,EACvBE,EAAOF,IAAU,GAAM,MAAS,EAChC3/D,EAAI,EAEO,IAAR2rC,GAAW,CAKhBA,GADA3rC,EAAI2rC,EAAM,IAAO,IAAOA,EAGxB,GAEEk0B,EAAMA,GADND,EAAMA,EAAKx0B,EAAIW,KAAS,GACR,UACP/rC,GAEX4/D,GAAM,MACNC,GAAM,MAGR,OAAQD,EAAMC,GAAM,GAAM,qBCL5B,IAAIC,EAfJ,WAGE,IAFA,IAAIr/D,EAAG08D,EAAQ,GAENn9D,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5BS,EAAIT,EACJ,IAAK,IAAIyD,EAAI,EAAGA,EAAI,EAAGA,IACrBhD,EAAU,EAAJA,EAAU,WAAcA,IAAM,EAAOA,IAAM,EAEnD08D,EAAMn9D,GAAKS,EAGb,OAAO08D,EAIM4C,GAiBfhhE,EAAOC,QAdP,SAAeghE,EAAK50B,EAAKO,EAAKI,GAC5B,IAAIlvC,EAAIijE,EACJxxB,EAAMvC,EAAMJ,EAEhBq0B,IAAQ,EAER,IAAK,IAAIljE,EAAIivC,EAAKjvC,EAAIwxC,EAAKxxC,IACzBkjE,EAAOA,IAAQ,EAAKnjE,EAAmB,KAAhBmjE,EAAM50B,EAAItuC,KAGnC,OAAgB,EAARkjE,cCtDV,IAAIC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAClBC,EAAY,EAAQ,MACpBC,EAAO,EAAQ,MACfC,EAAa,EAAQ,KAEzB,SAASC,EAAOC,EAAYC,GAC3B9gE,KAAK6gE,WAAaA,EAClB7gE,KAAK8gE,kBAAoBA,EACzB9gE,KAAK+gE,QAAU,KACf/gE,KAAKghE,YAAc,EACnBhhE,KAAKihE,UAAY,KACjBjhE,KAAKkhE,SAAW,GAIjB,IAAI17D,EAAQo7D,EAAO3hE,UAEnBuG,EAAM27D,QAAU,SAASz0C,GACxB,IAAI00C,EAAU,IAAIb,EAAQ7zC,GAC1B1sB,KAAKkhE,SAAS59D,KAAK89D,GACnBphE,KAAKihE,UAAY,MAGlBz7D,EAAM67D,OAAS,SAASC,EAAKC,GAC5B,GAAID,EAAM,GAAKthE,KAAKghE,aAAeM,GAAOC,EAAM,GAAKvhE,KAAKghE,aAAeO,EACxE,MAAM,IAAIt8D,MAAMq8D,EAAM,IAAMC,GAE7B,OAAOvhE,KAAK+gE,QAAQO,GAAKC,IAG1B/7D,EAAMg8D,eAAiB,WACtB,OAAOxhE,KAAKghE,aAGbx7D,EAAMi8D,KAAO,WAEZ,GAAIzhE,KAAK6gE,WAAa,EAAG,CACxB,IAAIA,EAAa,EACjB,IAAKA,EAAa,EAAGA,EAAa,GAAIA,IAAc,CAKnD,IAJA,IAAIa,EAAWlB,EAAQmB,YAAYd,EAAY7gE,KAAK8gE,mBAEhDriC,EAAS,IAAIgiC,EACbmB,EAAiB,EACZxkE,EAAI,EAAGA,EAAIskE,EAASjjE,OAAQrB,IACpCwkE,GAAkBF,EAAStkE,GAAGykE,UAG/B,IAASzkE,EAAI,EAAGA,EAAI4C,KAAKkhE,SAASziE,OAAQrB,IAAK,CAC9C,IAAIsvB,EAAO1sB,KAAKkhE,SAAS9jE,GACzBqhC,EAAOqjC,IAAIp1C,EAAKq1C,KAAM,GACtBtjC,EAAOqjC,IAAIp1C,EAAKs1C,YAAatB,EAAKuB,gBAAgBv1C,EAAKq1C,KAAMlB,IAC7Dn0C,EAAKnd,MAAMkvB,GAEZ,GAAIA,EAAOwjC,mBAAsC,EAAjBL,EAC/B,MAEF5hE,KAAK6gE,WAAaA,EAEnB7gE,KAAKkiE,UAAS,EAAOliE,KAAKmiE,uBAG3B38D,EAAM08D,SAAW,SAASngC,EAAMqgC,GAE/BpiE,KAAKghE,YAAgC,EAAlBhhE,KAAK6gE,WAAiB,GACzC7gE,KAAK+gE,QAAU,IAAIliE,MAAMmB,KAAKghE,aAE9B,IAAK,IAAIM,EAAM,EAAGA,EAAMthE,KAAKghE,YAAaM,IAAO,CAEhDthE,KAAK+gE,QAAQO,GAAO,IAAIziE,MAAMmB,KAAKghE,aAEnC,IAAK,IAAIO,EAAM,EAAGA,EAAMvhE,KAAKghE,YAAaO,IACzCvhE,KAAK+gE,QAAQO,GAAKC,GAAO,KAI3BvhE,KAAKqiE,0BAA0B,EAAG,GAClCriE,KAAKqiE,0BAA0BriE,KAAKghE,YAAc,EAAG,GACrDhhE,KAAKqiE,0BAA0B,EAAGriE,KAAKghE,YAAc,GACrDhhE,KAAKsiE,6BACLtiE,KAAKuiE,qBACLviE,KAAKwiE,cAAczgC,EAAMqgC,GAErBpiE,KAAK6gE,YAAc,GACtB7gE,KAAKyiE,gBAAgB1gC,GAGA,MAAlB/hC,KAAKihE,YACRjhE,KAAKihE,UAAYL,EAAO8B,WAAW1iE,KAAK6gE,WAAY7gE,KAAK8gE,kBAAmB9gE,KAAKkhE,WAGlFlhE,KAAK2iE,QAAQ3iE,KAAKihE,UAAWmB,IAG9B58D,EAAM68D,0BAA4B,SAASf,EAAKC,GAE/C,IAAK,IAAIlkE,GAAK,EAAGA,GAAK,EAAGA,IAExB,KAAIikE,EAAMjkE,IAAM,GAAK2C,KAAKghE,aAAeM,EAAMjkE,GAE/C,IAAK,IAAI0D,GAAK,EAAGA,GAAK,EAAGA,IAEpBwgE,EAAMxgE,IAAM,GAAKf,KAAKghE,aAAeO,EAAMxgE,IAK9Cf,KAAK+gE,QAAQO,EAAMjkE,GAAGkkE,EAAMxgE,GAHvB,GAAK1D,GAAKA,GAAK,IAAW,GAAL0D,GAAe,GAALA,IAC/B,GAAKA,GAAKA,GAAK,IAAW,GAAL1D,GAAe,GAALA,IAC/B,GAAKA,GAAKA,GAAK,GAAK,GAAK0D,GAAKA,GAAK,IAS5CyE,EAAM28D,mBAAqB,WAK1B,IAHA,IAAIS,EAAe,EACfzmC,EAAU,EAEL/+B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAE3B4C,KAAKkiE,UAAS,EAAM9kE,GAEpB,IAAIylE,EAAYnC,EAAKoC,aAAa9iE,OAEzB,GAAL5C,GAAUwlE,EAAgBC,KAC7BD,EAAeC,EACf1mC,EAAU/+B,GAIZ,OAAO++B,GAGR32B,EAAMu9D,gBAAkB,SAASC,EAAWC,EAAe3pD,GAE1D,IAAI4pD,EAAQF,EAAUG,qBAAqBF,EAAe3pD,GAG1DtZ,KAAKyhE,OAEL,IAAK,IAAIH,EAAM,EAAGA,EAAMthE,KAAK+gE,QAAQtiE,OAAQ6iE,IAI5C,IAFA,IAAI5+D,EANI,EAMA4+D,EAECC,EAAM,EAAGA,EAAMvhE,KAAK+gE,QAAQO,GAAK7iE,OAAQ8iE,IAAO,CAExD,IAAIt7D,EAVG,EAUCs7D,EACGvhE,KAAK+gE,QAAQO,GAAKC,KAG5B2B,EAAME,UAAU,EAAG,KACnBF,EAAMG,OAAOp9D,EAAGvD,GAChBwgE,EAAMI,OAAOr9D,EAhBP,EAgBevD,GACrBwgE,EAAMI,OAAOr9D,EAjBP,EAiBevD,EAjBf,GAkBNwgE,EAAMI,OAAOr9D,EAAGvD,EAlBV,GAmBNwgE,EAAMK,WAKT,OAAOL,GAGR19D,EAAM+8D,mBAAqB,WAE1B,IAAK,IAAIllE,EAAI,EAAGA,EAAI2C,KAAKghE,YAAc,EAAG3jE,IACf,MAAtB2C,KAAK+gE,QAAQ1jE,GAAG,KAGpB2C,KAAK+gE,QAAQ1jE,GAAG,GAAMA,EAAI,GAAK,GAGhC,IAAK,IAAI0D,EAAI,EAAGA,EAAIf,KAAKghE,YAAc,EAAGjgE,IACf,MAAtBf,KAAK+gE,QAAQ,GAAGhgE,KAGpBf,KAAK+gE,QAAQ,GAAGhgE,GAAMA,EAAI,GAAK,IAIjCyE,EAAM88D,2BAA6B,WAIlC,IAFA,IAAIj2B,EAAMq0B,EAAK8C,mBAAmBxjE,KAAK6gE,YAE9BzjE,EAAI,EAAGA,EAAIivC,EAAI5tC,OAAQrB,IAE/B,IAAK,IAAI6G,EAAI,EAAGA,EAAIooC,EAAI5tC,OAAQwF,IAAK,CAEpC,IAAIq9D,EAAMj1B,EAAIjvC,GACVmkE,EAAMl1B,EAAIpoC,GAEd,GAA8B,MAA1BjE,KAAK+gE,QAAQO,GAAKC,GAItB,IAAK,IAAIlkE,GAAK,EAAGA,GAAK,EAAGA,IAExB,IAAK,IAAI0D,GAAK,EAAGA,GAAK,EAAGA,IAIvBf,KAAK+gE,QAAQO,EAAMjkE,GAAGkkE,EAAMxgE,IAFnB,GAAN1D,GAAgB,GAALA,IAAgB,GAAN0D,GAAgB,GAALA,GACzB,GAAL1D,GAAe,GAAL0D,IAWrByE,EAAMi9D,gBAAkB,SAAS1gC,GAIhC,IAFA,IAAI48B,EAAO+B,EAAK+C,iBAAiBzjE,KAAK6gE,YAE7BzjE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC5B,IAAIsmE,GAAQ3hC,GAA8B,IAAnB48B,GAAQvhE,EAAK,GACpC4C,KAAK+gE,QAAQ5+C,KAAKwhD,MAAMvmE,EAAI,IAAIA,EAAI,EAAI4C,KAAKghE,YAAc,EAAI,GAAK0C,EAGrE,IAAStmE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CACxBsmE,GAAQ3hC,GAA8B,IAAnB48B,GAAQvhE,EAAK,GACpC4C,KAAK+gE,QAAQ3jE,EAAI,EAAI4C,KAAKghE,YAAc,EAAI,GAAG7+C,KAAKwhD,MAAMvmE,EAAI,IAAMsmE,IAItEl+D,EAAMg9D,cAAgB,SAASzgC,EAAMqgC,GAMpC,IAJA,IAAI11C,EAAQ1sB,KAAK8gE,mBAAqB,EAAKsB,EACvCzD,EAAO+B,EAAKkD,eAAel3C,GAGtBtvB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAE5B,IAAIsmE,GAAQ3hC,GAA8B,IAAnB48B,GAAQvhE,EAAK,GAEhCA,EAAI,EACP4C,KAAK+gE,QAAQ3jE,GAAG,GAAKsmE,EACXtmE,EAAI,EACd4C,KAAK+gE,QAAQ3jE,EAAI,GAAG,GAAKsmE,EAEzB1jE,KAAK+gE,QAAQ/gE,KAAKghE,YAAc,GAAK5jE,GAAG,GAAKsmE,EAK/C,IAAStmE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAExBsmE,GAAQ3hC,GAA8B,IAAnB48B,GAAQvhE,EAAK,GAEhCA,EAAI,EACP4C,KAAK+gE,QAAQ,GAAG/gE,KAAKghE,YAAc5jE,EAAI,GAAKsmE,EAClCtmE,EAAI,EACd4C,KAAK+gE,QAAQ,GAAG,GAAK3jE,EAAI,EAAI,GAAKsmE,EAElC1jE,KAAK+gE,QAAQ,GAAG,GAAK3jE,EAAI,GAAKsmE,EAKhC1jE,KAAK+gE,QAAQ/gE,KAAKghE,YAAc,GAAG,IAAOj/B,GAG3Cv8B,EAAMm9D,QAAU,SAASj2C,EAAM01C,GAO9B,IALA,IAAIyB,GAAO,EACPvC,EAAMthE,KAAKghE,YAAc,EACzB8C,EAAW,EACXC,EAAY,EAEPxC,EAAMvhE,KAAKghE,YAAc,EAAGO,EAAM,EAAGA,GAAO,EAIpD,IAFW,GAAPA,GAAUA,MAED,CAEZ,IAAK,IAAIxgE,EAAI,EAAGA,EAAI,EAAGA,IAEtB,GAAkC,MAA9Bf,KAAK+gE,QAAQO,GAAKC,EAAMxgE,GAAY,CAEvC,IAAIijE,GAAO,EAEPD,EAAYr3C,EAAKjuB,SACpBulE,EAAkD,IAAtCt3C,EAAKq3C,KAAeD,EAAY,IAGlCpD,EAAKuD,QAAQ7B,EAAad,EAAKC,EAAMxgE,KAG/CijE,GAAQA,GAGThkE,KAAK+gE,QAAQO,GAAKC,EAAMxgE,GAAKijE,GAGZ,KAFjBF,IAGCC,IACAD,EAAW,GAOd,IAFAxC,GAAOuC,GAEG,GAAK7jE,KAAKghE,aAAeM,EAAK,CACvCA,GAAOuC,EACPA,GAAOA,EACP,SAMJjD,EAAOsD,KAAO,IACdtD,EAAOuD,KAAO,GAEdvD,EAAO8B,WAAa,SAAS7B,EAAYC,EAAmBI,GAM3D,IAJA,IAAIQ,EAAWlB,EAAQmB,YAAYd,EAAYC,GAE3CriC,EAAS,IAAIgiC,EAERrjE,EAAI,EAAGA,EAAI8jE,EAASziE,OAAQrB,IAAK,CACzC,IAAIsvB,EAAOw0C,EAAS9jE,GACpBqhC,EAAOqjC,IAAIp1C,EAAKq1C,KAAM,GACtBtjC,EAAOqjC,IAAIp1C,EAAKs1C,YAAatB,EAAKuB,gBAAgBv1C,EAAKq1C,KAAMlB,IAC7Dn0C,EAAKnd,MAAMkvB,GAIZ,IAAImjC,EAAiB,EACrB,IAASxkE,EAAI,EAAGA,EAAIskE,EAASjjE,OAAQrB,IACpCwkE,GAAkBF,EAAStkE,GAAGykE,UAG/B,GAAIpjC,EAAOwjC,kBAAqC,EAAjBL,EAC9B,MAAM,IAAI38D,MAAM,0BACbw5B,EAAOwjC,kBACP,IACkB,EAAjBL,EACD,KASJ,IALInjC,EAAOwjC,kBAAoB,GAAsB,EAAjBL,GACnCnjC,EAAOqjC,IAAI,EAAG,GAIRrjC,EAAOwjC,kBAAoB,GAAK,GACtCxjC,EAAO2lC,QAAO,GAIf,OAEK3lC,EAAOwjC,mBAAsC,EAAjBL,IAGhCnjC,EAAOqjC,IAAIlB,EAAOsD,KAAM,GAEpBzlC,EAAOwjC,mBAAsC,EAAjBL,KAGhCnjC,EAAOqjC,IAAIlB,EAAOuD,KAAM,GAGzB,OAAOvD,EAAOyD,YAAY5lC,EAAQijC,IAGnCd,EAAOyD,YAAc,SAAS5lC,EAAQijC,GAUrC,IARA,IAAIriB,EAAS,EAETilB,EAAa,EACbC,EAAa,EAEbC,EAAS,IAAI3lE,MAAM6iE,EAASjjE,QAC5BgmE,EAAS,IAAI5lE,MAAM6iE,EAASjjE,QAEvBpB,EAAI,EAAGA,EAAIqkE,EAASjjE,OAAQpB,IAAK,CAEzC,IAAIqnE,EAAUhD,EAASrkE,GAAGwkE,UACtB8C,EAAUjD,EAASrkE,GAAGunE,WAAaF,EAEvCJ,EAAaniD,KAAKC,IAAIkiD,EAAYI,GAClCH,EAAapiD,KAAKC,IAAImiD,EAAYI,GAElCH,EAAOnnE,GAAK,IAAIwB,MAAM6lE,GAEtB,IAAK,IAAItnE,EAAI,EAAGA,EAAIonE,EAAOnnE,GAAGoB,OAAQrB,IACrConE,EAAOnnE,GAAGD,GAAK,IAAOqhC,EAAOA,OAAOrhC,EAAIiiD,GAEzCA,GAAUqlB,EAEV,IAAIG,EAASnE,EAAKoE,0BAA0BH,GAGxCI,EAFU,IAAIpE,EAAW6D,EAAOnnE,GAAIwnE,EAAO7C,YAAc,GAEvC0B,IAAImB,GAC1BJ,EAAOpnE,GAAK,IAAIwB,MAAMgmE,EAAO7C,YAAc,GAC3C,IAAS5kE,EAAI,EAAGA,EAAIqnE,EAAOpnE,GAAGoB,OAAQrB,IAAK,CACjC,IAAI4nE,EAAW5nE,EAAI2nE,EAAQ/C,YAAcyC,EAAOpnE,GAAGoB,OAC5DgmE,EAAOpnE,GAAGD,GAAM4nE,GAAY,EAAID,EAAQx6D,IAAIy6D,GAAY,GAK1D,IAAIC,EAAiB,EACrB,IAAS7nE,EAAI,EAAGA,EAAIskE,EAASjjE,OAAQrB,IACpC6nE,GAAkBvD,EAAStkE,GAAGwnE,WAG/B,IAAIl4C,EAAO,IAAI7tB,MAAMomE,GACjBzsD,EAAQ,EAEZ,IAASpb,EAAI,EAAGA,EAAIknE,EAAYlnE,IAC/B,IAASC,EAAI,EAAGA,EAAIqkE,EAASjjE,OAAQpB,IAChCD,EAAIonE,EAAOnnE,GAAGoB,SACjBiuB,EAAKlU,KAAWgsD,EAAOnnE,GAAGD,IAK7B,IAASA,EAAI,EAAGA,EAAImnE,EAAYnnE,IAC/B,IAASC,EAAI,EAAGA,EAAIqkE,EAASjjE,OAAQpB,IAChCD,EAAIqnE,EAAOpnE,GAAGoB,SACjBiuB,EAAKlU,KAAWisD,EAAOpnE,GAAGD,IAK7B,OAAOsvB,GAGRrtB,EAAOC,QAAUshE,OCpbjBvhE,EAAOC,QAAU,CAChB4lE,YAAe,EACfC,eAAkB,EAClBC,eAAkB,EAClBC,WAAc,cCJf,IAAIC,EAAO,EAAQ,KAEnB,SAASC,EAAaxG,EAAK77C,GAE1B,GAAkB9c,MAAd24D,EAAItgE,OACP,MAAM,IAAIwG,MAAM85D,EAAItgE,OAAS,IAAMykB,GAKpC,IAFA,IAAIm8B,EAAS,EAENA,EAAS0f,EAAItgE,QAAyB,GAAfsgE,EAAI1f,IACjCA,IAGDr/C,KAAK++D,IAAM,IAAIlgE,MAAMkgE,EAAItgE,OAAS4gD,EAASn8B,GAC3C,IAAK,IAAI9lB,EAAI,EAAGA,EAAI2hE,EAAItgE,OAAS4gD,EAAQjiD,IACxC4C,KAAK++D,IAAI3hE,GAAK2hE,EAAI3hE,EAAIiiD,GAIxBkmB,EAAatmE,UAAY,CAExBsL,IAAM,SAASiO,GACd,OAAOxY,KAAK++D,IAAIvmD,IAGjBwpD,UAAY,WACX,OAAOhiE,KAAK++D,IAAItgE,QAGjB+mE,SAAW,SAASloE,GAInB,IAFA,IAAIyhE,EAAM,IAAIlgE,MAAMmB,KAAKgiE,YAAc1kE,EAAE0kE,YAAc,GAE9C5kE,EAAI,EAAGA,EAAI4C,KAAKgiE,YAAa5kE,IACrC,IAAK,IAAI6G,EAAI,EAAGA,EAAI3G,EAAE0kE,YAAa/9D,IAClC86D,EAAI3hE,EAAI6G,IAAMqhE,EAAKG,KAAKH,EAAKI,KAAK1lE,KAAKuK,IAAInN,IAAOkoE,EAAKI,KAAKpoE,EAAEiN,IAAItG,KAIpE,OAAO,IAAIshE,EAAaxG,EAAK,IAG9B2E,IAAM,SAASpmE,GAEd,GAAI0C,KAAKgiE,YAAc1kE,EAAE0kE,YAAc,EACtC,OAAOhiE,KAOR,IAJA,IAAI2lE,EAAQL,EAAKI,KAAK1lE,KAAKuK,IAAI,IAAO+6D,EAAKI,KAAKpoE,EAAEiN,IAAI,IAElDw0D,EAAM,IAAIlgE,MAAMmB,KAAKgiE,aAEhB5kE,EAAI,EAAGA,EAAI4C,KAAKgiE,YAAa5kE,IACrC2hE,EAAI3hE,GAAK4C,KAAKuK,IAAInN,GAGnB,IAASA,EAAI,EAAGA,EAAIE,EAAE0kE,YAAa5kE,IAClC2hE,EAAI3hE,IAAMkoE,EAAKG,KAAKH,EAAKI,KAAKpoE,EAAEiN,IAAInN,IAAOuoE,GAI5C,OAAO,IAAIJ,EAAaxG,EAAK,GAAG2E,IAAIpmE,KAItC+B,EAAOC,QAAUimE,OCpCjB,IA9BA,IAAIK,EAAS,CAEZF,KAAO,SAASplE,GAEf,GAAIA,EAAI,EACP,MAAM,IAAI2E,MAAM,QAAU3E,EAAI,KAG/B,OAAOslE,EAAOC,UAAUvlE,IAGzBmlE,KAAO,SAASnlE,GAEf,KAAOA,EAAI,GACVA,GAAK,IAGN,KAAOA,GAAK,KACXA,GAAK,IAGN,OAAOslE,EAAOE,UAAUxlE,IAGzBwlE,UAAY,IAAIjnE,MAAM,KAEtBgnE,UAAY,IAAIhnE,MAAM,MAIdzB,EAAI,EAAGA,EAAI,EAAGA,IACtBwoE,EAAOE,UAAU1oE,GAAK,GAAKA,EAE5B,IAASA,EAAI,EAAGA,EAAI,IAAKA,IACxBwoE,EAAOE,UAAU1oE,GAAKwoE,EAAOE,UAAU1oE,EAAI,GACxCwoE,EAAOE,UAAU1oE,EAAI,GACrBwoE,EAAOE,UAAU1oE,EAAI,GACrBwoE,EAAOE,UAAU1oE,EAAI,GAEzB,IAASA,EAAI,EAAGA,EAAI,IAAKA,IACxBwoE,EAAOC,UAAUD,EAAOE,UAAU1oE,IAAOA,EAG1CiC,EAAOC,QAAUsmE,4DC1CjBtmE,EAAQymE,WAuBR,SAAoBhpC,GAClB,MAAM8L,GAAQ,EAAIpM,EAAOxD,QAAQ8D,GAEjC,OADA8L,EAAMM,SAAS,EAAG,EAAG,EAAG,GACjBN,GAzBT,IAAIpM,EAAS,EAAQ,4BCDrBn9B,EAAQ0mE,gCAcR,SAAyCjpC,GACvC,MAAM8L,GAAQ,EAAIpM,EAAOxD,QAAQ8D,GAC3BkpC,EAAU,IAAI5yD,KAClBA,KAAK6yD,IACHr9B,EAAMgb,cACNhb,EAAM6a,WACN7a,EAAMK,UACNL,EAAMs9B,WACNt9B,EAAMu9B,aACNv9B,EAAMw9B,aACNx9B,EAAMy9B,oBAIV,OADAL,EAAQM,eAAe19B,EAAMgb,gBACrB9mB,GAAQkpC,GA3BlB,IAAIxpC,EAAS,EAAQ,4BCDrBn9B,EAAQknE,WA2BR,SAAoBzpC,GAClB,MAAM8L,GAAQ,EAAI49B,EAAQxtC,QAAQ8D,GAC5BiM,IACH,EAAIN,EAAQ8I,gBAAgB3I,KAC5B,EAAI69B,EAAQC,oBAAoB99B,GAKnC,OAAO1mB,KAAKykD,MAAM59B,EAAOvM,EAAO0L,oBAAsB,GAnCxD,IAAI1L,EAAS,EAAQ,KACjBiM,EAAU,EAAQ,KAClBg+B,EAAU,EAAQ,MAClBD,EAAU,EAAQ,4BCJtBnnE,EAAQunE,YA+CR,SAAqB9pC,EAAMlwB,GACzB,MAAMg8B,GAAQ,EAAI69B,EAAQztC,QAAQ8D,GAC5BxC,EAAOsO,EAAMgb,cAEbhlC,GAAiB,EAAI4nD,EAAQx/B,qBAC7B6/B,EACJj6D,GAASi6D,uBACTj6D,GAAS+7B,QAAQ/7B,SAASi6D,uBAC1BjoD,EAAeioD,uBACfjoD,EAAe+pB,QAAQ/7B,SAASi6D,uBAChC,EAEIC,GAAsB,EAAItqC,EAAOK,eAAeC,EAAM,GAC5DgqC,EAAoBnjB,YAAYrpB,EAAO,EAAG,EAAGusC,GAC7CC,EAAoB59B,SAAS,EAAG,EAAG,EAAG,GACtC,MAAM69B,GAAkB,EAAIt+B,EAAQD,aAClCs+B,EACAl6D,GAGIo6D,GAAsB,EAAIxqC,EAAOK,eAAeC,EAAM,GAC5DkqC,EAAoBrjB,YAAYrpB,EAAM,EAAGusC,GACzCG,EAAoB99B,SAAS,EAAG,EAAG,EAAG,GACtC,MAAM+9B,GAAkB,EAAIx+B,EAAQD,aAClCw+B,EACAp6D,GAGF,OAAIg8B,EAAM2a,WAAawjB,EAAgBxjB,UAC9BjpB,EAAO,EACLsO,EAAM2a,WAAa0jB,EAAgB1jB,UACrCjpB,EAEAA,EAAO,GA/ElB,IAAIkC,EAAS,EAAQ,IACjBiM,EAAU,EAAQ,KAClBg+B,EAAU,EAAQ,IAElBD,EAAU,EAAQ,6BCLtBnnE,EAAQmkD,SAyBR,SAAkB1mB,EAAME,GACtB,MAAM4L,GAAQ,EAAI69B,EAAQztC,QAAQ8D,GAC5BxC,EAAOsO,EAAMgb,cACb/a,EAAMD,EAAMK,UAEZi+B,GAAuB,EAAI1qC,EAAOK,eAAeC,EAAM,GAC7DoqC,EAAqBvjB,YAAYrpB,EAAM0C,EAAO,IAC9CkqC,EAAqBh+B,SAAS,EAAG,EAAG,EAAG,GACvC,MAAMwa,GAAc,EAAIjb,EAAQ0+B,gBAAgBD,GAIhD,OADAt+B,EAAM4a,SAASxmB,EAAO9a,KAAKE,IAAIymB,EAAK6a,IAC7B9a,GApCT,IAAIpM,EAAS,EAAQ,IACjBiM,EAAU,EAAQ,MAClBg+B,EAAU,EAAQ,4BCHtBpnE,EAAQ+nE,OAoCR,SAAgBtqC,EAAM+L,EAAKj8B,GACzB,MAAMgS,GAAiB,EAAI6nD,EAAQz/B,qBAC7B0B,EACJ97B,GAAS87B,cACT97B,GAAS+7B,QAAQ/7B,SAAS87B,cAC1B9pB,EAAe8pB,cACf9pB,EAAe+pB,QAAQ/7B,SAAS87B,cAChC,EAEIE,GAAQ,EAAIH,EAAQzP,QAAQ8D,GAC5BuqC,EAAaz+B,EAAME,SAGnBw+B,GADYz+B,EAAM,EACM,GAAK,EAE7B7mB,EAAQ,EAAI0mB,EACZK,EACJF,EAAM,GAAKA,EAAM,EACbA,GAAQw+B,EAAarlD,GAAS,GAC5BslD,EAAWtlD,GAAS,GAAOqlD,EAAarlD,GAAS,EACzD,OAAO,EAAIwa,EAAOgV,SAAS5I,EAAOG,IAvDpC,IAAIvM,EAAS,EAAQ,KACjBiM,EAAU,EAAQ,IAElBg+B,EAAU,EAAQ,gBCLtB,IAAIc,EAAY,EAAQ,MACpBrY,EAAU,EAAQ,KAMlB/zC,EAHavc,MAAMI,UAGCmc,OA6BxB/b,EAAOC,QAlBP,SAAoBoM,EAAO+7D,GAIzB,IAHA,IAAIhpE,EAASiN,EAAQ+7D,EAAQhpE,OAAS,EAClCipE,EAAYjpE,EAAS,EAElBA,KAAU,CACf,IAAI+Z,EAAQivD,EAAQhpE,GACpB,GAAIA,GAAUipE,GAAalvD,IAAUmvD,EAAU,CAC7C,IAAIA,EAAWnvD,EACX22C,EAAQ32C,GACV4C,EAAO3d,KAAKiO,EAAO8M,EAAO,GAE1BgvD,EAAU97D,EAAO8M,IAIvB,OAAO9M,2BCjCT,SAASk8D,EAA8BvqE,EAAGC,GACxC,GAAI,MAAQD,EAAG,MAAO,GACtB,IAAIF,EAAI,GACR,IAAK,IAAImD,KAAKjD,EAAG,GAAI,GAAGgB,eAAeZ,KAAKJ,EAAGiD,GAAI,CACjD,GAAIhD,EAAE4B,SAASoB,GAAI,SACnBnD,EAAEmD,GAAKjD,EAAEiD,GAEX,OAAOnD,oFCAF,SAAS0qE,QACd,sDAEA,IAAMtpE,EAAoB,GACpBupE,EAAgB,GAChBtf,EAAa/C,EAAA,EAAWJ,cAE9B,SAAS0iB,EAAaC,GACpB,IAAkB,UAAAA,EAAA,eAAU,CAAvB,IAAMtpE,EAAG,KACZ,GAAIA,EACF,GAAmB,iBAARA,EACT,GAAIA,EAAI8B,QAAQ,MAAQ,EACtBunE,EAAarpE,EAAI8hD,MAAM,UAClB,CACL,IAAMynB,EAAiBzf,EAAWtC,kBAAkBxnD,GAEhDupE,EACFF,EAAaE,IAGiB,IAA1B1pE,EAAQiC,QAAQ9B,IAClBH,EAAQ+E,KAAK5E,QAIVG,MAAMC,QAAQJ,GACvBqpE,EAAarpE,GACW,iBAARA,GAChBopE,EAAQxkE,KAAK5E,IAQrB,OAFAqpE,EAAax8D,GAEN,CACLhN,QAAO,EACPupE,QAAO,iBC0IJ,SAASI,EACdC,EACAt7D,WAEMu7D,EAAwC,CAAEC,mBAAoB,IAIpE,IAFiBF,EAAU,IAEVA,EAAU1pE,QAAU,EACnC,MAAO,CAAE4pE,mBAAoB,IAG/B,IAAMC,EAAuBC,EAAA,EAAe,aAAIJ,GAE1CK,EAAgB,GAEtB,IAAK,IAAMC,KAAgBH,EACzB,GAAIA,EAAqBjqE,eAAeoqE,GAAe,CACrD,GAAqB,uBAAjBA,EAAuC,CACzCL,EAAaC,mBAAsBC,EAAoDD,oBAAsB,GAC7G,SAGF,IAEM,IAFkBC,EAA6BG,IAE7ClqE,EAAA,EAAAA,QAASupE,EAAA,EAAAA,QAEjB,GAAW,QAAX,EAAIA,SAAO,eAAErpE,QACLiqE,GAAe,QAAoB77D,GAAW,GAAI,CAAEue,YAAaq9C,GAAgBX,MAGrFU,EAAcllE,KAAKolE,GACnBN,EAAaK,GAAgBlqE,EAAQ0L,OAAO,CAACy+D,EAAajhD,YAAYrO,KAAK,WAG7EgvD,EAAaK,GAAgBlqE,EAAQ6a,KAAK,KAKhD,IAA2B,UAAAovD,EAAA,eAAe,CAArC,IAAME,GAAAA,EAAY,QAEnB,QAAkBA,EAAqB,QAAT,EAAE77D,SAAO,eAAE87D,uBAI7C,OAAOP,MC7NLQ,gCAHEC,EAAwB,QAQvB,SAASC,EAAOC,GACrB,QADqB,IAAAA,IAAAA,EAAA,SACH3iE,IAAd2iE,EAAMC,IACR,OAAOD,EAAMC,IAEf,QAAe5iE,IAAXwiE,EAAsB,CAExB,IAAIK,GAAW,OAAQJ,GACN,OAAbI,GAkBD,SAAgBC,EAAgBC,QAAA,IAAAA,IAAAA,GAAA,GACrC,IAAIC,GAAM,EAAAC,EAAA,KACND,GACFA,EAAIt1B,gBAAgBe,aAAa,MAAOq0B,EAAQ,MAAQ,OAGtDC,IACF,OAAQN,EAAuBK,EAAQ,IAAM,KAG/CN,EAASM,GACT,QAAkBN,GA3BdU,CADAV,EAAsB,MAAbK,GAIX,IAAIG,GAAM,EAAAC,EAAA,UACKjjE,IAAXwiE,GAAwBQ,IAC1BR,EAAqG,SAA1FQ,EAAI5mE,MAAQ4mE,EAAI5mE,KAAKm5C,aAAa,QAAWytB,EAAIt1B,gBAAgB6H,aAAa,SACzF,QAAkBitB,IAItB,QAASA,eClBPW,EAAsB,EAEpB/gB,EAAa/C,EAAA,EAAWJ,cAE1BmD,GAAcA,EAAW5C,SAC3B4C,EAAW5C,SAAQ,WAAM,OAAA2jB,OAS3B,IAAMj6C,EAAS,aAiCR,SAASk6C,EACd38D,QAAA,IAAAA,IAAAA,EAAA,IAYA,IAAIlB,EAA0B,IAAItF,IAC9BojE,EAAiB,EACjBC,EAAqB,EACrBC,EAA4BJ,EA8EhC,OA5EsB,SACpBK,EACAC,WAKA,QALA,IAAAA,IAAAA,EAA0B,IAMxBh9D,EAAQi9D,iBACyB,mBAA1BF,GACNA,EAAgEG,oBAEjE,OAAOH,EAAsBC,GAG/BH,IACA,IAAIM,EAAyBr+D,EACrBo9D,EAAA,EAAAA,MACFC,EAAMD,QAAuB3iE,IAAd2iE,EAAMC,IAAoBD,EAAMC,IAAMF,IAErDmB,EAAiBp9D,EAAQo9D,gBAG3BN,IAA8BJ,IAChCI,EAA4BJ,EAC5B59D,EAAM,IAAItF,IACVojE,EAAiB,GAGd58D,EAAQo9D,iBACXD,EAAUE,EAAav+D,EAAKi+D,GAC5BI,EAAUE,EAAaF,EAASH,KAG9BI,GAAoBD,EAAgB16C,KAEnC06C,EAAgB16C,QADWlpB,IAA1BwjE,EACyB,GAEA1B,EACzB,CACoC,mBAA1B0B,EACJA,EAAsBC,GACtBD,GAEN,CAAEZ,MAAOA,EAAKL,sBAAuB97D,EAAQi9D,gBA/GhB,OA+GmE1jE,IAI/F6jE,GACHR,KAIAA,GAAkB58D,EAAQ67C,WAzHV,QA2HG,QAArB,EAAO,QAAP,GADY,EAAA3E,EAAA,YACL,eAAEyB,oBAAY,eAAE2kB,mCAErBzxD,QAAQ4B,KACN,oEAAoEmvD,EAAc,IAAIC,EAAkB,KAG1GhxD,QAAQiC,SAGVhP,EAAIiX,QACJ6mD,EAAiB,EAGjB58D,EAAQo9D,gBAAiB,GAK3B,OAAQD,EAAgB16C,IAM5B,SAAS86C,EAAcJ,EAAwBhsE,GAO7C,OANAA,EAiCF,SAAyBA,GACvB,OAAQA,GACN,UAAKoI,EACH,MAAO,gBACT,KAAK,KACH,MAAO,WACT,QACE,OAAOpI,GAxCHqsE,CAAgBrsE,GAEnBgsE,EAAQprD,IAAI5gB,IACfgsE,EAAQv/D,IAAIzM,EAAO,IAAIqI,KAGlB2jE,EAAQz/D,IAAIvM,GAGrB,SAASksE,EAAaF,EAAwBM,GAC5C,GAAsB,mBAAXA,EAET,GADgCA,EAAmCC,iBAKjE,IAAoB,UAACD,EAAeC,iBAAhB,eAAkC,CACpDP,EAAUI,EAAcJ,EADV,WAIhBA,EAAUI,EAAcJ,EAASM,QAE9B,GAAsB,iBAAXA,EAChB,IAAK,IAAM1kE,KAAY0kE,EACjBA,EAAOjsE,eAAeuH,KACxBokE,EAAUI,EAAcJ,EAAUM,EAAe1kE,KAKvD,OAAOokE,sDC7LT,IAAMQ,EAAc,eAAC,sDAGnB,IAFA,IAAMroE,EAAiC,GAEpB,MAAA8gB,EAAA,eAGjB,IAHG,IAAMhF,EAAI,KACPvP,EAAO7P,MAAMC,QAAQmf,GAAQA,EAAOngB,OAAO4Q,KAAKuP,GAEpC,MAAAvP,EAAA,eAAM,CAAnB,IAAMvP,EAAG,KACZgD,EAAOhD,GAAO,EAIlB,OAAOgD,GAQIsoE,EAAoBD,EAAY,CAC3C,SACA,QACA,UACA,mBACA,qBACA,sBACA,UACA,iBACA,SACA,gBACA,WACA,UACA,WACA,SACA,UACA,YACA,mBACA,aACA,UACA,UACA,YACA,mBACA,mBACA,YACA,cACA,UACA,eACA,mBACA,cACA,UACA,SACA,YACA,aACA,eACA,WACA,YACA,YACA,YACA,eACA,iBACA,YACA,UACA,iBACA,gBACA,gBACA,SACA,YACA,cACA,aACA,cACA,aACA,cACA,SACA,cACA,qBACA,eACA,eACA,cACA,aACA,cACA,YACA,mBACA,WACA,gBACA,aACA,cACA,eACA,WACA,UACA,kBACA,gBACA,iBACA,iBACA,gBACA,eACA,gBACA,cACA,sBACA,yBAQWE,EAAwBF,EAAY,CAC/C,YACA,WACA,YACA,kBACA,MACA,YACA,SACA,UACA,KACA,OACA,MACA,OACA,QACA,WACA,QACA,YACA,aACA,SAQWG,EAAwBH,EAAYE,EAAuBD,GAgB3DG,GATkBJ,EAAYG,EAAuB,CAChE,SAQ6BH,EAAYG,EAAuB,CAChE,SACA,OACA,QACA,UACA,MACA,WAkDWE,GA1CkBL,EAAYI,EAAiB,CAC1D,WAQ0BJ,EAAYG,EAAuB,CAC7D,UAQ0BH,EAAYG,EAAuB,CAC7D,UAQ8BH,EAAYG,EAAuB,CACjE,WACA,OACA,WACA,QACA,MACA,SACA,SAQ8BH,EAAYG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,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJ/U,GAAI,MACJgV,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC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,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACblrB,IAAK,CAAC,MAAO,OACbmrB,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbvhG,IAAK,CAAC,MAAO,MACbwhG,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACb3hG,IAAK,CAAC,MAAO,MACb4hG,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,OACbC,IAAK,CAAC,MAAO,MACbC,IAAK,CAAC,M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IACVhG,EAAI03D,EAAQD,OAAOg3I,GACvB,IAAI,IAAI1xM,EAAI,EAAGA,EAAI,IAAMA,IAAIsJ,EAAI+D,IAAIpK,EAAEw/B,WAAWziC,GAAI,IAAOA,GAE7D,OADAuxM,GAAoClkM,IAAIu0L,EAAUt4L,GAC3CA,GAGf,MAAM8nM,GAA4C,CAE9C,CACI,WACA,WACA,WACA,WACA,WACA,WACA,YAqBJ,CACI,cACA,YACA,OACA,SACA,aACA,aACA,cACA,iBACA,eACA,mBACA,iBACA,iBACA,QACA,UACA,QACA,SACA,UACA,YACA,YACA,UACA,QACA,cACA,UACA,WACA,WACA,MACA,UACA,YACA,OACA,WACA,aACA,UAGJ,CACI,QACA,KACA,cAIJ,CACI,SACA,WACA,YACA,UACA,OACA,SACA,QACA,KACA,KACA,KACA,aAGFD,GAA4C,CAC9CQ,GAAI,kBACJC,GAAI,gBACJC,GAAI,iBACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,kBACJC,GAAI,iBACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,IAAK,cACLC,IAAK,gBAEHC,GAA2C,CAE7C,GACA,CACI/pE,EAAG,KACHwpE,GAAI,KACJQ,GAAI,KACJC,GAAI,KACJn4D,EAAG,KACHo4D,GAAI,KACJC,GAAI,KACJC,GAAI,KACJv4D,EAAG,KACHw4D,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,EAAG,KACHC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJ/G,EAAG,KACHgH,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,EAAG,KACHC,GAAI,KACJC,GAAI,KACJC,IAAK,KACL7G,EAAG,KACH8G,GAAI,KACJC,GAAI,KACJC,IAAK,KACLC,EAAG,KACH7B,GAAI,KACJ8B,GAAI,KACJC,IAAK,KACLhtE,EAAG,KACHkrE,GAAI,KACJ+B,GAAI,KACJC,IAAK,KACLjtE,EAAG,KACHkrE,GAAI,KACJgC,GAAI,KACJC,IAAK,KACLltE,GAAI,KACJkrE,GAAI,KACJiC,GAAI,KACJC,IAAK,KACLC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,IAAK,KACLvtE,GAAI,KACJwtE,GAAI,KACJC,GAAI,KACJC,IAAK,KACLztE,GAAI,KACJ0tE,GAAI,KACJC,GAAI,KACJC,IAAK,KACL9H,GAAI,KACJ+H,GAAI,KACJC,GAAI,KACJC,IAAK,KACL3D,GAAI,KACJ4D,GAAI,KACJC,GAAI,KACJC,IAAK,KACLC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,IAAK,KACLjE,GAAI,KACJkE,GAAI,KACJC,GAAI,KACJC,IAAK,KACLnE,GAAI,KACJoE,GAAI,KACJC,GAAI,KACJC,IAAK,KACLC,GAAI,UACJC,GAAI,UACJC,GAAI,KACJC,IAAK,KACLC,GAAI,KACJC,GAAI,UACJC,GAAI,KACJlE,IAAK,KACLmE,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,IAAK,KACLC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,IAAK,KACLC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJ5E,IAAK,KACLX,GAAI,KACJwF,GAAI,KACJC,GAAI,UACJC,IAAK,KACLzF,GAAI,KACJ0F,GAAI,KACJC,GAAI,KACJC,IAAK,aACL3F,GAAI,KACJ4F,GAAI,KACJC,GAAI,KACJC,IAAK,KACL7F,GAAI,KACJ8F,GAAI,QACJC,GAAI,KACJC,IAAK,KACL/F,GAAI,KACJgG,GAAI,KACJC,GAAI,KACJC,IAAK,KACLC,GAAI,KACJC,GAAI,KACJC,GAAI,MAGR,GACA,CACI,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,MACR,KAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,MAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,MAAQ,QACR,MAAQ,QACR,KAAQ,MACR,KAAQ,QACR,MAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,QACR,MAAQ,QACR,KAAQ,QACR,MAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,QACR,KAAQ,MACR,KAAQ,QACR,KAAQ,MACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,MAAQ,QACR,KAAQ,KACR,KAAQ,MACR,MAAQ,QACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,UACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,MAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,MACR,KAAQ,QACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,UACR,KAAQ,QACR,KAAQ,QACR,KAAQ,MACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,KACR,KAAQ,QACR,KAAQ,KACR,KAAQ,MACR,KAAQ,KACR,KAAQ,QACR,KAAQ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/9B,KAAKg7M,YAAa,GAgB1B,IAAIa,GAA2C,IAAQR,GAA0C,CAE7F,CACI,EACA,aACA,QACA,MAEJ,CACI,EACA,aACA,QACA,MAEJ,CACI,EACA,cACA,QACA,MAEJ,CACI,EACA,mBACA,QACA,MAEJ,CACI,CACI,GACA,GAEJ,YACA,SACA,SAEJ,CACI,CACI,GACA,IAEJ,YACA,SACA,GAEJ,CACI,CACI,GACA,IAEJ,WACA,SACA,GAEJ,CACI,GACA,QACA,SACA,MAEJ,CACI,GACA,QACA,SACA,MAEJ,CACI,CACI,GACA,IAEJ,YACA,QACA,MAEJ,CACI,CACI,GACA,IAEJ,YACA,QACA,MAEJ,CACI,CACI,GACA,IAEJ,YACA,WACA,GAEJ,CACI,CACI,GACA,IAEJ,gBACA,SACA,GAEJ,CACI,CACI,GACA,IAEJ,kBACA,SACA,KAEJ,CACI,CACI,GACA,IAEJ,oBACA,SACA,GAEJ,CACI,GACA,gBACA,SACA,GAEJ,CACI,GACA,gBACA,SACA,GAEJ,CACI,GACA,UACA,SACA,GAEJ,CACI,GACA,QAnJR,MACI,cAAc1a,EAAQrqJ,EAAQglK,GAC1B,IAAIQ,EAAYR,EAASj4M,MAGzB,KAAMi4M,EAAS78M,OAASq9M,GAAUR,EAASj4M,QAgJ3C,MAEJ,CACI,GACA,QACA,IAAQs4M,GAA0C,IAAQvB,GAA2C,CACjG3mM,KAAM,UAEV,QAOJsoM,GAA2C,CAC3C,UACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,iBACA,UACA,UACA,UACA,UACA,QACA,OACA,OACA,QACA,SACA,UACA,QACA,YAIJ,IAAIC,GAA4C,CAC5C,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,GACA,SACA,SACA,YACA,iBACA,GACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,GACA,eACA,GACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,GACA,OACA,UACA,GACA,eACA,SACA,QACA,SACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,KACA,GACA,cACA,GACA,GACA,GACA,GACA,SACA,SACA,KACA,eACA,GACA,GACA,GACA,GACA,GACA,KACA,GACA,GACA,GACA,WACA,GACA,GACA,SACA,SACA,KACA,cAqQAC,GAA4C,CAC5C,UACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,aACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,YACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,aACA,OACA,WACA,WACA,MACA,SACA,UACA,WACA,cACA,eACA,gBACA,gBACA,iBACA,KACA,KACA,SACA,SACA,YACA,iBACA,YACA,SACA,iBACA,eACA,gBACA,iBACA,WACA,cACA,eACA,QACA,QACA,aACA,QACA,SACA,QACA,YACA,WACA,OACA,UACA,eACA,SACA,QACA,SACA,KACA,cACA,SACA,SACA,KACA,eACA,KACA,WACA,SACA,SACA,KACA,aACA,cACA,aACA,KACA,YACA,MACA,UACA,YACA,QACA,aACA,SACA,YACA,SACA,QACA,gBACA,cACA,aACA,QACA,MACA,WACA,gBACA,YACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,SACA,WACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,YACA,UAyQAC,GAAqC,IAAI,GAAc,CACvD5R,SAAU,IAAI,GAAgB,GAC9B6R,gBAAiB,EACjBC,aAAc,EACdC,eAAgB,IAAI,GAAa,EAAe,kBAEhDC,GAAsC,IAAI,GAAc,CACxD/qK,IAAK,IAAI,GAAc,GACvBgrK,QAAS,IAAI,GAAe,EAAeL,GAAoC,CAC3EzoM,KAAM,aAGV+oM,GAA+B,IAAI,GAAc,CACjDC,eAAgB,IAAI,GAAe,EAAeP,IAClDjhJ,MAAO,EACPyhJ,eAAgB,IAAI,GAAaJ,GAAqC,WAEtEK,GAAqC,IAAI,GAAc,CACvDprK,IAAK,IAAI,GAAc,GACvBqrK,OAAQ,IAAI,GAAe,EAAeJ,GAA8B,CACpE/oM,KAAM,aAGVopM,GAA4C,IAAI,GAAaF,GAAoC,GAIjGG,GAAsC,IAAI,GAAc,CACxDzlM,QAAS,EACTw+L,OAAQ,IAERkH,GAA2C,IAAI,GAAc,CAC7DC,cAAe,IAAI,GAAe,EAAeF,IACjDG,YAAa,EACbC,kBAAmB,IAAI,GAAa,EAAe,iBAEnDC,GAAsC,IAAI,GAAc,CACxD5rK,IAAK,IAAI,GAAc,GACvB6rK,QAAS,IAAI,GAAe,EAAeL,GAA0C,CACjFtpM,KAAM,aAGV4pM,GAA4C,IAAI,GAAaF,GAAqC,GAClGG,GAAoC,IAAI,GAAc,CACtDC,mBAAoB,EACp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AOljB,EAAQrqJ,EAAQglK,GACnB,OAAIt7M,KAAK8jN,cAAcxI,EAAS,IAAYt7M,KAAK8jN,cAAcxI,EAAS,IACjEt7M,KAAKyT,KAAKqkD,OAAO6oI,EAAQrqJ,EAAQglK,GAE5C,KAAKt9M,EAAOysF,GACR,OAAOzqF,KAAKyT,KAAKyS,KAAKloB,EAAOysF,GAEjC,OAAOk2G,EAAQ3iM,EAAOysF,GAClB,IAAIjyE,EAAQxY,KAAK8jN,cAActjN,QAAQxC,GACvC,OAAe,IAAXwa,EAAqBA,EAClBxY,KAAKyT,KAAK48C,OAAOswI,EAAQ3iM,EAAOysF,GAE3C,YAAYq5H,EAAerwM,GACvBzT,KAAK8jN,cAAgBA,EACrB9jN,KAAKyT,KAAOA,GAWpB,IAAIswM,GAA+B,IAAI,GAAc,CACjD99K,MAAO,EACP+9K,MAAO,IAEPC,GAA+B,IAAI,GAAc,CACjDh+K,MAAO,EACP+9K,MAAO,IAYPE,GAAoC,IAAIL,GAAmC,CACvE7H,GAniCwC,CAC5C,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,QACA,cACA,oBACA,GACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,gBACA,GACA,YACA,YACA,eACA,YACA,YACA,GACA,GACA,YACA,GACA,GACA,YACA,YACA,YACA,YACA,GACA,GACA,YACA,YACA,YACA,GACA,KACA,KACA,KACA,MACA,MACA,oBACA,GACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,kBACA,eACA,cACA,GACA,GACA,cACA,cACA,gBACA,aACA,aACA,GACA,iBACA,GACA,GACA,cACA,GACA,GACA,aACA,iBACA,GACA,GACA,cACA,YACA,eACA,GACA,GACA,GACA,aACA,UACA,gBACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,GACA,GACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,mBAsyBD,IAAQL,GAbmC,IAAI,GAAuB,IAhBzE,cAAuD,EACnD,OAAOhb,GACH,OAAqC,IAA9B,EAAa7oI,OAAO6oI,GAE/B,cACIriB,MAAM,WAW2G,CACrHv4C,EAAG,CACCo+E,OAAQ,EACRj0E,MAAO,IAAI,GAAa,EAAc,WAE1C2H,EAAG,CACCusE,QAAS,EACTC,OAAQ,IAAI,GAAaN,GAA8B,cAM+B,CAC1F5f,MAAM,KAIV,MAAMmgB,WAAyC,GAC3C,OAAO3jB,EAAQrqJ,GACX,IAAI73C,EAAa,EAAsBuB,KAAKvB,OAAQkiM,EAAQrqJ,GACxD2kB,EAAQ,EACRv0D,EAAM,GACV,KAAMu0D,EAAQx8D,GAAO,CACjB,IAAIuxL,EAAQhwL,KAAKyT,KAAKqkD,OAAO6oI,EAAQrqJ,GACrC05I,EAAM3wI,OAAS4b,EACfA,GAAS+0H,EAAMg0B,MAAQ,EACvBt9M,EAAIpD,KAAK0sL,GAEb,OAAOtpL,GAGf,IAWI69M,GAAmC,IAAIV,GAAmC,CACtE5H,GA1lBwC,CAC5C,UACA,QACA,cACA,oBACA,iBACA,iBACA,iBACA,aACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,gBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,KACA,KACA,MACA,MACA,oBACA,qBACA,kBACA,iBACA,aACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,gBACA,YACA,SACA,aACA,kBACA,eACA,cACA,cACA,cACA,gBACA,aACA,aACA,iBACA,cACA,aACA,iBACA,cACA,YACA,eACA,aACA,UACA,gBACA,oBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,gBACA,cACA,cACA,mBACA,cACA,iBACA,aACA,UACA,gBACA,cACA,cACA,mBACA,iBACA,cACA,cACA,mBACA,iBACA,WACA,cACA,cACA,cACA,mBACA,cACA,iBACA,UACA,cACA,cACA,cACA,mBACA,iBACA,cACA,aACA,kBAE4C,CAC5C,UACA,QACA,iBACA,iBACA,oBACA,qBACA,iBACA,iBACA,QACA,SACA,SACA,WACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,QACA,YACA,gBACA,sBACA,iBACA,YACA,YACA,eACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,KACA,KACA,KACA,MACA,MACA,oBACA,qBACA,iBACA,gBACA,YACA,SACA,eACA,aACA,iBACA,aACA,UACA,gBACA,YACA,eACA,cACA,eACA,WACA,YACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,cACA,cACA,gBACA,eACA,eACA,cACA,gBACA,gBACA,eACA,eACA,iBACA,iBACA,kBA8VD,IAAQN,GAfkC,IAAI,GAAuB,EAAc,CAClF51E,EAAG,CACCq4E,OAAQ,IAAI,GAAa,GAAgBjhN,GAAIA,EAAEm5C,OAAOkuK,YAAY/lN,OAAS,KAE/Eo5I,EAAG,CACCwsE,OAAQ,IAAIC,GAAiCP,IAA+B5mN,GAAIA,EAAEm5C,OAAOkuK,YAAY/lN,OAAS,KAElHm5I,EAAG,CACCysE,OAAQ,IAAIC,GAAiCL,IAA+B9mN,GAAIA,EAAEm5C,OAAOkuK,YAAY/lN,OAAS,OAOzB,CACzF0lM,MAAM,KAENsgB,GAAiC,IAAI,GAAc,CACnDx+K,MAAO,EACPy+K,GAAI,IAEJC,GAAiC,IAAI,GAAc,CACnD1+K,MAAO,EACPy+K,GAAI,IAEJE,GAAiC,IAAI,GAAuB,EAAc,CAC1E7+E,EAAG,CACC8+E,IAAK,IAAI,GAAa,GAAe1nN,GAAIA,EAAEm5C,OAAOkuK,YAAY/lN,UAElE8xM,EAAG,CACC6T,QAAS,EACTC,OAAQ,IAAI,GAAaI,GAAgC,WACzDztG,SAAU,GAEd2yF,EAAG,CACCya,QAAS,EACTC,OAAQ,IAAI,GAAaM,GAAgC,WACzD3tG,SAAU,KAGd8tG,GAA4B,IAAQnJ,GAA8CE,IACtF,MAAMkJ,GACF,OAAOpkB,EAAQrqJ,EAAQglK,GAEnB,OADAhlK,EAAO73C,OAAS68M,EAAS,GAClBwJ,GAA0BhtJ,OAAO6oI,EAAQrqJ,EAAQ,CACpDglK,EAAS,KAGjB,KAAKI,EAAMjxH,GACP,MAAO,CACCoxH,GAA0C31L,KAAKw1L,EAAMjxH,GAAK,GAC9Dq6H,GAA0B5+L,KAAKw1L,EAAMjxH,GAAK,IAGlD,OAAOk2G,EAAQ+a,EAAMjxH,GACjB,MAAO,CACCoxH,GAA0C31L,KAAKw1L,EAAMjxH,GAAK,GAC9Dq6H,GAA0Bz0J,OAAOswI,EAAQ+a,EAAMjxH,GAAK,KAIhE,IAAIu6H,GAAiC,IAAQ3J,GAA0C,CAEnF,CACI,GACA,UACA,IAAI0J,GACJ,MAEJ,CACI,CACI,GACA,IAEJ,WACA,MACA,MAEJ,CACI,CACI,GACA,GAEJ,aACA,QACA,CACI,KACA,EACA,EACA,KACA,EACA,IAGR,CACI,CACI,GACA,GAEJ,YACA,SACA,KAGJE,GAAmC,IAAQ5J,GAA0C,CAErF,CACI,CACI,GACA,IAEJ,MACA,CACI,MACA,MACA,UAEJ,MAEJ,CACI,EACA,UACA,MACA,MAEJ,CACI,EACA,SACA,MACA,MAEJ,CACI,CACI,GACA,GAEJ,YACA,MACA,MAEJ,CACI,EACA,WACA,MACA,MAEJ,CACI,EACA,aACA,MACA,MAEJ,CACI,EACA,SACA,MACA,MAEJ,CACI,CACI,GACA,GAEJ,eACA,WACA,GAEJ,CACI,CACI,GACA,GAEJ,cACA,SACA,GAEJ,CACI,CACI,GACA,GAEJ,oBACA,UACC,KAEL,CACI,CACI,GACA,GAEJ,qBACA,SACA,IAEJ,CACI,CACI,GACA,GAEJ,YACA,SACA,GAEJ,CACI,CACI,GACA,GAEJ,iBACA,SACA,GAEJ,CACI,CACI,GACA,GAEJ,aACA,QACA,CACI,KACA,EACA,EACA,KACA,EACA,IAGR,CACI,GACA,WACA,SACA,MAEJ,CACI,EACA,WACA,QACA,CACI,EACA,EACA,EACA,IAGR,CACI,CACI,GACA,GAEJ,cACA,SACA,GAEJ,CACI,GACA,OACA,QACA,MAEJ,CACI,GACA,UACAkJ,GACItI,IAER,CACI,GACA,WACAiI,GACIlI,IAER,CACI,GACA,cACA,IAAQL,GAA0C,IAAQvB,IAC1D,MAEJ,CACI,GACA,UACA,IAAI2K,GACJ,MAEJ,CACI,CACI,GACA,IAEJ,gBACA,SACA,MAEJ,CACI,CACI,GACA,IAEJ,aACA,MACA,MAEJ,CACI,CACI,GACA,IAEJ,eACA,MACA,MAEJ,CACI,CACI,GACA,IAEJ,gBACA,QACA,MAGJ,CACI,CACI,GACA,IAEJ,iBACA,SACA,GAEJ,CACI,CACI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F8mH,GAAyC7+P,UAAU+3I,GAAW,YAAYzrI,GAMxE,OALAvL,KAAKi+P,MAAQj+P,KAAKg+P,MAAQ,KAC1Bh+P,KAAK+9P,SAASz6P,KAAK,CACf0zI,QAASA,EACTzrI,KAAMA,IAEHvL,MAKX,IAAI8/P,GAA2C,CAC3C,UACA,QACA,mBACA,QACA,SACA,WACA,aACA,SACA,UACA,YACA,cACA,YACA,aACA,WACA,OACA,QACA,SACA,SACA,QACA,OACA,MACA,MACA,QACA,OACA,OACA,MACA,QACA,QACA,OACA,QACA,YACA,OACA,QACA,UACA,WACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cACA,YACA,eACA,cACA,aACA,QACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,YACA,MACA,aACA,aACA,YACA,QACA,WACA,SACA,SACA,YACA,YACA,SACA,SACA,cACA,YACA,SACA,QACA,WACA,SACA,SACA,cACA,YACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,SACA,cACA,YACA,SACA,SACA,OACA,WACA,UACA,SACA,YACA,aACA,aACA,YACA,YACA,QACA,WACA,WACA,KACA,SACA,WACA,YACA,YACA,eACA,MACA,KACA,cACA,YACA,UACA,KACA,WACA,cACA,eACA,QACA,KACA,SACA,eACA,aACA,aACA,UACA,SACA,cACA,QACA,gBACA,iBACA,WACA,mBACA,SACA,SACA,SACA,KACA,KACA,SACA,SACA,eACA,gBACA,YACA,aACA,SACA,UACA,YACA,YACA,WACA,WACA,gBACA,iBACA,KACA,KACA,YACA,iBACA,iBACA,eACA,cACA,cACA,cACA,SACA,YACA,SACA,SACA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AAO,KACPC,MAAO,OAER,CACCX,QAAS,CACR,qGACA,0CACA,iBACA,uBAEDv/D,SAAU,kBACVnmD,SAAU,kBACVC,WAAY,UACZ0lH,OAAQ,SACRC,YAAa,MACbC,aAAc,OACdC,aAAc,gBACdlB,SAAU,oBACVmB,kBAAmB,OACnBC,mBAAoB,KACpBC,QAAS,UACTC,OAAQ,qGACRC,eAAgB,wBAChBnB,UAAW,MACXD,QAAS,MACTF,SAAU,MACVC,UAAW,OACXsB,MAAO,KACPC,MAAO,MAER,CACCX,QAAS,CACR,qGACA,0CACA,iBACA,uBAEDv/D,SAAU,UACVnmD,SAAU,UACVC,WAAY,UACZ0lH,OAAQ,SACRC,YAAa,IACbC,aAAc,OACdC,aAAc,gBACdlB,SAAU,oBACVmB,kBAAmB,OACnBC,mBAAoB,KACpBC,QAAS,UACTC,OAAQ,qGACRC,eAAgB,wBAChBnB,UAAW,MACXD,QAAS,MACTF,SAAU,MACVC,UAAW,OACXsB,MAAO,KACPC,MAAO,OA6iiCR9B,YA1iiCiB,CACjBv7L,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDs9L,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED51O,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED61O,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDjwL,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDniB,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDqyM,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDxwL,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDumG,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDkqF,IAAK,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,IAAK,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,IAAK,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDhxL,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDixL,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDpjM,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDqjM,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED7vK,GAAI,CACH,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDr6E,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED95B,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDg6B,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDn6B,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDo6B,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED3gC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED4gC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDK,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDrhC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDqhC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDG,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDhjF,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDyhD,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDoW,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDorB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDE,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDE,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDyoP,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDvxL,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDwxL,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDjqU,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDtE,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDqB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDtB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDnC,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDmF,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDE,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDwmB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED/rB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED6G,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDF,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED2M,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDjN,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDnD,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDkD,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED3D,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDwpB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDhsB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDgD,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDlD,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDisB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDjmB,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED63D,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED/0D,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDvD,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED+gF,EAAG,CACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDyqP,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,IAAK,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED79M,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED89M,IAAK,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDjqB,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED51L,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED8/M,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,eAAgB,CACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,GAAI,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,GAAI,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,eAAgB,CACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,eAAgB,CACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,eAAgB,CACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED10O,GAAI,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED20O,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,GAAI,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDz7Q,GAAI,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAED07Q,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDx4K,GAAI,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDy4K,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDrvQ,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDsvQ,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,IAAK,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,GAAI,CACH,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,cAAe,CACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDn9L,MAAO,CACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDo9L,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,WAAY,CACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,UAAW,CACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,SAAU,CACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDj7N,IAAK,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDk7N,OAAQ,CACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,aAAc,CACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,YAAa,CACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,QAAS,CACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEDC,KAAM,CACL,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MAkv5BDjR,UA/u5Be,CACfkR,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,UAAW,EACT,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFx/O,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFy/O,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFr/O,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFs/O,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF3/O,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEF4/O,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEF5/O,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF6/O,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFpgP,GAAI,EACF,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFqgP,GAAI,EACF,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,yBAA0B,EACxB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,wBAAyB,EACvB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,yBAA0B,EACxB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,kBAAmB,EACjB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,qBAAsB,EACpB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,yBAA0B,EACxB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,sBAAuB,EACrB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,mBAAoB,EAClB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,YAAa,EACX,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,eAAgB,EACd,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFl8P,GAAI,EACF,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFm8P,QAAS,EACP,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFpgP,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFqgP,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFvtM,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFwtM,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFjlM,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFklM,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF1gQ,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEF2gQ,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEF1gQ,GAAI,EACF,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEF2gQ,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF1gQ,GAAI,EACF,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEF2gQ,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,eAAgB,EACd,KACA,KACA,KACA,KACA,IAEFC,YAAa,EACX,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,oBAAqB,EACnB,KACA,KACA,KACA,KACA,IAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,yBAA0B,EACxB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,sBAAuB,EACrB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,0BAA2B,EACzB,KACA,KACA,KACA,KACA,IAEFC,uBAAwB,EACtB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,oBAAqB,EACnB,KACA,KACA,KACA,KACA,IAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,yBAA0B,EACxB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFhtQ,GAAI,EACF,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFitQ,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFjjN,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFkjN,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KAEFx7M,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IAEFy7M,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,CACP,GACA,IAEDC,QAAS,CACR,GACA,GACA,EACA,GACC,IAEFhvQ,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFivQ,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFzvQ,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF0vQ,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFjwQ,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFkwQ,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,yBAA0B,EACxB,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEF7zQ,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF8zQ,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF5sN,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEF6sN,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFrkN,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFskN,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,yBAA0B,EACxB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFt/Q,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFu/Q,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,yBAA0B,EACxB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,GACD,GACC,IAEF3lR,GAAI,EACF,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEF4lR,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFjmR,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFkmR,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFhgO,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KAEFigO,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAEFh2N,GAAI,EACF,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFi2N,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,KACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,KACA,KACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,KACA,KACA,KACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,KACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,KACA,KACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,KACA,KACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFxjO,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFyjO,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFv6N,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFw6N,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFnnO,GAAI,EACF,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFonO,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,OAAQ,EACN,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFvgO,GAAI,EACF,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFwgO,QAAS,EACP,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,KACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,GAAI,EACF,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,eAAgB,EACd,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,OAAQ,EACN,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,kBAAmB,EACjB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,YAAa,EACX,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,kBAAmB,EACjB,IACA,IACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,kBAAmB,EACjB,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,oBAAqB,EACnB,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,cAAe,EACb,KACA,KACA,IACA,IACA,KACA,KACA,IACA,IAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,kBAAmB,EACjB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,YAAa,EACX,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,qBAAsB,EACpB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,mBAAoB,EAClB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,eAAgB,EACd,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFC,qBAAsB,EACpB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,eAAgB,EACd,IACA,IACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,EACV,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,qBAAsB,EACpB,IACA,IACA,KACA,KACA,KACA,IACA,IACA,KAEFC,mBAAoB,EAClB,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,KACA,KACA,KACA,KACA,IACA,KAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,qBAAsB,EACpB,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,mBAAoB,EAClB,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,uBAAwB,EACtB,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,qBAAsB,EACpB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,mBAAoB,EAClB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,eAAgB,EACd,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KAEFC,GAAI,EACF,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,GAAI,EACF,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEF77D,GAAI,EACF,IACA,IACA,IACA,IAEF87D,QAAS,EACP,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,EACjB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,wBAAyB,EACvB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,EACf,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,sBAAuB,EACrB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,oBAAqB,EACnB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,oBAAqB,EACnB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,YAAa,EACX,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,EACjB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,OAAQ,EACN,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,GAAI,EACF,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFt/Q,GAAI,EACF,IACA,GACD,EACA,EACA,GACC,IACA,IAEF+2L,GAAI,EACF,IACA,IACA,IACA,GACD,GACC,IACA,IAEFwoF,cAAe,EACb,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,GAAI,EACF,IACA,IAEFC,QAAS,EACP,IACA,IAEFC,cAAe,EACb,IACA,IAEFC,QAAS,EACP,IACA,IAEFnrI,GAAI,EACF,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEForI,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,WAAY,EACV,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,mBAAoB,EAClB,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,EACf,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,mBAAoB,EAClB,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,EACf,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,UAAW,EACT,IACA,GACD,EACA,EACA,GACC,IACA,IAEFC,UAAW,EACT,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,UAAW,EACT,IACA,IAEFC,eAAgB,EACd,IACA,IAEFC,qBAAsB,EACpB,IACA,IAEFC,eAAgB,EACd,IACA,IAEFC,UAAW,EACT,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,eAAgB,EACd,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,EACjB,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IAEFC,gBAAiB,EACf,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IAEFC,WAAY,EACV,IACA,IAEFC,GAAI,EACF,IACA,IAEFC,QAAS,EACP,IACA,IAEFC,GAAI,EACF,IACA,IAEFC,GAAI,EACF,IACA,GACD,EACA,GACC,IAEFtqI,GAAI,EACF,IACA,IAEFuqI,QAAS,EACP,IACA,IAEFC,WAAY,EACV,IACA,IAEFC,QAAS,EACP,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,QAAS,EACP,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,gBAAiB,EACf,IACA,IAEFC,OAAQ,CACP,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,CACR,GACA,IACC,IACA,GACD,EACA,GACC,IAEF/iG,GAAI,EACF,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFgjG,GAAI,EACF,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFtoE,GAAI,EACF,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFsoE,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,YAAa,CACZ,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,YAAa,CACZ,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,kBAAmB,CAClB,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,eAAgB,CACf,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,gBAAiB,CAChB,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,iBAAkB,CACjB,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,YAAa,CACZ,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,cAAe,CACd,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,cAAe,CACd,GACA,IACC,IACA,GACD,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,GACD,GACC,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,GACD,EACA,GACC,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IAEFz3O,GAAI,EACF,IACA,IACA,IACA,GACD,GACC,IAEF03O,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,GACC,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,CACf,GACA,GACA,GACA,GACA,IAEDC,YAAa,CACZ,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAEDv4O,GAAI,CACH,GACA,GACA,EACA,EACA,EACA,GACC,IAEFw4O,QAAS,CACR,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,WAAY,CACX,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,YAAa,CACZ,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,SAAU,CACT,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,SAAU,CACT,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,GAAI,EACF,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,CAClB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,CAChB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,CACjB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,cAAe,CACd,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,cAAe,CACd,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,CACd,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,CACnB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,CACnB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,wBAAyB,CACxB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,sBAAuB,CACtB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,uBAAwB,CACvB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,CACnB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,oBAAqB,CACpB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,oBAAqB,CACpB,GACA,GACA,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,yBAA0B,EACxB,IACA,GACD,EACA,EACA,EACA,GACC,IAEF/+T,GAAI,EACF,IACA,IACA,IACA,IACA,GACD,EACA,GACC,GAEFg/T,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,GAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,GACD,EACA,GACC,GAEF1/T,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEF2/T,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,GAAI,EACF,IACA,IAEFC,QAAS,EACP,IACA,IAEFC,WAAY,EACV,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,gBAAiB,EACf,IACA,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,IAEFC,mBAAoB,EAClB,IACA,IAEFC,sBAAuB,EACrB,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IAEFC,aAAc,EACZ,IACA,IAEFC,gBAAiB,EACf,IACA,IAEFz+D,GAAI,EACF,IACA,IACA,IACA,IAEF0+D,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFh9Q,GAAI,EACF,IACA,IACA,IACA,IAEFi9Q,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IAEFC,wBAAyB,EACvB,IACA,IACA,IACA,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IAEFC,0BAA2B,EACzB,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,sBAAuB,EACrB,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEF5gI,GAAI,EACF,IACA,IACA,IACA,GACD,GACC,IAEFC,GAAI,EACF,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEF4gI,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,eAAgB,EACd,IACA,IACA,IACA,GACD,GACC,IAEFC,eAAgB,EACd,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,cAAe,EACb,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEF/7I,GAAI,EACF,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFg8I,QAAS,EACP,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,EACA,EACA,GACC,IAEFC,oBAAqB,EACnB,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IAEFC,iBAAkB,EAChB,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,EAChB,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,uBAAwB,EACtB,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,EAChB,IACA,GACD,EACA,EACA,EACA,EACA,GACC,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IAEFC,YAAa,EACX,IACA,GACD,EACA,GACC,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,UAAW,EACT,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IAEFC,GAAI,EACF,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,GAAI,EACF,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,cAAe,EACb,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,GAAI,EACF,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,WAAY,EACV,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,eAAgB,EACd,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,SAAU,EACR,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IAEFC,GAAI,EACF,IACA,GACD,EACA,GACC,GACD,GACC,IAEFv2G,GAAI,EACF,IACA,GACD,EACA,EACA,EACA,GACC,IAEFw2G,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,UAAW,EACT,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEF9jP,GAAI,CACH,GACA,GACA,GACA,IAED+jP,cAAe,CACd,GACA,GACA,GACA,IAEDC,GAAI,CACH,GACA,GACA,GACA,IACC,IAEFtqI,GAAI,CACH,GACA,GACA,GACA,IAEDuqI,QAAS,CACR,GACA,GACA,GACA,IAEDC,WAAY,CACX,GACA,GACA,GACA,IAEDC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,eAAgB,EACd,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,kBAAmB,EACjB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,oBAAqB,EACnB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,eAAgB,EACd,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,GACA,GACA,GACA,IAEDC,mBAAoB,CACnB,GACA,GACA,GACA,IAEDC,QAAS,CACR,GACA,GACA,GACA,IACC,IAEFC,QAAS,CACR,GACA,GACA,GACA,IAEDC,aAAc,CACb,GACA,GACA,GACA,IAEDC,gBAAiB,CAChB,GACA,GACA,GACA,IAEDC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,eAAgB,EACd,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,kBAAmB,EACjB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,gBAAiB,EACf,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,oBAAqB,EACnB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IAEFC,QAAS,EACP,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,aAAc,EACZ,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,eAAgB,EACd,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,GACA,GACA,GACA,IAEDC,mBAAoB,CACnB,GACA,GACA,GACA,IAEDC,QAAS,CACR,GACA,GACA,GACA,IACC,IAEFC,QAAS,CACR,GACA,GACA,GACA,IAEDC,aAAc,CACb,GACA,GACA,GACA,IAEDC,gBAAiB,CAChB,GACA,GACA,GACA,IAEDC,cAAe,EACb,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,qBAAsB,EACpB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,yBAA0B,EACxB,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IACA,IAEFC,cAAe,EACb,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,wBAAyB,EACvB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,sBAAuB,EACrB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,0BAA2B,EACzB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,oBAAqB,EACnB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IAEFC,cAAe,EACb,IACA,GACD,EACA,GACC,GACD,GACC,IAEFC,cAAe,EACb,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,EAClB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,qBAAsB,EACpB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,yBAA0B,EACxB,IACA,GACD,EACA,EACA,EACA,GACC,IAEFC,cAAe,CACd,GACA,GACA,GACA,IAEDC,yBAA0B,CACzB,GACA,GACA,GACA,IAEDC,cAAe,CACd,GACA,GACA,GACA,IACC,IAEFC,cAAe,CACd,GACA,GACA,GACA,IAEDC,mBAAoB,CACnB,GACA,GACA,GACA,IAEDC,sBAAuB,CACtB,GACA,GACA,GACA,IAEDC,GAAI,EACF,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,UAAW,EACT,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,IACA,IACA,GACD,GACC,IACA,IAEFC,YAAa,EACX,KACA,KACA,IACA,IACA,GACD,GACC,IACA,IAEFC,kBAAmB,EACjB,KACA,KACA,IACA,IACA,GACD,GACC,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IAEFj5P,GAAI,EACF,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFk5P,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,GACD,EACA,GACC,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAEFxwP,GAAI,EACF,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFywP,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,aAAc,EACZ,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,WAAY,EACV,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,YAAa,EACX,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,EACP,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFC,SAAU,EACR,IACA,IACA,IACA,GACD,GACC,GACD,GACC,IAEFn7P,GAAI,EACF,IACA,IACA,IACA,IAEFo7P,QAAS,EACP,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,OAAQ,EACN,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFzyP,GAAI,EACF,IACA,IACA,IACA,IACA,IAEF0yP,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IAEFC,GAAI,EACF,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IACA,IAEFC,SAAU,EACR,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IAEFC,YAAa,EACX,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IAEFC,QAAS,EACP,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,kBAAmB,EACjB,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IAEFC,cAAe,EACb,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,IACA,IACA,IAEFC,aAAc,EACZ,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IAEFC,eAAgB,EACd,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,EACnB,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IAEFC,WAAY,EACV,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,qBAAsB,EACpB,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,EAClB,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,EACtB,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,EAChB,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,EACf,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IAEFr0P,GAAI,CACH,GACA,IACC,IACA,IAEFs0P,QAAS,CACR,GACA,IACC,IACA,IAEFC,QAAS,CACR,GACA,IACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,IAEFC,WAAY,CACX,GACA,IACC,IACA,IAEFC,YAAa,CACZ,GACA,IACC,IACA,IAEFC,QAAS,CACR,GACA,IACC,IACA,IAEFC,SAAU,CACT,GACA,IACC,IACA,IAEFC,SAAU,CACT,GACA,IACC,IACA,IAEFC,QAAS,CACR,GACA,IACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,IAEFC,kBAAmB,CAClB,GACA,IACC,IACA,IAEFC,gBAAiB,CAChB,GACA,IACC,IACA,IAEFC,iBAAkB,CACjB,GACA,IACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,IAEFC,cAAe,CACd,GACA,IACC,IACA,IAEFC,cAAe,CACd,GACA,IACC,IACA,IAEFC,QAAS,CACR,GACA,IACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,IAEFC,kBAAmB,CAClB,GACA,IACC,IACA,IAEFC,gBAAiB,CAChB,GACA,IACC,IACA,IAEFC,iBAAkB,CACjB,GACA,IACC,IACA,IAEFC,aAAc,CACb,GACA,IACC,IACA,IAEFC,cAAe,CACd,GACA,IACC,IACA,IAEFC,cAAe,CACd,GACA,IACC,IACA,IAEFC,YAAa,CACZ,GACA,IACC,IACA,IAEFC,iBAAkB,CACjB,GACA,IACC,IACA,IAEFC,iBAAkB,CACjB,GACA,IACC,IACA,IAEFC,sBAAuB,CACtB,GACA,IACC,IACA,IAEFC,oBAAqB,CACpB,GACA,IACC,IACA,IAEFC,qBAAsB,CACrB,GACA,IACC,IACA,IAEFC,iBAAkB,CACjB,GACA,IACC,IACA,IAEFC,kBAAmB,CAClB,GACA,IACC,IACA,IAEFC,kBAAmB,CAClB,GACA,IACC,IACA,IAEFC,OAAQ,CACP,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,OAAQ,CACP,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IAEFz4P,GAAI,CACH,EACA,GACC,IACA,IACA,IACA,KACA,IAEF04P,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,WAAY,CACX,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,KACA,IAEFC,GAAI,CACH,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,WAAY,CACX,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,KACA,IAEFC,GAAI,CACH,EACA,GACC,IACA,GACD,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,GACD,GACC,IACA,IAEFnkQ,GAAI,CACH,EACA,GACC,IACA,IACA,IACA,IACA,IAEFokQ,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,WAAY,CACX,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,OAAQ,CACP,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,GACC,KACA,KAEFC,aAAc,CACb,EACA,GACC,KACA,KAEFC,mBAAoB,CACnB,EACA,GACC,KACA,KAEFC,QAAS,CACR,EACA,GACC,KACA,KAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,KACA,KAEFC,aAAc,CACb,EACA,GACC,KACA,KAEFC,gBAAiB,CAChB,EACA,GACC,KACA,KAEFC,oBAAqB,CACpB,EACA,GACC,KACA,KAEFC,iBAAkB,CACjB,EACA,GACC,KACA,IACD,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,OAAQ,CACP,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,KACA,KACA,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,GACC,KACA,KACA,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,KACA,KACA,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,GACC,KACA,KACA,IACA,IACA,IACA,KAEFvmL,GAAI,CACH,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFwmL,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,GACC,KACA,KACA,IACA,IACA,IACA,KAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,KACA,KACA,IACA,IACA,IACA,KAEFC,WAAY,CACX,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFviQ,GAAI,CACH,EACA,GACC,IACA,IACA,IACA,IAEFwiQ,OAAQ,CACP,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,CACP,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEF9pQ,GAAI,CACH,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEF+pQ,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,WAAY,CACX,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,OAAQ,CACP,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,EACA,GACC,IAEFC,UAAW,CACV,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFx4I,GAAI,CACH,EACA,GACC,IACA,IAEFy4I,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,yBAA0B,CACzB,EACA,GACC,IACA,IAEF3/P,GAAI,CACH,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEF4/P,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,WAAY,CACX,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,wBAAyB,CACxB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,sBAAuB,CACtB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,uBAAwB,CACvB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IACA,IACA,IACA,IACA,IAEFC,OAAQ,CACP,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,OAAQ,CACP,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEF7xQ,GAAI,CACH,EACA,GACC,IACA,GACD,EACA,GACC,IAEF8xQ,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,WAAY,CACX,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,OAAQ,CACP,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,OAAQ,CACP,EACA,EACA,GACA,IAEDC,GAAI,CACH,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,WAAY,CACX,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,SAAU,CACT,EACA,EACA,GACA,IAEDC,SAAU,CACT,EACA,EACA,GACA,IAEDlsW,GAAI,CACH,EACA,EACA,GACA,IAEDmsW,cAAe,CACd,EACA,EACA,GACA,IAEDC,GAAI,CACH,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,GAAI,CACH,EACA,EACA,GACA,IAEDC,GAAI,CACH,EACA,EACA,GACA,IACC,IAEFC,QAAS,CACR,EACA,EACA,GACA,IACC,IAEFC,QAAS,CACR,EACA,EACA,GACA,IACC,IAEFC,cAAe,CACd,EACA,EACA,GACA,IACC,IAEFC,QAAS,CACR,EACA,EACA,GACA,IACC,IAEFC,GAAI,CACH,EACA,EACA,GACA,IACC,IAEFC,WAAY,CACX,EACA,EACA,GACA,IAEDpuV,GAAI,CACH,EACA,EACA,GACA,IAEDquV,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,WAAY,CACX,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,eAAgB,CACf,EACA,EACA,GACA,IAEDC,SAAU,CACT,EACA,EACA,GACA,IAEDC,SAAU,CACT,EACA,EACA,GACA,IAEDC,OAAQ,CACP,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,cAAe,CACd,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,cAAe,CACd,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,YAAa,CACZ,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,YAAa,CACZ,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,kBAAmB,CAClB,EACA,EACA,GACA,IAEDC,gBAAiB,CAChB,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IACC,IAEFC,aAAc,CACb,EACA,EACA,GACA,IACC,IAEFC,aAAc,CACb,EACA,EACA,GACA,IACC,IAEFC,mBAAoB,CACnB,EACA,EACA,GACA,IACC,IAEFC,aAAc,CACb,EACA,EACA,GACA,IACC,IAEFC,QAAS,CACR,EACA,EACA,GACA,IACC,IAEFC,gBAAiB,CAChB,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,kBAAmB,CAClB,EACA,EACA,GACA,IAEDC,gBAAiB,CAChB,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,oBAAqB,CACpB,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,YAAa,CACZ,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,cAAe,CACd,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,cAAe,CACd,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,YAAa,CACZ,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,YAAa,CACZ,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,kBAAmB,CAClB,EACA,EACA,GACA,IAEDC,gBAAiB,CAChB,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IACC,IAEFC,aAAc,CACb,EACA,EACA,GACA,IACC,IAEFC,aAAc,CACb,EACA,EACA,GACA,IACC,IAEFC,mBAAoB,CACnB,EACA,EACA,GACA,IACC,IAEFC,aAAc,CACb,EACA,EACA,GACA,IACC,IAEFC,QAAS,CACR,EACA,EACA,GACA,IACC,IAEFC,gBAAiB,CAChB,EACA,EACA,GACA,IAEDC,QAAS,CACR,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,kBAAmB,CAClB,EACA,EACA,GACA,IAEDC,gBAAiB,CAChB,EACA,EACA,GACA,IAEDC,aAAc,CACb,EACA,EACA,GACA,IAEDC,oBAAqB,CACpB,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,YAAa,CACZ,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,wBAAyB,CACxB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,sBAAuB,CACtB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,GACD,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,wBAAyB,CACxB,EACA,EACA,GACA,IAEDC,sBAAuB,CACtB,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,oBAAqB,CACpB,EACA,EACA,GACA,IAEDC,oBAAqB,CACpB,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,yBAA0B,CACzB,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,yBAA0B,CACzB,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IACC,IAEFC,mBAAoB,CACnB,EACA,EACA,GACA,IACC,IAEFC,mBAAoB,CACnB,EACA,EACA,GACA,IACC,IAEFC,yBAA0B,CACzB,EACA,EACA,GACA,IACC,IAEFC,mBAAoB,CACnB,EACA,EACA,GACA,IACC,IAEFC,cAAe,CACd,EACA,EACA,GACA,IACC,IAEFC,sBAAuB,CACtB,EACA,EACA,GACA,IAEDC,cAAe,CACd,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,wBAAyB,CACxB,EACA,EACA,GACA,IAEDC,sBAAuB,CACtB,EACA,EACA,GACA,IAEDC,mBAAoB,CACnB,EACA,EACA,GACA,IAEDC,0BAA2B,CAC1B,EACA,EACA,GACA,IAEDC,oBAAqB,CACpB,EACA,EACA,GACA,IAEDC,oBAAqB,CACpB,EACA,EACA,GACA,IAEDC,kBAAmB,CAClB,EACA,EACA,GACA,IAEDC,OAAQ,CACP,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,GACC,IACA,IAEFlyQ,GAAI,CACH,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFmyQ,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFC,WAAY,CACX,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,IACA,IACA,GACD,GACC,IAEFv8Q,GAAI,CACH,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFw8Q,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,WAAY,CACX,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,OAAQ,CACP,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,GACD,GACC,IAEFjzQ,GAAI,CACH,EACA,GACC,IACA,GACD,GACC,IAEFkzQ,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,IAEFC,aAAc,CACb,EACA,GACC,IACA,GACD,GACC,IAEFC,WAAY,CACX,EACA,GACC,IACA,GACD,GACC,IAEFC,YAAa,CACZ,EACA,GACC,IACA,GACD,GACC,IAEFC,QAAS,CACR,EACA,GACC,IACA,GACD,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,GACC,IAEFC,SAAU,CACT,EACA,GACC,IACA,GACD,GACC,IAEFC,GAAI,CACH,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,WAAY,CACX,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,eAAgB,CACf,EACA,GACC,IACA,IAEFC,SAAU,CACT,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IAEFC,sBAAuB,CACtB,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IAEFC,wBAAyB,CACxB,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,GACC,IACA,IAEFC,GAAI,CACH,EACA,EACA,EACA,GACC,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IAEFC,sBAAuB,CACtB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,OAAQ,CACP,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,KAEFh2Q,GAAI,CACH,EACA,EACA,EACA,GACC,IACA,IACA,IAEFi2Q,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,GAAI,CACH,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,eAAgB,CACf,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IAEFnsU,GAAI,CACH,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFosU,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,OAAQ,CACP,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,wBAAyB,CACxB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,sBAAuB,CACtB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,GAAI,CACH,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,GAAI,CACH,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,GAAI,CACH,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFtnG,GAAI,CACH,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFunG,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,GAAI,CACH,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,GAAI,CACH,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,sBAAuB,CACtB,EACA,EACA,EACA,GACC,GACD,GACC,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,wBAAyB,CACxB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,sBAAuB,CACtB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,qBAAsB,CACrB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,eAAgB,CACf,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,GACD,EACA,GACC,IAEF/iV,GAAI,CACH,EACA,EACA,EACA,GACC,GACD,GACC,IAEFgjV,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,wBAAyB,CACxB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,sBAAuB,CACtB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,uBAAwB,CACvB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,GACC,GACD,GACC,IAEFC,OAAQ,CACP,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,eAAgB,CACf,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,GACC,IACA,IACA,IACA,IAEFC,GAAI,CACH,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,GACC,IACA,IAEF3pR,GAAI,CACH,EACA,EACA,EACA,EACA,GACC,IAEF4pR,QAAS,CACR,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,GACC,IAEFC,WAAY,CACX,EACA,EACA,EACA,EACA,GACC,IAEFC,YAAa,CACZ,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,GACC,IAEFC,GAAI,CACH,EACA,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,uBAAwB,CACvB,EACA,EACA,EACA,EACA,GACC,IACA,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,WAAY,CACX,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,qBAAsB,CACrB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,GAAI,CACH,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,wBAAyB,CACxB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,WAAY,CACX,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,sBAAuB,CACtB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,YAAa,CACZ,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,iBAAkB,CACjB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,uBAAwB,CACvB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,EACA,EACA,GACC,IACA,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,OAAQ,CACP,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,YAAa,CACZ,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,GAAI,CACH,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,kBAAmB,CAClB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,wBAAyB,CACxB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,WAAY,CACX,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,gBAAiB,CAChB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,sBAAuB,CACtB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,eAAgB,CACf,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,0BAA2B,CAC1B,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,oBAAqB,CACpB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,GACC,IAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,EACA,GACC,IAEFnsR,GAAI,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFosR,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,WAAY,CACX,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,SAAU,CACT,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,OAAQ,CACP,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,QAAS,CACR,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,kBAAmB,CAClB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,gBAAiB,CAChB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,YAAa,CACZ,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,aAAc,CACb,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,cAAe,CACd,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,wBAAyB,CACxB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,sBAAuB,CACtB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,mBAAoB,CACnB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,oBAAqB,CACpB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,oBAAqB,CACpB,EACA,EACA,EACA,EACA,EACA,EACA,GACC,GAEFC,kBAAmB,CAClB,EACA,EACA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AG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAG7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAE5C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC9C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE3D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAC5D,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAI,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAE5D,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7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","sources":["webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js?6ee4","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js?9644","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/defineProperty.js?310c","webpack://Msdyn365.Commerce.Online/./node_modules/classnames/index.js?2243","webpack://Msdyn365.Commerce.Online/./node_modules/tslib/tslib.es6.js?5f9b","webpack://Msdyn365.Commerce.Online/./node_modules/mobx/lib/mobx.module.js?7602","webpack://Msdyn365.Commerce.Online/./node_modules/mobx-react/index.module.js?27cd","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/toDate.js?e5d7","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/get.js?9985","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/Parser.js?0c7b","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/utils.js?7a99","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js?5327","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/defineProperty.js?28de","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/constructFrom.js?95e0","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/constants.js?7384","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isArray.js?fb24","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/utils.js?3061","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isObject.js?9c5a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/debounce.js?fcb9","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_root.js?1734","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isObjectLike.js?c4c9","webpack://Msdyn365.Commerce.Online/./node_modules/prop-types/index.js?b081","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getNative.js?1626","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseGetTag.js?90d7","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_Symbol.js?80be","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isIndex.js?3cee","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isArrayLike.js?ec98","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_toKey.js?d8b3","webpack://Msdyn365.Commerce.Online/./node_modules/get-intrinsic/index.js?07cf","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/defaultOptions.js?9feb","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/constants.js?a414","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfWeek.js?7a17","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isBuffer.js?6c99","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/cloneDeep.js?801a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/eq.js?a568","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/keys.js?a649","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isArguments.js?5a4e","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getTag.js?b259","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isSymbol.js?0abb","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_copyObject.js?faca","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/keysIn.js?52ff","webpack://Msdyn365.Commerce.Online/./node_modules/es-errors/type.js?774c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/groupBy.js?a1b8","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/utils/common.js?2ec6","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isEqual.js?96e5","webpack://Msdyn365.Commerce.Online/./node_modules/path-browserify/index.js?ce03","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_Stack.js?12da","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_ListCache.js?c6d8","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_assocIndexOf.js?2fb4","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_nativeCreate.js?2543","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getMapData.js?05c3","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isTypedArray.js?c73a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isPrototype.js?e322","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_castPath.js?88e2","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseAssignValue.js?4a8e","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isEmpty.js?2f2a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfISOWeek.js?17ab","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addDays.js?f991","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_nodeUtil.js?fd0d","webpack://Msdyn365.Commerce.Online/./node_modules/lazysizes/lazysizes.js?e5e4","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsEqual.js?d7a5","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_Map.js?7c7c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isFunction.js?0a46","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_MapCache.js?6b46","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_setToArray.js?126c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayPush.js?e146","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getSymbols.js?d0bd","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isLength.js?45f8","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseUnary.js?ae1a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseGet.js?cfc7","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isKey.js?e300","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_assignValue.js?9e68","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getPrototype.js?1692","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_cloneArrayBuffer.js?7cc8","webpack://Msdyn365.Commerce.Online/./node_modules/object-assign/index.js?f7fe","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/defaults.js?200f","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/identity.js?680e","webpack://Msdyn365.Commerce.Online/./node_modules/function-bind/index.js?ba8b","webpack://Msdyn365.Commerce.Online/./node_modules/es-define-property/index.js?0c6a","webpack://Msdyn365.Commerce.Online/./node_modules/qs/lib/formats.js?0a0a","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/ErrorCorrectLevel.js?5e16","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addMonths.js?9878","webpack://Msdyn365.Commerce.Online/../src/dom/getWindow.ts?82a7","webpack://Msdyn365.Commerce.Online/../src/Stylesheet.ts?2b78","webpack://Msdyn365.Commerce.Online/../src/memoize.ts?10c6","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_cloneBuffer.js?d261","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/typeof.js?c8c7","webpack://Msdyn365.Commerce.Online/./node_modules/axios/index.js?57ba","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/set.js?7d5f","webpack://Msdyn365.Commerce.Online/./node_modules/crypto-js/core.js?5437","webpack://Msdyn365.Commerce.Online/./node_modules/uuid/lib/rng-browser.js?b3a8","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_freeGlobal.js?cabd","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_toSource.js?e9be","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_equalArrays.js?5fcb","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_SetCache.js?859f","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_cacheHas.js?8c81","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_Uint8Array.js?c280","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getAllKeys.js?3bbe","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseGetAllKeys.js?97e2","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/stubArray.js?e706","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayLikeKeys.js?3b92","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseKeys.js?8c7a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_overArg.js?4ec2","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_Set.js?c9af","webpack://Msdyn365.Commerce.Online/./node_modules/uuid/lib/bytesToUuid.js?d625","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/toString.js?013a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayMap.js?cc0a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_defineProperty.js?aa36","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_copyArray.js?48c7","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getSymbolsIn.js?959f","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_cloneTypedArray.js?ce2c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_initCloneObject.js?ea74","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/bind.js?ee52","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/buildURL.js?1566","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/enhanceError.js?2b9e","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/createError.js?d729","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/cancel/isCancel.js?f606","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/mergeConfig.js?f6d4","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/cancel/Cancel.js?21b8","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_assignMergeValue.js?327a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseFor.js?3148","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_safeGet.js?202b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_overRest.js?4dc3","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_setToString.js?d88b","webpack://Msdyn365.Commerce.Online/./node_modules/url/url.js?c2c4","webpack://Msdyn365.Commerce.Online/./node_modules/es-errors/syntax.js?6d11","webpack://Msdyn365.Commerce.Online/./node_modules/gopd/index.js?b07a","webpack://Msdyn365.Commerce.Online/./node_modules/qs/lib/utils.js?ecf1","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_hasPath.js?8768","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseUniq.js?8bcf","webpack://Msdyn365.Commerce.Online/./node_modules/events/events.js?e1e5","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_createAggregator.js?93a2","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIteratee.js?91fd","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsMatch.js?a92a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getMatchData.js?8408","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isStrictComparable.js?e650","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_matchesStrictComparable.js?a356","webpack://Msdyn365.Commerce.Online/./node_modules/tiny-inflate/index.js?a150","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/adler32.js?6658","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/crc32.js?aea0","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/QRCode.js?a656","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/mode.js?49b8","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/Polynomial.js?7e41","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/math.js?7c85","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfDay.js?704a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js?1b3a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getISOWeek.js?3bf1","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getWeekYear.js?51ca","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setMonth.js?515c","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setDay.js?a51f","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_basePullAt.js?9d5c","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js?4d09","webpack://Msdyn365.Commerce.Online/../src/extractStyleParts.ts?3aec","webpack://Msdyn365.Commerce.Online/../src/mergeStyleSets.ts?fe5d","webpack://Msdyn365.Commerce.Online/../src/rtl.ts?c642","webpack://Msdyn365.Commerce.Online/../src/classNamesFunction.ts?d5ba","webpack://Msdyn365.Commerce.Online/../src/properties.ts?6a7f","webpack://Msdyn365.Commerce.Online/../src/DelayedRender.tsx?982e","webpack://Msdyn365.Commerce.Online/../src/styles/hiddenContentStyle.ts?446a","webpack://Msdyn365.Commerce.Online/../src/styles/getGlobalClassNames.ts?37db","webpack://Msdyn365.Commerce.Online/../src/styles/CommonStyles.ts?85af","webpack://Msdyn365.Commerce.Online/../src/keyframes.ts?0aa9","webpack://Msdyn365.Commerce.Online/../src/setVersion.ts?84dd","webpack://Msdyn365.Commerce.Online/../src/index.ts?6f37","webpack://Msdyn365.Commerce.Online/../src/version.ts?0003","webpack://Msdyn365.Commerce.Online/../src/colors/DefaultPalette.ts?bba2","webpack://Msdyn365.Commerce.Online/../src/effects/FluentDepths.ts?391a","webpack://Msdyn365.Commerce.Online/../src/effects/DefaultEffects.ts?0930","webpack://Msdyn365.Commerce.Online/../src/fonts/FluentFonts.ts?f7c0","webpack://Msdyn365.Commerce.Online/../src/fonts/createFontStyles.ts?8246","webpack://Msdyn365.Commerce.Online/../src/language.ts?7f1b","webpack://Msdyn365.Commerce.Online/../src/fonts/DefaultFontStyles.ts?8ef3","webpack://Msdyn365.Commerce.Online/../src/localStorage.ts?a4c3","webpack://Msdyn365.Commerce.Online/../src/fontFace.ts?ba43","webpack://Msdyn365.Commerce.Online/../src/merge.ts?8d44","webpack://Msdyn365.Commerce.Online/../src/utilities/makeSemanticColors.ts?1de3","webpack://Msdyn365.Commerce.Online/../src/spacing/DefaultSpacing.ts?54ce","webpack://Msdyn365.Commerce.Online/../src/createTheme.ts?3153","webpack://Msdyn365.Commerce.Online/../src/mergeThemes.ts?87e2","webpack://Msdyn365.Commerce.Online/../src/styles/theme.ts?23d7","webpack://Msdyn365.Commerce.Online/../src/customizations/CustomizerContext.ts?228b","webpack://Msdyn365.Commerce.Online/../src/customizations/useCustomizationSettings.ts?00f5","webpack://Msdyn365.Commerce.Online/../src/styled.tsx?7957","webpack://Msdyn365.Commerce.Online/../src/concatStyleSetsWithProps.ts?ec44","webpack://Msdyn365.Commerce.Online/./node_modules/url/node_modules/punycode/punycode.js?9346","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/renderer/node_modules/scheduler/cjs/scheduler.production.min.js?25da","webpack://Msdyn365.Commerce.Online/./node_modules/cross-fetch/dist/browser-ponyfill.js?19d9","webpack://Msdyn365.Commerce.Online/./node_modules/crypto-js/md5.js?943f","webpack://Msdyn365.Commerce.Online/wasm-async-web.ts?e446","webpack://Msdyn365.Commerce.Online/./node_modules/js-sha256/src/sha256.js?baaa","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/adapters/xhr.js?a810","webpack://Msdyn365.Commerce.Online/./node_modules/call-bind/index.js?b6ae","webpack://Msdyn365.Commerce.Online/./node_modules/uuid/v1.js?2d46","webpack://Msdyn365.Commerce.Online/./node_modules/inherits/inherits_browser.js?d1d3","webpack://Msdyn365.Commerce.Online/./node_modules/unicode-trie/index.js?0c48","webpack://Msdyn365.Commerce.Online/./node_modules/clone/clone.js?ddb5","webpack://Msdyn365.Commerce.Online/./node_modules/color-string/index.js?03a0","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/toPropertyKey.js?086d","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/toPrimitive.js?ee2c","webpack://Msdyn365.Commerce.Online/./node_modules/prop-types/factoryWithThrowingShims.js?f271","webpack://Msdyn365.Commerce.Online/./node_modules/prop-types/lib/ReactPropTypesSecret.js?4bab","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsEqualDeep.js?1a99","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_listCacheClear.js?d2a5","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_listCacheDelete.js?d177","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_listCacheGet.js?6ce7","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_listCacheHas.js?38a0","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_listCacheSet.js?8735","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_stackClear.js?8008","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_stackDelete.js?f6b7","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_stackGet.js?15e4","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_stackHas.js?4452","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_stackSet.js?5bc4","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsNative.js?403d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getRawTag.js?74d5","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_objectToString.js?33ee","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isMasked.js?8314","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_coreJsData.js?1c59","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getValue.js?7f6b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_mapCacheClear.js?8d9b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_Hash.js?b19c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_hashClear.js?333e","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_hashDelete.js?f1f8","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_hashGet.js?1da4","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_hashHas.js?05c2","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_hashSet.js?bfda","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_mapCacheDelete.js?f2b3","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isKeyable.js?3bad","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_mapCacheGet.js?f74a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_mapCacheHas.js?c465","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_mapCacheSet.js?d1d3","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_setCacheAdd.js?b65c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_setCacheHas.js?759c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arraySome.js?018b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_equalByTag.js?e951","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_mapToArray.js?e013","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_equalObjects.js?fbc8","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayFilter.js?aebe","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseTimes.js?ea1c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsArguments.js?90d9","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/stubFalse.js?e2a1","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsTypedArray.js?5512","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_nativeKeys.js?ac47","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_DataView.js?b59c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_Promise.js?7a87","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_WeakMap.js?3107","webpack://Msdyn365.Commerce.Online/./node_modules/shallowequal/index.js?bcdd","webpack://Msdyn365.Commerce.Online/./node_modules/uuid/v4.js?088a","webpack://Msdyn365.Commerce.Online/./node_modules/locale-currency/index.js?022b","webpack://Msdyn365.Commerce.Online/./node_modules/locale-currency/map.js?7664","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_stringToPath.js?8fb0","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_memoizeCapped.js?8c1c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/memoize.js?3a46","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseToString.js?5ebb","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseClone.js?8281","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayEach.js?4c5d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseAssign.js?f115","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseAssignIn.js?710e","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseKeysIn.js?d48f","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_nativeKeysIn.js?f8b2","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_copySymbols.js?9df9","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_copySymbolsIn.js?c411","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_getAllKeysIn.js?d53a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_initCloneArray.js?18bf","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_initCloneByTag.js?aa91","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_cloneDataView.js?08a9","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_cloneRegExp.js?82ab","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_cloneSymbol.js?9236","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseCreate.js?9f93","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isMap.js?fa0c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsMap.js?aaed","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isSet.js?5639","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsSet.js?17a1","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/axios.js?b0f6","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/Axios.js?5fd9","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/InterceptorManager.js?eebf","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/dispatchRequest.js?111d","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/transformData.js?2c4c","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/normalizeHeaderName.js?acc5","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/settle.js?38d9","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/cookies.js?121e","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/core/buildFullPath.js?825d","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/isAbsoluteURL.js?9491","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/combineURLs.js?fc56","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/parseHeaders.js?9a50","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/isURLSameOrigin.js?47af","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/validator.js?0e24","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/cancel/CancelToken.js?efd0","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/spread.js?6c3a","webpack://Msdyn365.Commerce.Online/./node_modules/axios/lib/helpers/isAxiosError.js?a66d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/merge.js?8b58","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseMerge.js?f720","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_createBaseFor.js?5f2d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseMergeDeep.js?9e61","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isArrayLikeObject.js?eeed","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isPlainObject.js?963e","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/toPlainObject.js?a495","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_createAssigner.js?d2bb","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseRest.js?e99f","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_apply.js?5386","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseSetToString.js?4e08","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/constant.js?b995","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_shortOut.js?5f4e","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isIterateeCall.js?a30f","webpack://Msdyn365.Commerce.Online/./node_modules/intl/index.js?d9cf","webpack://Msdyn365.Commerce.Online/./node_modules/intl/lib/core.js?4cb3","webpack://Msdyn365.Commerce.Online/./node_modules/qs/lib/index.js?9f8e","webpack://Msdyn365.Commerce.Online/./node_modules/qs/lib/stringify.js?eb2b","webpack://Msdyn365.Commerce.Online/./node_modules/side-channel/index.js?2a61","webpack://Msdyn365.Commerce.Online/./node_modules/es-errors/index.js?8d71","webpack://Msdyn365.Commerce.Online/./node_modules/es-errors/eval.js?0a58","webpack://Msdyn365.Commerce.Online/./node_modules/es-errors/range.js?a692","webpack://Msdyn365.Commerce.Online/./node_modules/es-errors/ref.js?76bd","webpack://Msdyn365.Commerce.Online/./node_modules/es-errors/uri.js?60d6","webpack://Msdyn365.Commerce.Online/./node_modules/has-symbols/index.js?3ed0","webpack://Msdyn365.Commerce.Online/./node_modules/has-symbols/shams.js?fd47","webpack://Msdyn365.Commerce.Online/./node_modules/has-proto/index.js?2291","webpack://Msdyn365.Commerce.Online/./node_modules/function-bind/implementation.js?9b7c","webpack://Msdyn365.Commerce.Online/./node_modules/hasown/index.js?b1de","webpack://Msdyn365.Commerce.Online/./node_modules/call-bind/callBound.js?54b5","webpack://Msdyn365.Commerce.Online/./node_modules/set-function-length/index.js?8cf6","webpack://Msdyn365.Commerce.Online/./node_modules/define-data-property/index.js?da25","webpack://Msdyn365.Commerce.Online/./node_modules/has-property-descriptors/index.js?f98c","webpack://Msdyn365.Commerce.Online/./node_modules/object-inspect/index.js?24d4","webpack://Msdyn365.Commerce.Online/./node_modules/qs/lib/parse.js?d39b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseSet.js?7c39","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/has.js?766d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseHas.js?74e8","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/uniqWith.js?b378","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayIncludes.js?39fe","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIndexOf.js?e40a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseFindIndex.js?b635","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseIsNaN.js?3f67","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_strictIndexOf.js?ca23","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayIncludesWith.js?f667","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_createSet.js?b698","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/noop.js?ea85","webpack://Msdyn365.Commerce.Online/./node_modules/js-cookie/src/js.cookie.js?ec8b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_arrayAggregator.js?1a3d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseAggregator.js?1169","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseEach.js?786d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseForOwn.js?1a5a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_createBaseEach.js?45e6","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseMatches.js?4e89","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseMatchesProperty.js?ec5c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/hasIn.js?f368","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseHasIn.js?9f9a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/property.js?fde1","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseProperty.js?2714","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_basePropertyDeep.js?8a14","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/now.js?a05d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/toNumber.js?480a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseTrim.js?2d6d","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_trimmedEndIndex.js?63ce","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isMatch.js?d2ac","webpack://Msdyn365.Commerce.Online/./node_modules/queue/index.js?fd75","webpack://Msdyn365.Commerce.Online/./node_modules/is-url/index.js?c5d7","webpack://Msdyn365.Commerce.Online/./node_modules/fast-deep-equal/index.js?29b9","webpack://Msdyn365.Commerce.Online/./node_modules/base64-js/index.js?012a","webpack://Msdyn365.Commerce.Online/./node_modules/unicode-trie/swap.js?20b8","webpack://Msdyn365.Commerce.Online/src/StateMachine.js?2e95","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/decode.js?36cd","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/bit_reader.js?8306","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/dictionary.js?4ff4","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/dictionary.bin.js?fbb0","webpack://Msdyn365.Commerce.Online/./node_modules/abs-svg-path/index.js?a44f","webpack://Msdyn365.Commerce.Online/./node_modules/parse-svg-path/index.js?bcb1","webpack://Msdyn365.Commerce.Online/./node_modules/color-name/index.js?e09a","webpack://Msdyn365.Commerce.Online/./node_modules/simple-swizzle/index.js?be2c","webpack://Msdyn365.Commerce.Online/./node_modules/simple-swizzle/node_modules/is-arrayish/index.js?e876","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/zstream.js?864a","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/messages.js?4d48","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/inffast.js?138f","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/inftrees.js?be2d","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/constants.js?5e9f","webpack://Msdyn365.Commerce.Online/./node_modules/postcss-value-parser/lib/parse.js?dc50","webpack://Msdyn365.Commerce.Online/./node_modules/postcss-value-parser/lib/unit.js?91ba","webpack://Msdyn365.Commerce.Online/./node_modules/hsl-to-hex/index.js?3872","webpack://Msdyn365.Commerce.Online/./node_modules/hsl-to-rgb-for-reals/converter.js?702f","webpack://Msdyn365.Commerce.Online/./node_modules/media-engine/src/index.js?9802","webpack://Msdyn365.Commerce.Online/./node_modules/media-engine/src/parser.js?94d2","webpack://Msdyn365.Commerce.Online/./node_modules/media-engine/src/queries.js?45d0","webpack://Msdyn365.Commerce.Online/./node_modules/media-engine/src/operators.js?09f2","webpack://Msdyn365.Commerce.Online/./node_modules/hyphen/hyphen.js?40cd","webpack://Msdyn365.Commerce.Online/./node_modules/hyphen/patterns/en-us.js?e725","webpack://Msdyn365.Commerce.Online/YGEnums.ts?d4cc","webpack://Msdyn365.Commerce.Online/./node_modules/yoga-layout/binaries/wasm-async-web.js?704b","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/8BitByte.js?8cc7","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/RSBlock.js?fc56","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/BitBuffer.js?929a","webpack://Msdyn365.Commerce.Online/./node_modules/qr.js/lib/util.js?7092","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/isUndefined.js?45d0","webpack://Msdyn365.Commerce.Online/./node_modules/react-datepicker/dist/react-datepicker.min.js?10fc","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isDate.js?da98","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isValid.js?a6b8","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/defaultLocale.js?b705","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/differenceInCalendarDays.js?5933","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfYear.js?ff66","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getISOWeekYear.js?33f3","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getWeek.js?6312","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/addLeadingZeros.js?5870","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/format/longFormatters.js?e1f6","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/protectedTokens.js?3225","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addMilliseconds.js?4feb","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addWeeks.js?77f6","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addQuarters.js?10b9","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addYears.js?5d0e","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfQuarter.js?6204","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/Setter.js?dbe9","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/partition.js?9078","webpack://Msdyn365.Commerce.Online/./node_modules/lazysizes/plugins/attrchange/ls.attrchange.js?e126","webpack://Msdyn365.Commerce.Online/./node_modules/lazysizes/plugins/bgset/ls.bgset.js?e9d9","webpack://Msdyn365.Commerce.Online/./node_modules/eventlistener/eventlistener.js?deb4","webpack://Msdyn365.Commerce.Online/./node_modules/lodash.debounce/index.js?acb1","webpack://Msdyn365.Commerce.Online/./node_modules/lodash.throttle/index.js?bfc2","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/escape.js?1959","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_escapeHtmlChar.js?cc1e","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_basePropertyOf.js?c385","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/uniq.js?2cbb","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseUnset.js?deb7","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/last.js?4a19","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_parent.js?e54c","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseSlice.js?1ccf","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseAt.js?0e5a","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_compareAscending.js?8e64","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_flatRest.js?e1ec","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/flatten.js?5054","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_baseFlatten.js?fc0b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/_isFlattenable.js?0161","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/typeof.js?a100","webpack://Msdyn365.Commerce.Online/./node_modules/react-transition-group/Transition.js?af94","webpack://Msdyn365.Commerce.Online/../src/dom/getDocument.ts?8890","webpack://Msdyn365.Commerce.Online/../src/dom/setSSR.ts?5961","webpack://Msdyn365.Commerce.Online/../src/sessionStorage.ts?f322","webpack://Msdyn365.Commerce.Online/../src/StyleOptionsState.ts?6e9d","webpack://Msdyn365.Commerce.Online/../src/concatStyleSets.ts?985c","webpack://Msdyn365.Commerce.Online/../src/getVendorSettings.ts?57f5","webpack://Msdyn365.Commerce.Online/../src/transforms/kebabRules.ts?e9b6","webpack://Msdyn365.Commerce.Online/../src/transforms/prefixRules.ts?7003","webpack://Msdyn365.Commerce.Online/../src/transforms/provideUnits.ts?6886","webpack://Msdyn365.Commerce.Online/../src/transforms/rtlifyRules.ts?296f","webpack://Msdyn365.Commerce.Online/../src/styleToClassName.ts?36c7","webpack://Msdyn365.Commerce.Online/../src/GlobalSettings.ts?e817","webpack://Msdyn365.Commerce.Online/../src/customizations/Customizations.ts?aff4","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.types.ts?d830","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/streams.js?b0d1","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/huffman.js?475b","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/remove.js?94d1","webpack://Msdyn365.Commerce.Online/./node_modules/lodash/pullAt.js?12e6","webpack://Msdyn365.Commerce.Online/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js?0039","webpack://Msdyn365.Commerce.Online/./node_modules/react-transition-group/utils/PropTypes.js?07fc","webpack://Msdyn365.Commerce.Online/./node_modules/react-popper/lib/Manager.js?11b9","webpack://Msdyn365.Commerce.Online/./node_modules/react-popper/lib/Target.js?c70c","webpack://Msdyn365.Commerce.Online/../../src/utils/isBrowser.js?cc96","webpack://Msdyn365.Commerce.Online/../../src/utils/debounce.js?fb49","webpack://Msdyn365.Commerce.Online/../../src/utils/isFunction.js?54fa","webpack://Msdyn365.Commerce.Online/../../src/utils/getStyleComputedProperty.js?f4d9","webpack://Msdyn365.Commerce.Online/../../src/utils/getParentNode.js?c905","webpack://Msdyn365.Commerce.Online/../../src/utils/getScrollParent.js?f0ff","webpack://Msdyn365.Commerce.Online/../../src/utils/getReferenceNode.js?d5f5","webpack://Msdyn365.Commerce.Online/../../src/utils/isIE.js?aefd","webpack://Msdyn365.Commerce.Online/../../src/utils/getOffsetParent.js?df3e","webpack://Msdyn365.Commerce.Online/../../src/utils/getRoot.js?878c","webpack://Msdyn365.Commerce.Online/../../src/utils/findCommonOffsetParent.js?73d7","webpack://Msdyn365.Commerce.Online/../../src/utils/isOffsetContainer.js?1004","webpack://Msdyn365.Commerce.Online/../../src/utils/getScroll.js?3932","webpack://Msdyn365.Commerce.Online/../../src/utils/includeScroll.js?4da9","webpack://Msdyn365.Commerce.Online/../../src/utils/getBordersSize.js?603f","webpack://Msdyn365.Commerce.Online/../../src/utils/getWindowSizes.js?6237","webpack://Msdyn365.Commerce.Online/../../src/utils/getClientRect.js?ea96","webpack://Msdyn365.Commerce.Online/../../src/utils/getBoundingClientRect.js?aca9","webpack://Msdyn365.Commerce.Online/../../src/utils/getOffsetRectRelativeToArbitraryNode.js?84ab","webpack://Msdyn365.Commerce.Online/../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js?82dd","webpack://Msdyn365.Commerce.Online/../../src/utils/isFixed.js?8fac","webpack://Msdyn365.Commerce.Online/../../src/utils/getFixedPositionOffsetParent.js?3c59","webpack://Msdyn365.Commerce.Online/../../src/utils/getBoundaries.js?c667","webpack://Msdyn365.Commerce.Online/../../src/utils/computeAutoPlacement.js?0597","webpack://Msdyn365.Commerce.Online/../../src/utils/getReferenceOffsets.js?a034","webpack://Msdyn365.Commerce.Online/../../src/utils/getOuterSizes.js?ee23","webpack://Msdyn365.Commerce.Online/../../src/utils/getOppositePlacement.js?ca2c","webpack://Msdyn365.Commerce.Online/../../src/utils/getPopperOffsets.js?bbbf","webpack://Msdyn365.Commerce.Online/../../src/utils/find.js?1b77","webpack://Msdyn365.Commerce.Online/../../src/utils/runModifiers.js?9b83","webpack://Msdyn365.Commerce.Online/../../src/utils/findIndex.js?6fab","webpack://Msdyn365.Commerce.Online/../../src/methods/update.js?3c63","webpack://Msdyn365.Commerce.Online/../../src/utils/isModifierEnabled.js?5876","webpack://Msdyn365.Commerce.Online/../../src/utils/getSupportedPropertyName.js?1773","webpack://Msdyn365.Commerce.Online/../../src/methods/destroy.js?41d9","webpack://Msdyn365.Commerce.Online/../../src/utils/getWindow.js?98a6","webpack://Msdyn365.Commerce.Online/../../src/utils/setupEventListeners.js?f382","webpack://Msdyn365.Commerce.Online/../../src/methods/enableEventListeners.js?e8ca","webpack://Msdyn365.Commerce.Online/../../src/methods/disableEventListeners.js?3a89","webpack://Msdyn365.Commerce.Online/../../src/utils/removeEventListeners.js?53c7","webpack://Msdyn365.Commerce.Online/../../src/utils/isNumeric.js?f04d","webpack://Msdyn365.Commerce.Online/../../src/utils/setStyles.js?ef05","webpack://Msdyn365.Commerce.Online/../../src/modifiers/computeStyle.js?60a2","webpack://Msdyn365.Commerce.Online/../../src/utils/isModifierRequired.js?ad7e","webpack://Msdyn365.Commerce.Online/../../src/methods/placements.js?6d46","webpack://Msdyn365.Commerce.Online/../../src/utils/clockwise.js?fdb8","webpack://Msdyn365.Commerce.Online/../../src/modifiers/flip.js?bf47","webpack://Msdyn365.Commerce.Online/../../src/modifiers/offset.js?8e3e","webpack://Msdyn365.Commerce.Online/../../src/modifiers/index.js?2504","webpack://Msdyn365.Commerce.Online/../../src/methods/defaults.js?a848","webpack://Msdyn365.Commerce.Online/../../src/modifiers/shift.js?ba1a","webpack://Msdyn365.Commerce.Online/../../src/modifiers/preventOverflow.js?27f9","webpack://Msdyn365.Commerce.Online/../../src/modifiers/keepTogether.js?bbfe","webpack://Msdyn365.Commerce.Online/../../src/modifiers/arrow.js?6ae8","webpack://Msdyn365.Commerce.Online/../../src/utils/getOppositeVariation.js?93bb","webpack://Msdyn365.Commerce.Online/../../src/modifiers/inner.js?15ed","webpack://Msdyn365.Commerce.Online/../../src/modifiers/hide.js?f1d6","webpack://Msdyn365.Commerce.Online/../../src/utils/getRoundedOffsets.js?ac14","webpack://Msdyn365.Commerce.Online/../../src/modifiers/applyStyle.js?7e60","webpack://Msdyn365.Commerce.Online/../../src/utils/setAttributes.js?fe4d","webpack://Msdyn365.Commerce.Online/../../src/index.js?2427","webpack://Msdyn365.Commerce.Online/./node_modules/react-popper/lib/Popper.js?83b0","webpack://Msdyn365.Commerce.Online/./node_modules/react-popper/lib/Arrow.js?21e3","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/primitives/src/index.js?deb3","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/DecodeStream.js?031e","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/EncodeStream.js?0e9a","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Base.js?11c8","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Number.js?abbd","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/utils.js?b0af","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Array.js?baf1","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/LazyArray.js?33da","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Bitfield.js?b4d8","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Buffer.js?a721","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Optional.js?0fb5","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Reserved.js?e7fe","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/String.js?8235","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Struct.js?3ad9","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/VersionedStruct.js?c638","webpack://Msdyn365.Commerce.Online/./node_modules/restructure/src/Pointer.js?07d0","webpack://Msdyn365.Commerce.Online/./node_modules/@swc/helpers/esm/_define_property.js?7300","webpack://Msdyn365.Commerce.Online/./node_modules/@swc/helpers/node_modules/tslib/tslib.es6.mjs?1bb1","webpack://Msdyn365.Commerce.Online/./node_modules/unicode-properties/dist/module.mjs?7fb1","webpack://Msdyn365.Commerce.Online/./node_modules/fontkit/dist/browser-module.mjs?2165","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/font/lib/index.browser.js?4ab4","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js?dd33","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js?4015","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/fns/lib/index.js?f9fa","webpack://Msdyn365.Commerce.Online/./node_modules/svg-arc-to-cubic-bezier/modules/index.js?4f49","webpack://Msdyn365.Commerce.Online/./node_modules/normalize-svg-path/index.mjs?26ea","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/render/lib/index.js?b34f","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/dac.js?e9c4","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/utils.js?6d61","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/dht.js?4f63","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/dqt.js?e8bf","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/dri.js?5988","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/eoi.js?0656","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/exif.js?3751","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/jfif.js?83c7","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/sos.js?557e","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/sof.js?4b8a","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/markers/soi.js?a675","webpack://Msdyn365.Commerce.Online/./node_modules/jay-peg/src/index.js?0201","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/png-js/lib/png-js.browser.js?4350","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/pdfkit/lib/pdfkit.browser.js?7011","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/stylesheet/lib/index.js?d68a","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/extends.js?d40e","webpack://Msdyn365.Commerce.Online/./node_modules/bidi-js/dist/bidi.mjs?549b","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js?12f2","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js?9282","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js?be33","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/textkit/lib/textkit.js?1c60","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/image/lib/index.browser.js?d714","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/layout/lib/index.js?8d69","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/layout/node_modules/emoji-regex/index.mjs?b819","webpack://Msdyn365.Commerce.Online/../../../node_modules/react-reconciler/cjs/react-reconciler.production.min.js?33a0","webpack://Msdyn365.Commerce.Online/../src/utils/propsEqual.js?1a68","webpack://Msdyn365.Commerce.Online/../src/renderer.js?3147","webpack://Msdyn365.Commerce.Online/../src/index.js?a178","webpack://Msdyn365.Commerce.Online/../src/dom/usePDF.js?6e62","webpack://Msdyn365.Commerce.Online/../src/dom/PDFViewer.js?79ca","webpack://Msdyn365.Commerce.Online/../src/dom/index.js?0f14","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/decompress.js?426f","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/dictionary-browser.js?00b4","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/context.js?d720","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/prefix.js?169b","webpack://Msdyn365.Commerce.Online/./node_modules/brotli/dec/transform.js?d12c","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/deflate.js?55f0","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/trees.js?4a3f","webpack://Msdyn365.Commerce.Online/./node_modules/pako/lib/zlib/inflate.js?d5b8","webpack://Msdyn365.Commerce.Online/wrapAssembly.js?43b0","webpack://Msdyn365.Commerce.Online/./node_modules/@react-pdf/renderer/node_modules/scheduler/index.js?b0f0","webpack://Msdyn365.Commerce.Online/./node_modules/react/jsx-runtime.js?1017","webpack://Msdyn365.Commerce.Online/./node_modules/react/cjs/react-jsx-runtime.production.min.js?8dd7","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/format.js?76e2","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/en-US.js?70d7","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/en-US/_lib/formatDistance.js?7af4","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/en-US/_lib/formatLong.js?b524","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/_lib/buildFormatLongFn.js?e3ca","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/en-US/_lib/formatRelative.js?75ae","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/en-US/_lib/localize.js?e03a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/_lib/buildLocalizeFn.js?0963","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/en-US/_lib/match.js?01f8","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/_lib/buildMatchFn.js?bb68","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/locale/_lib/buildMatchPatternFn.js?4de1","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/format/formatters.js?0571","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getDayOfYear.js?3bf3","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfISOWeekYear.js?6626","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfWeekYear.js?bb8c","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/_lib/format/lightFormatters.js?96f9","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addMinutes.js?f29c","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addHours.js?f743","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/subDays.js?ad7f","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/subWeeks.js?06d9","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/subMonths.js?e334","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/subQuarters.js?530d","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/subYears.js?7d91","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getSeconds.js?2e42","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getMinutes.js?a8a1","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getHours.js?e901","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getDay.js?dd92","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getDate.js?c04e","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getMonth.js?db63","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getQuarter.js?6c12","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getYear.js?9cd4","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getTime.js?b5a6","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setSeconds.js?e15a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setMinutes.js?4508","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setHours.js?5aae","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getDaysInMonth.js?a222","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setQuarter.js?86b2","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setYear.js?b3df","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/min.js?8989","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/max.js?79db","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/differenceInCalendarMonths.js?e617","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/differenceInCalendarYears.js?f403","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/startOfMonth.js?3d68","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/endOfDay.js?110b","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/endOfWeek.js?27ce","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/endOfMonth.js?66e5","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/endOfYear.js?099a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isEqual.js?978c","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isSameDay.js?3f03","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isSameMonth.js?cace","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isSameYear.js?36fe","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isSameQuarter.js?74d5","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isAfter.js?a94c","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isBefore.js?072d","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/isWithinInterval.js?e7f9","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse.js?9346","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getDefaultOptions.js?c7bb","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers.js?1abc","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/EraParser.js?64ee","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/transpose.js?308e","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/YearParser.js?69ef","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js?3cf1","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js?e1f3","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js?300a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/QuarterParser.js?1f2a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js?2d6b","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/MonthParser.js?0f75","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js?e9b4","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js?51a0","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setWeek.js?69fa","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js?9297","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setISOWeek.js?a477","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/DateParser.js?fcc5","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js?916e","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/DayParser.js?da1a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js?8ebd","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js?5ce3","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/ISODayParser.js?c5e2","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/setISODay.js?6862","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/getISODay.js?1722","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/AMPMParser.js?ee88","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js?1d06","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js?62d0","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js?a33a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js?fe6e","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js?a431","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js?576a","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/MinuteParser.js?0f8b","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/SecondParser.js?3979","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js?10d0","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js?85ae","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js?41dc","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js?45ed","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js?40a7","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/parseISO.js?42cb","webpack://Msdyn365.Commerce.Online/./node_modules/react-onclickoutside/dist/react-onclickoutside.es.js?7a11","webpack://Msdyn365.Commerce.Online/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs?3191","webpack://Msdyn365.Commerce.Online/./node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs?cbdb","webpack://Msdyn365.Commerce.Online/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs?59c3","webpack://Msdyn365.Commerce.Online/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs?1b95","webpack://Msdyn365.Commerce.Online/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs?77cb","webpack://Msdyn365.Commerce.Online/./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs?b321","webpack://Msdyn365.Commerce.Online/./node_modules/@floating-ui/react/dist/floating-ui.react.esm.js?2c5f","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/set.js?9483","webpack://Msdyn365.Commerce.Online/./node_modules/custom-event-polyfill/polyfill.js?b750","webpack://Msdyn365.Commerce.Online/../../out/lib/src/DynamicProto.js?b7e4","webpack://Msdyn365.Commerce.Online/./node_modules/intl-format-cache/src/index.ts?14d4","webpack://Msdyn365.Commerce.Online/./node_modules/intl-locales-supported/src/index.ts?ddf4","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js?2368","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js?16dc","webpack://Msdyn365.Commerce.Online/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js?e8e5","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.base.tsx?dabc","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.styles.tsx?beac","webpack://Msdyn365.Commerce.Online/../src/components/Spinner/Spinner.tsx?3f11","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/toDate.mjs?55f1","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/constructFrom.mjs?22f3","webpack://Msdyn365.Commerce.Online/./node_modules/date-fns/addDays.mjs?fe3d","webpack://Msdyn365.Commerce.Online/./node_modules/web-vitals/dist/web-vitals.js?9b79"],"sourcesContent":["import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/** MobX - (c) Michel Weststrate 2015 - 2020 - MIT Licensed */\nvar OBFUSCATED_ERROR = \"An invariant failed, however the error is obfuscated because this is an production build.\";\nvar EMPTY_ARRAY = [];\nObject.freeze(EMPTY_ARRAY);\nvar EMPTY_OBJECT = {};\nObject.freeze(EMPTY_OBJECT);\nvar mockGlobal = {};\nfunction getGlobal() {\n if (typeof window !== \"undefined\") {\n return window;\n }\n if (typeof global !== \"undefined\") {\n return global;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return mockGlobal;\n}\nfunction getNextId() {\n return ++globalState.mobxGuid;\n}\nfunction fail(message) {\n invariant(false, message);\n throw \"X\"; // unreachable\n}\nfunction invariant(check, message) {\n if (!check)\n throw new Error(\"[mobx] \" + (message || OBFUSCATED_ERROR));\n}\n/**\n * Prints a deprecation message, but only one time.\n * Returns false if the deprecated message was already printed before\n */\nvar deprecatedMessages = [];\nfunction deprecated(msg, thing) {\n if (process.env.NODE_ENV === \"production\")\n return false;\n if (thing) {\n return deprecated(\"'\" + msg + \"', use '\" + thing + \"' instead.\");\n }\n if (deprecatedMessages.indexOf(msg) !== -1)\n return false;\n deprecatedMessages.push(msg);\n console.error(\"[mobx] Deprecated: \" + msg);\n return true;\n}\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nfunction once(func) {\n var invoked = false;\n return function () {\n if (invoked)\n return;\n invoked = true;\n return func.apply(this, arguments);\n };\n}\nvar noop = function () { };\nfunction unique(list) {\n var res = [];\n list.forEach(function (item) {\n if (res.indexOf(item) === -1)\n res.push(item);\n });\n return res;\n}\nfunction isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nfunction isPlainObject(value) {\n if (value === null || typeof value !== \"object\")\n return false;\n var proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\nfunction convertToMap(dataStructure) {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure;\n }\n else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure);\n }\n else if (isPlainObject(dataStructure)) {\n var map = new Map();\n for (var key in dataStructure) {\n map.set(key, dataStructure[key]);\n }\n return map;\n }\n else {\n return fail(\"Cannot convert to map from '\" + dataStructure + \"'\");\n }\n}\nfunction makeNonEnumerable(object, propNames) {\n for (var i = 0; i < propNames.length; i++) {\n addHiddenProp(object, propNames[i], object[propNames[i]]);\n }\n}\nfunction addHiddenProp(object, propName, value) {\n Object.defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value: value\n });\n}\nfunction addHiddenFinalProp(object, propName, value) {\n Object.defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value: value\n });\n}\nfunction isPropertyConfigurable(object, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(object, prop);\n return !descriptor || (descriptor.configurable !== false && descriptor.writable !== false);\n}\nfunction assertPropertyConfigurable(object, prop) {\n if (process.env.NODE_ENV !== \"production\" && !isPropertyConfigurable(object, prop))\n fail(\"Cannot make property '\" + prop + \"' observable, it is not configurable and writable in the target object\");\n}\nfunction createInstanceofPredicate(name, clazz) {\n var propName = \"isMobX\" + name;\n clazz.prototype[propName] = true;\n return function (x) {\n return isObject(x) && x[propName] === true;\n };\n}\nfunction areBothNaN(a, b) {\n return typeof a === \"number\" && typeof b === \"number\" && isNaN(a) && isNaN(b);\n}\n/**\n * Returns whether the argument is an array, disregarding observability.\n */\nfunction isArrayLike(x) {\n return Array.isArray(x) || isObservableArray(x);\n}\nfunction isES6Map(thing) {\n if (getGlobal().Map !== undefined && thing instanceof getGlobal().Map)\n return true;\n return false;\n}\nfunction isES6Set(thing) {\n return thing instanceof Set;\n}\n// use Array.from in Mobx 5\nfunction iteratorToArray(it) {\n var res = [];\n while (true) {\n var r = it.next();\n if (r.done)\n break;\n res.push(r.value);\n }\n return res;\n}\nfunction primitiveSymbol() {\n // es-disable-next-line\n return (typeof Symbol === \"function\" && Symbol.toPrimitive) || \"@@toPrimitive\";\n}\nfunction toPrimitive(value) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value;\n}\n// Use \"for of\" in V5\nfunction forOf(iter, callback) {\n var next = iter.next();\n while (!next.done) {\n callback(next.value);\n next = iter.next();\n }\n}\n\nfunction iteratorSymbol() {\n return (typeof Symbol === \"function\" && Symbol.iterator) || \"@@iterator\";\n}\nfunction declareIterator(prototType, iteratorFactory) {\n addHiddenFinalProp(prototType, iteratorSymbol(), iteratorFactory);\n}\nfunction makeIterable(iterator) {\n iterator[iteratorSymbol()] = getSelf;\n return iterator;\n}\nfunction toStringTagSymbol() {\n return (typeof Symbol === \"function\" && Symbol.toStringTag) || \"@@toStringTag\";\n}\nfunction getSelf() {\n return this;\n}\n\n/**\n * Anything that can be used to _store_ state is an Atom in mobx. Atoms have two important jobs\n *\n * 1) detect when they are being _used_ and report this (using reportObserved). This allows mobx to make the connection between running functions and the data they used\n * 2) they should notify mobx whenever they have _changed_. This way mobx can re-run any functions (derivations) that are using this atom.\n */\nvar Atom = /** @class */ (function () {\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n function Atom(name) {\n if (name === void 0) { name = \"Atom@\" + getNextId(); }\n this.name = name;\n this.isPendingUnobservation = false; // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n this.isBeingObserved = false;\n this.observers = [];\n this.observersIndexes = {};\n this.diffValue = 0;\n this.lastAccessedBy = 0;\n this.lowestObserverState = IDerivationState.NOT_TRACKING;\n }\n Atom.prototype.onBecomeUnobserved = function () {\n // noop\n };\n Atom.prototype.onBecomeObserved = function () {\n /* noop */\n };\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n Atom.prototype.reportObserved = function () {\n return reportObserved(this);\n };\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n Atom.prototype.reportChanged = function () {\n startBatch();\n propagateChanged(this);\n endBatch();\n };\n Atom.prototype.toString = function () {\n return this.name;\n };\n return Atom;\n}());\nvar isAtom = createInstanceofPredicate(\"Atom\", Atom);\nfunction createAtom(name, onBecomeObservedHandler, onBecomeUnobservedHandler) {\n if (onBecomeObservedHandler === void 0) { onBecomeObservedHandler = noop; }\n if (onBecomeUnobservedHandler === void 0) { onBecomeUnobservedHandler = noop; }\n var atom = new Atom(name);\n onBecomeObserved(atom, onBecomeObservedHandler);\n onBecomeUnobserved(atom, onBecomeUnobservedHandler);\n return atom;\n}\n\nfunction identityComparer(a, b) {\n return a === b;\n}\nfunction structuralComparer(a, b) {\n return deepEqual(a, b);\n}\nfunction shallowComparer(a, b) {\n return deepEqual(a, b, 1);\n}\nfunction defaultComparer(a, b) {\n return areBothNaN(a, b) || identityComparer(a, b);\n}\nvar comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n};\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\n\nvar enumerableDescriptorCache = {};\nvar nonEnumerableDescriptorCache = {};\nfunction createPropertyInitializerDescriptor(prop, enumerable) {\n var cache = enumerable ? enumerableDescriptorCache : nonEnumerableDescriptorCache;\n return (cache[prop] ||\n (cache[prop] = {\n configurable: true,\n enumerable: enumerable,\n get: function () {\n initializeInstance(this);\n return this[prop];\n },\n set: function (value) {\n initializeInstance(this);\n this[prop] = value;\n }\n }));\n}\nfunction initializeInstance(target) {\n if (target.__mobxDidRunLazyInitializers === true)\n return;\n var decorators = target.__mobxDecorators;\n if (decorators) {\n addHiddenProp(target, \"__mobxDidRunLazyInitializers\", true);\n for (var key in decorators) {\n var d = decorators[key];\n d.propertyCreator(target, d.prop, d.descriptor, d.decoratorTarget, d.decoratorArguments);\n }\n }\n}\nfunction createPropDecorator(propertyInitiallyEnumerable, propertyCreator) {\n return function decoratorFactory() {\n var decoratorArguments;\n var decorator = function decorate(target, prop, descriptor, applyImmediately\n // This is a special parameter to signal the direct application of a decorator, allow extendObservable to skip the entire type decoration part,\n // as the instance to apply the decorator to equals the target\n ) {\n if (applyImmediately === true) {\n propertyCreator(target, prop, descriptor, target, decoratorArguments);\n return null;\n }\n if (process.env.NODE_ENV !== \"production\" && !quacksLikeADecorator(arguments))\n fail(\"This function is a decorator, but it wasn't invoked like a decorator\");\n if (!Object.prototype.hasOwnProperty.call(target, \"__mobxDecorators\")) {\n var inheritedDecorators = target.__mobxDecorators;\n addHiddenProp(target, \"__mobxDecorators\", __assign({}, inheritedDecorators));\n }\n target.__mobxDecorators[prop] = {\n prop: prop,\n propertyCreator: propertyCreator,\n descriptor: descriptor,\n decoratorTarget: target,\n decoratorArguments: decoratorArguments\n };\n return createPropertyInitializerDescriptor(prop, propertyInitiallyEnumerable);\n };\n if (quacksLikeADecorator(arguments)) {\n // @decorator\n decoratorArguments = EMPTY_ARRAY;\n return decorator.apply(null, arguments);\n }\n else {\n // @decorator(args)\n decoratorArguments = Array.prototype.slice.call(arguments);\n return decorator;\n }\n };\n}\nfunction quacksLikeADecorator(args) {\n return (((args.length === 2 || args.length === 3) && typeof args[1] === \"string\") ||\n (args.length === 4 && args[3] === true));\n}\n\nfunction deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v))\n return v;\n // something that can be converted and mutated?\n if (Array.isArray(v))\n return observable.array(v, { name: name });\n if (isPlainObject(v))\n return observable.object(v, undefined, { name: name });\n if (isES6Map(v))\n return observable.map(v, { name: name });\n if (isES6Set(v))\n return observable.set(v, { name: name });\n return v;\n}\nfunction shallowEnhancer(v, _, name) {\n if (v === undefined || v === null)\n return v;\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v))\n return v;\n if (Array.isArray(v))\n return observable.array(v, { name: name, deep: false });\n if (isPlainObject(v))\n return observable.object(v, undefined, { name: name, deep: false });\n if (isES6Map(v))\n return observable.map(v, { name: name, deep: false });\n if (isES6Set(v))\n return observable.set(v, { name: name, deep: false });\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\");\n}\nfunction referenceEnhancer(newValue) {\n // never turn into an observable\n return newValue;\n}\nfunction refStructEnhancer(v, oldValue, name) {\n if (process.env.NODE_ENV !== \"production\" && isObservable(v))\n throw \"observable.struct should not be used with observable values\";\n if (deepEqual(v, oldValue))\n return oldValue;\n return v;\n}\n\nfunction createDecoratorForEnhancer(enhancer) {\n invariant(enhancer);\n var decorator = createPropDecorator(true, function (target, propertyName, descriptor, _decoratorTarget, decoratorArgs) {\n if (process.env.NODE_ENV !== \"production\") {\n invariant(!descriptor || !descriptor.get, \"@observable cannot be used on getter (property \\\"\" + propertyName + \"\\\"), use @computed instead.\");\n }\n var initialValue = descriptor\n ? descriptor.initializer\n ? descriptor.initializer.call(target)\n : descriptor.value\n : undefined;\n defineObservableProperty(target, propertyName, initialValue, enhancer);\n });\n var res = \n // Extra process checks, as this happens during module initialization\n typeof process !== \"undefined\" && process.env && process.env.NODE_ENV !== \"production\"\n ? function observableDecorator() {\n // This wrapper function is just to detect illegal decorator invocations, deprecate in a next version\n // and simply return the created prop decorator\n if (arguments.length < 2)\n return fail(\"Incorrect decorator invocation. @observable decorator doesn't expect any arguments\");\n return decorator.apply(null, arguments);\n }\n : decorator;\n res.enhancer = enhancer;\n return res;\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nvar defaultCreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined\n};\nvar shallowCreateObservableOptions = {\n deep: false,\n name: undefined,\n defaultDecorator: undefined\n};\nObject.freeze(defaultCreateObservableOptions);\nObject.freeze(shallowCreateObservableOptions);\nfunction assertValidOption(key) {\n if (!/^(deep|name|equals|defaultDecorator)$/.test(key))\n fail(\"invalid option for (extend)observable: \" + key);\n}\nfunction asCreateObservableOptions(thing) {\n if (thing === null || thing === undefined)\n return defaultCreateObservableOptions;\n if (typeof thing === \"string\")\n return { name: thing, deep: true };\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof thing !== \"object\")\n return fail(\"expected options object\");\n Object.keys(thing).forEach(assertValidOption);\n }\n return thing;\n}\nfunction getEnhancerFromOptions(options) {\n return options.defaultDecorator\n ? options.defaultDecorator.enhancer\n : options.deep === false\n ? referenceEnhancer\n : deepEnhancer;\n}\nvar deepDecorator = createDecoratorForEnhancer(deepEnhancer);\nvar shallowDecorator = createDecoratorForEnhancer(shallowEnhancer);\nvar refDecorator = createDecoratorForEnhancer(referenceEnhancer);\nvar refStructDecorator = createDecoratorForEnhancer(refStructEnhancer);\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v, arg2, arg3) {\n // @observable someProp;\n if (typeof arguments[1] === \"string\") {\n return deepDecorator.apply(null, arguments);\n }\n // it is an observable already, done\n if (isObservable(v))\n return v;\n // something that can be converted and mutated?\n var res = isPlainObject(v)\n ? observable.object(v, arg2, arg3)\n : Array.isArray(v)\n ? observable.array(v, arg2)\n : isES6Map(v)\n ? observable.map(v, arg2)\n : isES6Set(v)\n ? observable.set(v, arg2)\n : v;\n // this value could be converted to a new observable data structure, return it\n if (res !== v)\n return res;\n // otherwise, just box it\n fail(process.env.NODE_ENV !== \"production\" &&\n \"The provided value could not be converted into an observable. If you want just create an observable reference to the object use 'observable.box(value)'\");\n}\nvar observableFactories = {\n box: function (value, options) {\n if (arguments.length > 2)\n incorrectlyUsedAsDecorator(\"box\");\n var o = asCreateObservableOptions(options);\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals);\n },\n shallowBox: function (value, name) {\n if (arguments.length > 2)\n incorrectlyUsedAsDecorator(\"shallowBox\");\n deprecated(\"observable.shallowBox\", \"observable.box(value, { deep: false })\");\n return observable.box(value, { name: name, deep: false });\n },\n array: function (initialValues, options) {\n if (arguments.length > 2)\n incorrectlyUsedAsDecorator(\"array\");\n var o = asCreateObservableOptions(options);\n return new ObservableArray(initialValues, getEnhancerFromOptions(o), o.name);\n },\n shallowArray: function (initialValues, name) {\n if (arguments.length > 2)\n incorrectlyUsedAsDecorator(\"shallowArray\");\n deprecated(\"observable.shallowArray\", \"observable.array(values, { deep: false })\");\n return observable.array(initialValues, { name: name, deep: false });\n },\n map: function (initialValues, options) {\n if (arguments.length > 2)\n incorrectlyUsedAsDecorator(\"map\");\n var o = asCreateObservableOptions(options);\n return new ObservableMap(initialValues, getEnhancerFromOptions(o), o.name);\n },\n shallowMap: function (initialValues, name) {\n if (arguments.length > 2)\n incorrectlyUsedAsDecorator(\"shallowMap\");\n deprecated(\"observable.shallowMap\", \"observable.map(values, { deep: false })\");\n return observable.map(initialValues, { name: name, deep: false });\n },\n set: function (initialValues, options) {\n if (arguments.length > 2)\n incorrectlyUsedAsDecorator(\"set\");\n var o = asCreateObservableOptions(options);\n return new ObservableSet(initialValues, getEnhancerFromOptions(o), o.name);\n },\n object: function (props, decorators, options) {\n if (typeof arguments[1] === \"string\")\n incorrectlyUsedAsDecorator(\"object\");\n var o = asCreateObservableOptions(options);\n return extendObservable({}, props, decorators, o);\n },\n shallowObject: function (props, name) {\n if (typeof arguments[1] === \"string\")\n incorrectlyUsedAsDecorator(\"shallowObject\");\n deprecated(\"observable.shallowObject\", \"observable.object(values, {}, { deep: false })\");\n return observable.object(props, {}, { name: name, deep: false });\n },\n ref: refDecorator,\n shallow: shallowDecorator,\n deep: deepDecorator,\n struct: refStructDecorator\n};\nvar observable = createObservable;\n// weird trick to keep our typings nicely with our funcs, and still extend the observable function\nObject.keys(observableFactories).forEach(function (name) { return (observable[name] = observableFactories[name]); });\nfunction incorrectlyUsedAsDecorator(methodName) {\n fail(\n // process.env.NODE_ENV !== \"production\" &&\n \"Expected one or two arguments to observable.\" + methodName + \". Did you accidentally try to use observable.\" + methodName + \" as decorator?\");\n}\n\nvar computedDecorator = createPropDecorator(false, function (instance, propertyName, descriptor, decoratorTarget, decoratorArgs) {\n if (process.env.NODE_ENV !== \"production\") {\n invariant(descriptor && descriptor.get, \"Trying to declare a computed value for unspecified getter '\" + propertyName + \"'\");\n }\n var get = descriptor.get, set = descriptor.set; // initialValue is the descriptor for get / set props\n // Optimization: faster on decorator target or instance? Assuming target\n // Optimization: find out if declaring on instance isn't just faster. (also makes the property descriptor simpler). But, more memory usage..\n // Forcing instance now, fixes hot reloadig issues on React Native:\n var options = decoratorArgs[0] || {};\n defineComputedProperty(instance, propertyName, __assign({ get: get, set: set }, options));\n});\nvar computedStructDecorator = computedDecorator({ equals: comparer.structural });\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nvar computed = function computed(arg1, arg2, arg3) {\n if (typeof arg2 === \"string\") {\n // @computed\n return computedDecorator.apply(null, arguments);\n }\n if (arg1 !== null && typeof arg1 === \"object\" && arguments.length === 1) {\n // @computed({ options })\n return computedDecorator.apply(null, arguments);\n }\n // computed(expr, options?)\n if (process.env.NODE_ENV !== \"production\") {\n invariant(typeof arg1 === \"function\", \"First argument to `computed` should be an expression.\");\n invariant(arguments.length < 3, \"Computed takes one or two arguments if used as function\");\n }\n var opts = typeof arg2 === \"object\" ? arg2 : {};\n opts.get = arg1;\n opts.set = typeof arg2 === \"function\" ? arg2 : opts.set;\n opts.name = opts.name || arg1.name || \"\"; /* for generated name */\n return new ComputedValue(opts);\n};\ncomputed.struct = computedStructDecorator;\n\nvar IDerivationState;\n(function (IDerivationState) {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n IDerivationState[IDerivationState[\"NOT_TRACKING\"] = -1] = \"NOT_TRACKING\";\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n IDerivationState[IDerivationState[\"UP_TO_DATE\"] = 0] = \"UP_TO_DATE\";\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n IDerivationState[IDerivationState[\"POSSIBLY_STALE\"] = 1] = \"POSSIBLY_STALE\";\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n IDerivationState[IDerivationState[\"STALE\"] = 2] = \"STALE\";\n})(IDerivationState || (IDerivationState = {}));\nvar TraceMode;\n(function (TraceMode) {\n TraceMode[TraceMode[\"NONE\"] = 0] = \"NONE\";\n TraceMode[TraceMode[\"LOG\"] = 1] = \"LOG\";\n TraceMode[TraceMode[\"BREAK\"] = 2] = \"BREAK\";\n})(TraceMode || (TraceMode = {}));\nvar CaughtException = /** @class */ (function () {\n function CaughtException(cause) {\n this.cause = cause;\n // Empty\n }\n return CaughtException;\n}());\nfunction isCaughtException(e) {\n return e instanceof CaughtException;\n}\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nfunction shouldCompute(derivation) {\n switch (derivation.dependenciesState) {\n case IDerivationState.UP_TO_DATE:\n return false;\n case IDerivationState.NOT_TRACKING:\n case IDerivationState.STALE:\n return true;\n case IDerivationState.POSSIBLY_STALE: {\n // state propagation can occur outside of action/reactive context #2195\n var prevAllowStateReads = allowStateReadsStart(true);\n var prevUntracked = untrackedStart(); // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n var obs = derivation.observing, l = obs.length;\n for (var i = 0; i < l; i++) {\n var obj = obs[i];\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get();\n }\n else {\n try {\n obj.get();\n }\n catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if (derivation.dependenciesState === IDerivationState.STALE) {\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return true;\n }\n }\n }\n changeDependenciesStateTo0(derivation);\n untrackedEnd(prevUntracked);\n allowStateReadsEnd(prevAllowStateReads);\n return false;\n }\n }\n}\n// function invariantShouldCompute(derivation: IDerivation) {\n// const newDepState = (derivation as any).dependenciesState\n// if (\n// process.env.NODE_ENV === \"production\" &&\n// (newDepState === IDerivationState.POSSIBLY_STALE ||\n// newDepState === IDerivationState.NOT_TRACKING)\n// )\n// fail(\"Illegal dependency state\")\n// }\nfunction isComputingDerivation() {\n return globalState.trackingDerivation !== null; // filter out actions inside computations\n}\nfunction checkIfStateModificationsAreAllowed(atom) {\n var hasObservers = atom.observers.length > 0;\n // Should never be possible to change an observed observable from inside computed, see #798\n if (globalState.computationDepth > 0 && hasObservers)\n fail(process.env.NODE_ENV !== \"production\" &&\n \"Computed values are not allowed to cause side effects by changing observables that are already being observed. Tried to modify: \" + atom.name);\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (!globalState.allowStateChanges && (hasObservers || globalState.enforceActions === \"strict\"))\n fail(process.env.NODE_ENV !== \"production\" &&\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing observed observable values outside actions is not allowed. Please wrap the code in an `action` if this change is intended. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, the render function of a React component? Tried to modify: \") +\n atom.name);\n}\nfunction checkIfStateReadsAreAllowed(observable) {\n if (process.env.NODE_ENV !== \"production\" &&\n !globalState.allowStateReads &&\n globalState.observableRequiresReaction) {\n console.warn(\"[mobx] Observable \" + observable.name + \" being read outside a reactive context\");\n }\n}\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nfunction trackDerivedFunction(derivation, f, context) {\n var prevAllowStateReads = allowStateReadsStart(true);\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation);\n derivation.newObserving = new Array(derivation.observing.length + 100);\n derivation.unboundDepsCount = 0;\n derivation.runId = ++globalState.runId;\n var prevTracking = globalState.trackingDerivation;\n globalState.trackingDerivation = derivation;\n var result;\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context);\n }\n else {\n try {\n result = f.call(context);\n }\n catch (e) {\n result = new CaughtException(e);\n }\n }\n globalState.trackingDerivation = prevTracking;\n bindDependencies(derivation);\n if (derivation.observing.length === 0) {\n warnAboutDerivationWithoutDependencies(derivation);\n }\n allowStateReadsEnd(prevAllowStateReads);\n return result;\n}\nfunction warnAboutDerivationWithoutDependencies(derivation) {\n if (process.env.NODE_ENV === \"production\")\n return;\n if (globalState.reactionRequiresObservable || derivation.requiresObservable) {\n console.warn(\"[mobx] Derivation \" + derivation.name + \" is created/updated without reading any observable value\");\n }\n}\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n var prevObserving = derivation.observing;\n var observing = (derivation.observing = derivation.newObserving);\n var lowestNewObservingDerivationState = IDerivationState.UP_TO_DATE;\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n var i0 = 0, l = derivation.unboundDepsCount;\n for (var i = 0; i < l; i++) {\n var dep = observing[i];\n if (dep.diffValue === 0) {\n dep.diffValue = 1;\n if (i0 !== i)\n observing[i0] = dep;\n i0++;\n }\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if (dep.dependenciesState > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = dep.dependenciesState;\n }\n }\n observing.length = i0;\n derivation.newObserving = null; // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length;\n while (l--) {\n var dep = prevObserving[l];\n if (dep.diffValue === 0) {\n removeObserver(dep, derivation);\n }\n dep.diffValue = 0;\n }\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n var dep = observing[i0];\n if (dep.diffValue === 1) {\n dep.diffValue = 0;\n addObserver(dep, derivation);\n }\n }\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState.UP_TO_DATE) {\n derivation.dependenciesState = lowestNewObservingDerivationState;\n derivation.onBecomeStale();\n }\n}\nfunction clearObserving(derivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n var obs = derivation.observing;\n derivation.observing = [];\n var i = obs.length;\n while (i--)\n removeObserver(obs[i], derivation);\n derivation.dependenciesState = IDerivationState.NOT_TRACKING;\n}\nfunction untracked(action) {\n var prev = untrackedStart();\n var res = action();\n untrackedEnd(prev);\n return res;\n}\nfunction untrackedStart() {\n var prev = globalState.trackingDerivation;\n globalState.trackingDerivation = null;\n return prev;\n}\nfunction untrackedEnd(prev) {\n globalState.trackingDerivation = prev;\n}\nfunction allowStateReadsStart(allowStateReads) {\n var prev = globalState.allowStateReads;\n globalState.allowStateReads = allowStateReads;\n return prev;\n}\nfunction allowStateReadsEnd(prev) {\n globalState.allowStateReads = prev;\n}\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nfunction changeDependenciesStateTo0(derivation) {\n if (derivation.dependenciesState === IDerivationState.UP_TO_DATE)\n return;\n derivation.dependenciesState = IDerivationState.UP_TO_DATE;\n var obs = derivation.observing;\n var i = obs.length;\n while (i--)\n obs[i].lowestObserverState = IDerivationState.UP_TO_DATE;\n}\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nvar currentActionId = 0;\nvar nextActionId = 1;\nvar functionNameDescriptor = Object.getOwnPropertyDescriptor(function () { }, \"name\");\nvar isFunctionNameConfigurable = functionNameDescriptor && functionNameDescriptor.configurable;\nfunction createAction(actionName, fn) {\n if (process.env.NODE_ENV !== \"production\") {\n invariant(typeof fn === \"function\", \"`action` can only be invoked on functions\");\n if (typeof actionName !== \"string\" || !actionName)\n fail(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n var res = function () {\n return executeAction(actionName, fn, this, arguments);\n };\n if (process.env.NODE_ENV !== \"production\") {\n if (isFunctionNameConfigurable) {\n Object.defineProperty(res, \"name\", { value: actionName });\n }\n }\n res.isMobxAction = true;\n return res;\n}\nfunction executeAction(actionName, fn, scope, args) {\n var runInfo = _startAction(actionName, scope, args);\n try {\n return fn.apply(scope, args);\n }\n catch (err) {\n runInfo.error = err;\n throw err;\n }\n finally {\n _endAction(runInfo);\n }\n}\nfunction _startAction(actionName, scope, args) {\n var notifySpy = isSpyEnabled() && !!actionName;\n var startTime = 0;\n if (notifySpy) {\n startTime = Date.now();\n var l = (args && args.length) || 0;\n var flattendArgs = new Array(l);\n if (l > 0)\n for (var i = 0; i < l; i++)\n flattendArgs[i] = args[i];\n spyReportStart({\n type: \"action\",\n name: actionName,\n object: scope,\n arguments: flattendArgs\n });\n }\n var prevDerivation = untrackedStart();\n startBatch();\n var prevAllowStateChanges = allowStateChangesStart(true);\n var prevAllowStateReads = allowStateReadsStart(true);\n var runInfo = {\n prevDerivation: prevDerivation,\n prevAllowStateChanges: prevAllowStateChanges,\n prevAllowStateReads: prevAllowStateReads,\n notifySpy: notifySpy,\n startTime: startTime,\n actionId: nextActionId++,\n parentActionId: currentActionId\n };\n currentActionId = runInfo.actionId;\n return runInfo;\n}\nfunction _endAction(runInfo) {\n if (currentActionId !== runInfo.actionId) {\n fail(\"invalid action stack. did you forget to finish an action?\");\n }\n currentActionId = runInfo.parentActionId;\n if (runInfo.error !== undefined) {\n globalState.suppressReactionErrors = true;\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges);\n allowStateReadsEnd(runInfo.prevAllowStateReads);\n endBatch();\n untrackedEnd(runInfo.prevDerivation);\n if (runInfo.notifySpy) {\n spyReportEnd({ time: Date.now() - runInfo.startTime });\n }\n globalState.suppressReactionErrors = false;\n}\nfunction allowStateChanges(allowStateChanges, func) {\n var prev = allowStateChangesStart(allowStateChanges);\n var res;\n try {\n res = func();\n }\n finally {\n allowStateChangesEnd(prev);\n }\n return res;\n}\nfunction allowStateChangesStart(allowStateChanges) {\n var prev = globalState.allowStateChanges;\n globalState.allowStateChanges = allowStateChanges;\n return prev;\n}\nfunction allowStateChangesEnd(prev) {\n globalState.allowStateChanges = prev;\n}\nfunction allowStateChangesInsideComputed(func) {\n var prev = globalState.computationDepth;\n globalState.computationDepth = 0;\n var res;\n try {\n res = func();\n }\n finally {\n globalState.computationDepth = prev;\n }\n return res;\n}\n\nvar ObservableValue = /** @class */ (function (_super) {\n __extends(ObservableValue, _super);\n function ObservableValue(value, enhancer, name, notifySpy, equals) {\n if (name === void 0) { name = \"ObservableValue@\" + getNextId(); }\n if (notifySpy === void 0) { notifySpy = true; }\n if (equals === void 0) { equals = comparer.default; }\n var _this = _super.call(this, name) || this;\n _this.enhancer = enhancer;\n _this.name = name;\n _this.equals = equals;\n _this.hasUnreportedChange = false;\n _this.value = enhancer(value, undefined, name);\n if (notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({ type: \"create\", name: _this.name, newValue: \"\" + _this.value });\n }\n return _this;\n }\n ObservableValue.prototype.dehanceValue = function (value) {\n if (this.dehancer !== undefined)\n return this.dehancer(value);\n return value;\n };\n ObservableValue.prototype.set = function (newValue) {\n var oldValue = this.value;\n newValue = this.prepareNewValue(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n if (notifySpy) {\n spyReportStart({\n type: \"update\",\n name: this.name,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n this.setNewValue(newValue);\n if (notifySpy)\n spyReportEnd();\n }\n };\n ObservableValue.prototype.prepareNewValue = function (newValue) {\n checkIfStateModificationsAreAllowed(this);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this,\n type: \"update\",\n newValue: newValue\n });\n if (!change)\n return globalState.UNCHANGED;\n newValue = change.newValue;\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value, this.name);\n return this.equals(this.value, newValue) ? globalState.UNCHANGED : newValue;\n };\n ObservableValue.prototype.setNewValue = function (newValue) {\n var oldValue = this.value;\n this.value = newValue;\n this.reportChanged();\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: \"update\",\n object: this,\n newValue: newValue,\n oldValue: oldValue\n });\n }\n };\n ObservableValue.prototype.get = function () {\n this.reportObserved();\n return this.dehanceValue(this.value);\n };\n ObservableValue.prototype.intercept = function (handler) {\n return registerInterceptor(this, handler);\n };\n ObservableValue.prototype.observe = function (listener, fireImmediately) {\n if (fireImmediately)\n listener({\n object: this,\n type: \"update\",\n newValue: this.value,\n oldValue: undefined\n });\n return registerListener(this, listener);\n };\n ObservableValue.prototype.toJSON = function () {\n return this.get();\n };\n ObservableValue.prototype.toString = function () {\n return this.name + \"[\" + this.value + \"]\";\n };\n ObservableValue.prototype.valueOf = function () {\n return toPrimitive(this.get());\n };\n return ObservableValue;\n}(Atom));\nObservableValue.prototype[primitiveSymbol()] = ObservableValue.prototype.valueOf;\nvar isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue);\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nvar ComputedValue = /** @class */ (function () {\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structualComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n function ComputedValue(options) {\n this.dependenciesState = IDerivationState.NOT_TRACKING;\n this.observing = []; // nodes we are looking at. Our value depends on these nodes\n this.newObserving = null; // during tracking it's an array with new observed observers\n this.isBeingObserved = false;\n this.isPendingUnobservation = false;\n this.observers = [];\n this.observersIndexes = {};\n this.diffValue = 0;\n this.runId = 0;\n this.lastAccessedBy = 0;\n this.lowestObserverState = IDerivationState.UP_TO_DATE;\n this.unboundDepsCount = 0;\n this.__mapid = \"#\" + getNextId();\n this.value = new CaughtException(null);\n this.isComputing = false; // to check for cycles\n this.isRunningSetter = false;\n this.isTracing = TraceMode.NONE;\n invariant(options.get, \"missing option for computed: get\");\n this.derivation = options.get;\n this.name = options.name || \"ComputedValue@\" + getNextId();\n if (options.set)\n this.setter = createAction(this.name + \"-setter\", options.set);\n this.equals =\n options.equals ||\n (options.compareStructural || options.struct\n ? comparer.structural\n : comparer.default);\n this.scope = options.context;\n this.requiresReaction = !!options.requiresReaction;\n this.keepAlive = !!options.keepAlive;\n }\n ComputedValue.prototype.onBecomeStale = function () {\n propagateMaybeChanged(this);\n };\n ComputedValue.prototype.onBecomeUnobserved = function () { };\n ComputedValue.prototype.onBecomeObserved = function () { };\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n ComputedValue.prototype.get = function () {\n if (this.isComputing)\n fail(\"Cycle detected in computation \" + this.name + \": \" + this.derivation);\n if (globalState.inBatch === 0 && this.observers.length === 0 && !this.keepAlive) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead();\n startBatch(); // See perf test 'computed memoization'\n this.value = this.computeValue(false);\n endBatch();\n }\n }\n else {\n reportObserved(this);\n if (shouldCompute(this))\n if (this.trackAndCompute())\n propagateChangeConfirmed(this);\n }\n var result = this.value;\n if (isCaughtException(result))\n throw result.cause;\n return result;\n };\n ComputedValue.prototype.peek = function () {\n var res = this.computeValue(false);\n if (isCaughtException(res))\n throw res.cause;\n return res;\n };\n ComputedValue.prototype.set = function (value) {\n if (this.setter) {\n invariant(!this.isRunningSetter, \"The setter of computed value '\" + this.name + \"' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?\");\n this.isRunningSetter = true;\n try {\n this.setter.call(this.scope, value);\n }\n finally {\n this.isRunningSetter = false;\n }\n }\n else\n invariant(false, process.env.NODE_ENV !== \"production\" &&\n \"[ComputedValue '\" + this.name + \"'] It is not possible to assign a new value to a computed value.\");\n };\n ComputedValue.prototype.trackAndCompute = function () {\n if (isSpyEnabled()) {\n spyReport({\n object: this.scope,\n type: \"compute\",\n name: this.name\n });\n }\n var oldValue = this.value;\n var wasSuspended = \n /* see #1208 */ this.dependenciesState === IDerivationState.NOT_TRACKING;\n var newValue = this.computeValue(true);\n var changed = wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals(oldValue, newValue);\n if (changed) {\n this.value = newValue;\n }\n return changed;\n };\n ComputedValue.prototype.computeValue = function (track) {\n this.isComputing = true;\n globalState.computationDepth++;\n var res;\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope);\n }\n else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope);\n }\n else {\n try {\n res = this.derivation.call(this.scope);\n }\n catch (e) {\n res = new CaughtException(e);\n }\n }\n }\n globalState.computationDepth--;\n this.isComputing = false;\n return res;\n };\n ComputedValue.prototype.suspend = function () {\n if (!this.keepAlive) {\n clearObserving(this);\n this.value = undefined; // don't hold on to computed value!\n }\n };\n ComputedValue.prototype.observe = function (listener, fireImmediately) {\n var _this = this;\n var firstTime = true;\n var prevValue = undefined;\n return autorun(function () {\n var newValue = _this.get();\n if (!firstTime || fireImmediately) {\n var prevU = untrackedStart();\n listener({\n type: \"update\",\n object: _this,\n newValue: newValue,\n oldValue: prevValue\n });\n untrackedEnd(prevU);\n }\n firstTime = false;\n prevValue = newValue;\n });\n };\n ComputedValue.prototype.warnAboutUntrackedRead = function () {\n if (process.env.NODE_ENV === \"production\")\n return;\n if (this.requiresReaction === true) {\n fail(\"[mobx] Computed value \" + this.name + \" is read outside a reactive context\");\n }\n if (this.isTracing !== TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + this.name + \"' is being read outside a reactive context. Doing a full recompute\");\n }\n if (globalState.computedRequiresReaction) {\n console.warn(\"[mobx] Computed value \" + this.name + \" is being read outside a reactive context. Doing a full recompute\");\n }\n };\n ComputedValue.prototype.toJSON = function () {\n return this.get();\n };\n ComputedValue.prototype.toString = function () {\n return this.name + \"[\" + this.derivation.toString() + \"]\";\n };\n ComputedValue.prototype.valueOf = function () {\n return toPrimitive(this.get());\n };\n return ComputedValue;\n}());\nComputedValue.prototype[primitiveSymbol()] = ComputedValue.prototype.valueOf;\nvar isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue);\n\n/**\n * These values will persist if global state is reset\n */\nvar persistentKeys = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\"\n];\nvar MobXGlobals = /** @class */ (function () {\n function MobXGlobals() {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n this.version = 5;\n /**\n * globally unique token to signal unchanged\n */\n this.UNCHANGED = {};\n /**\n * Currently running derivation\n */\n this.trackingDerivation = null;\n /**\n * Are we running a computation currently? (not a reaction)\n */\n this.computationDepth = 0;\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n this.runId = 0;\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n this.mobxGuid = 0;\n /**\n * Are we in a batch block? (and how many of them)\n */\n this.inBatch = 0;\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n this.pendingUnobservations = [];\n /**\n * List of scheduled, not yet executed, reactions.\n */\n this.pendingReactions = [];\n /**\n * Are we currently processing reactions?\n */\n this.isRunningReactions = false;\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n this.allowStateChanges = true;\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n this.allowStateReads = true;\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n this.enforceActions = false;\n /**\n * Spy callbacks\n */\n this.spyListeners = [];\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n this.globalReactionErrorHandlers = [];\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n this.computedRequiresReaction = false;\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n this.reactionRequiresObservable = false;\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n this.observableRequiresReaction = false;\n /**\n * Allows overwriting of computed properties, useful in tests but not prod as it can cause\n * memory leaks. See https://github.com/mobxjs/mobx/issues/1867\n */\n this.computedConfigurable = false;\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n this.disableErrorBoundaries = false;\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be supressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n this.suppressReactionErrors = false;\n }\n return MobXGlobals;\n}());\nvar canMergeGlobalState = true;\nvar isolateCalled = false;\nvar globalState = (function () {\n var global = getGlobal();\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals)\n canMergeGlobalState = false;\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version)\n canMergeGlobalState = false;\n if (!canMergeGlobalState) {\n setTimeout(function () {\n if (!isolateCalled) {\n fail(\"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\");\n }\n }, 1);\n return new MobXGlobals();\n }\n else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1;\n if (!global.__mobxGlobals.UNCHANGED)\n global.__mobxGlobals.UNCHANGED = {}; // make merge backward compatible\n return global.__mobxGlobals;\n }\n else {\n global.__mobxInstanceCount = 1;\n return (global.__mobxGlobals = new MobXGlobals());\n }\n})();\nfunction isolateGlobalState() {\n if (globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions)\n fail(\"isolateGlobalState should be called before MobX is running any reactions\");\n isolateCalled = true;\n if (canMergeGlobalState) {\n if (--getGlobal().__mobxInstanceCount === 0)\n getGlobal().__mobxGlobals = undefined;\n globalState = new MobXGlobals();\n }\n}\nfunction getGlobalState() {\n return globalState;\n}\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nfunction resetGlobalState() {\n var defaultGlobals = new MobXGlobals();\n for (var key in defaultGlobals)\n if (persistentKeys.indexOf(key) === -1)\n globalState[key] = defaultGlobals[key];\n globalState.allowStateChanges = !globalState.enforceActions;\n}\n\nfunction hasObservers(observable) {\n return observable.observers && observable.observers.length > 0;\n}\nfunction getObservers(observable) {\n return observable.observers;\n}\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nfunction addObserver(observable, node) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n var l = observable.observers.length;\n if (l) {\n // because object assignment is relatively expensive, let's not store data about index 0.\n observable.observersIndexes[node.__mapid] = l;\n }\n observable.observers[l] = node;\n if (observable.lowestObserverState > node.dependenciesState)\n observable.lowestObserverState = node.dependenciesState;\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\nfunction removeObserver(observable, node) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n if (observable.observers.length === 1) {\n // deleting last observer\n observable.observers.length = 0;\n queueForUnobservation(observable);\n }\n else {\n // deleting from _observersIndexes is straight forward, to delete from _observers, let's swap `node` with last element\n var list = observable.observers;\n var map = observable.observersIndexes;\n var filler = list.pop(); // get last element, which should fill the place of `node`, so the array doesn't have holes\n if (filler !== node) {\n // otherwise node was the last element, which already got removed from array\n var index = map[node.__mapid] || 0; // getting index of `node`. this is the only place we actually use map.\n if (index) {\n // map store all indexes but 0, see comment in `addObserver`\n map[filler.__mapid] = index;\n }\n else {\n delete map[filler.__mapid];\n }\n list[index] = filler;\n }\n delete map[node.__mapid];\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\nfunction queueForUnobservation(observable) {\n if (observable.isPendingUnobservation === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation = true;\n globalState.pendingUnobservations.push(observable);\n }\n}\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nfunction startBatch() {\n globalState.inBatch++;\n}\nfunction endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions();\n // the batch is actually about to finish, all unobserving should happen here.\n var list = globalState.pendingUnobservations;\n for (var i = 0; i < list.length; i++) {\n var observable = list[i];\n observable.isPendingUnobservation = false;\n if (observable.observers.length === 0) {\n if (observable.isBeingObserved) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved = false;\n observable.onBecomeUnobserved();\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observable of another, etc..\n observable.suspend();\n }\n }\n }\n globalState.pendingUnobservations = [];\n }\n}\nfunction reportObserved(observable) {\n checkIfStateReadsAreAllowed(observable);\n var derivation = globalState.trackingDerivation;\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId !== observable.lastAccessedBy) {\n observable.lastAccessedBy = derivation.runId;\n derivation.newObserving[derivation.unboundDepsCount++] = observable;\n if (!observable.isBeingObserved) {\n observable.isBeingObserved = true;\n observable.onBecomeObserved();\n }\n }\n return true;\n }\n else if (observable.observers.length === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable);\n }\n return false;\n}\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n// Called by Atom when its value changes\nfunction propagateChanged(observable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState === IDerivationState.STALE)\n return;\n observable.lowestObserverState = IDerivationState.STALE;\n var observers = observable.observers;\n var i = observers.length;\n while (i--) {\n var d = observers[i];\n if (d.dependenciesState === IDerivationState.UP_TO_DATE) {\n if (d.isTracing !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale();\n }\n d.dependenciesState = IDerivationState.STALE;\n }\n // invariantLOS(observable, \"changed end\");\n}\n// Called by ComputedValue when it recalculate and its value changed\nfunction propagateChangeConfirmed(observable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState === IDerivationState.STALE)\n return;\n observable.lowestObserverState = IDerivationState.STALE;\n var observers = observable.observers;\n var i = observers.length;\n while (i--) {\n var d = observers[i];\n if (d.dependenciesState === IDerivationState.POSSIBLY_STALE)\n d.dependenciesState = IDerivationState.STALE;\n else if (d.dependenciesState === IDerivationState.UP_TO_DATE // this happens during computing of `d`, just keep lowestObserverState up to date.\n )\n observable.lowestObserverState = IDerivationState.UP_TO_DATE;\n }\n // invariantLOS(observable, \"confirmed end\");\n}\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nfunction propagateMaybeChanged(observable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState !== IDerivationState.UP_TO_DATE)\n return;\n observable.lowestObserverState = IDerivationState.POSSIBLY_STALE;\n var observers = observable.observers;\n var i = observers.length;\n while (i--) {\n var d = observers[i];\n if (d.dependenciesState === IDerivationState.UP_TO_DATE) {\n d.dependenciesState = IDerivationState.POSSIBLY_STALE;\n if (d.isTracing !== TraceMode.NONE) {\n logTraceInfo(d, observable);\n }\n d.onBecomeStale();\n }\n }\n // invariantLOS(observable, \"maybe end\");\n}\nfunction logTraceInfo(derivation, observable) {\n console.log(\"[mobx.trace] '\" + derivation.name + \"' is invalidated due to a change in: '\" + observable.name + \"'\");\n if (derivation.isTracing === TraceMode.BREAK) {\n var lines = [];\n printDepTree(getDependencyTree(derivation), lines, 1);\n // prettier-ignore\n new Function(\"debugger;\\n/*\\nTracing '\" + derivation.name + \"'\\n\\nYou are entering this break point because derivation '\" + derivation.name + \"' is being traced and '\" + observable.name + \"' is now forcing it to update.\\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\\n\\n\" + (derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\") + \"\\n\\nThe dependencies for this derivation are:\\n\\n\" + lines.join(\"\\n\") + \"\\n*/\\n \")();\n }\n}\nfunction printDepTree(tree, lines, depth) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\");\n return;\n }\n lines.push(\"\" + new Array(depth).join(\"\\t\") + tree.name); // MWE: not the fastest, but the easiest way :)\n if (tree.dependencies)\n tree.dependencies.forEach(function (child) { return printDepTree(child, lines, depth + 1); });\n}\n\nvar Reaction = /** @class */ (function () {\n function Reaction(name, onInvalidate, errorHandler, requiresObservable) {\n if (name === void 0) { name = \"Reaction@\" + getNextId(); }\n if (requiresObservable === void 0) { requiresObservable = false; }\n this.name = name;\n this.onInvalidate = onInvalidate;\n this.errorHandler = errorHandler;\n this.requiresObservable = requiresObservable;\n this.observing = []; // nodes we are looking at. Our value depends on these nodes\n this.newObserving = [];\n this.dependenciesState = IDerivationState.NOT_TRACKING;\n this.diffValue = 0;\n this.runId = 0;\n this.unboundDepsCount = 0;\n this.__mapid = \"#\" + getNextId();\n this.isDisposed = false;\n this._isScheduled = false;\n this._isTrackPending = false;\n this._isRunning = false;\n this.isTracing = TraceMode.NONE;\n }\n Reaction.prototype.onBecomeStale = function () {\n this.schedule();\n };\n Reaction.prototype.schedule = function () {\n if (!this._isScheduled) {\n this._isScheduled = true;\n globalState.pendingReactions.push(this);\n runReactions();\n }\n };\n Reaction.prototype.isScheduled = function () {\n return this._isScheduled;\n };\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n Reaction.prototype.runReaction = function () {\n if (!this.isDisposed) {\n startBatch();\n this._isScheduled = false;\n if (shouldCompute(this)) {\n this._isTrackPending = true;\n try {\n this.onInvalidate();\n if (this._isTrackPending && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name,\n type: \"scheduled-reaction\"\n });\n }\n }\n catch (e) {\n this.reportExceptionInDerivation(e);\n }\n }\n endBatch();\n }\n };\n Reaction.prototype.track = function (fn) {\n startBatch();\n var notify = isSpyEnabled();\n var startTime;\n if (notify) {\n startTime = Date.now();\n spyReportStart({\n name: this.name,\n type: \"reaction\"\n });\n }\n this._isRunning = true;\n var result = trackDerivedFunction(this, fn, undefined);\n this._isRunning = false;\n this._isTrackPending = false;\n if (this.isDisposed) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this);\n }\n if (isCaughtException(result))\n this.reportExceptionInDerivation(result.cause);\n if (notify) {\n spyReportEnd({\n time: Date.now() - startTime\n });\n }\n endBatch();\n };\n Reaction.prototype.reportExceptionInDerivation = function (error) {\n var _this = this;\n if (this.errorHandler) {\n this.errorHandler(error, this);\n return;\n }\n if (globalState.disableErrorBoundaries)\n throw error;\n var message = \"[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '\" + this + \"'\";\n if (globalState.suppressReactionErrors) {\n console.warn(\"[mobx] (error in reaction '\" + this.name + \"' suppressed, fix error of causing action below)\"); // prettier-ignore\n }\n else {\n console.error(message, error);\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n }\n if (isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name,\n message: message,\n error: \"\" + error\n });\n }\n globalState.globalReactionErrorHandlers.forEach(function (f) { return f(error, _this); });\n };\n Reaction.prototype.dispose = function () {\n if (!this.isDisposed) {\n this.isDisposed = true;\n if (!this._isRunning) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch();\n clearObserving(this);\n endBatch();\n }\n }\n };\n Reaction.prototype.getDisposer = function () {\n var r = this.dispose.bind(this);\n r.$mobx = this;\n return r;\n };\n Reaction.prototype.toString = function () {\n return \"Reaction[\" + this.name + \"]\";\n };\n Reaction.prototype.trace = function (enterBreakPoint) {\n if (enterBreakPoint === void 0) { enterBreakPoint = false; }\n trace(this, enterBreakPoint);\n };\n return Reaction;\n}());\nfunction onReactionError(handler) {\n globalState.globalReactionErrorHandlers.push(handler);\n return function () {\n var idx = globalState.globalReactionErrorHandlers.indexOf(handler);\n if (idx >= 0)\n globalState.globalReactionErrorHandlers.splice(idx, 1);\n };\n}\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nvar MAX_REACTION_ITERATIONS = 100;\nvar reactionScheduler = function (f) { return f(); };\nfunction runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions)\n return;\n reactionScheduler(runReactionsHelper);\n}\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true;\n var allReactions = globalState.pendingReactions;\n var iterations = 0;\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\"Reaction doesn't converge to a stable state after \" + MAX_REACTION_ITERATIONS + \" iterations.\" +\n (\" Probably there is a cycle in the reactive function: \" + allReactions[0]));\n allReactions.splice(0); // clear reactions\n }\n var remainingReactions = allReactions.splice(0);\n for (var i = 0, l = remainingReactions.length; i < l; i++)\n remainingReactions[i].runReaction();\n }\n globalState.isRunningReactions = false;\n}\nvar isReaction = createInstanceofPredicate(\"Reaction\", Reaction);\nfunction setReactionScheduler(fn) {\n var baseScheduler = reactionScheduler;\n reactionScheduler = function (f) { return fn(function () { return baseScheduler(f); }); };\n}\n\nfunction isSpyEnabled() {\n return !!globalState.spyListeners.length;\n}\nfunction spyReport(event) {\n if (!globalState.spyListeners.length)\n return;\n var listeners = globalState.spyListeners;\n for (var i = 0, l = listeners.length; i < l; i++)\n listeners[i](event);\n}\nfunction spyReportStart(event) {\n var change = __assign(__assign({}, event), { spyReportStart: true });\n spyReport(change);\n}\nvar END_EVENT = { spyReportEnd: true };\nfunction spyReportEnd(change) {\n if (change)\n spyReport(__assign(__assign({}, change), { spyReportEnd: true }));\n else\n spyReport(END_EVENT);\n}\nfunction spy(listener) {\n globalState.spyListeners.push(listener);\n return once(function () {\n globalState.spyListeners = globalState.spyListeners.filter(function (l) { return l !== listener; });\n });\n}\n\nfunction dontReassignFields() {\n fail(process.env.NODE_ENV !== \"production\" && \"@action fields are not reassignable\");\n}\nfunction namedActionDecorator(name) {\n return function (target, prop, descriptor) {\n if (descriptor) {\n if (process.env.NODE_ENV !== \"production\" && descriptor.get !== undefined) {\n return fail(\"@action cannot be used with getters\");\n }\n // babel / typescript\n // @action method() { }\n if (descriptor.value) {\n // typescript\n return {\n value: createAction(name, descriptor.value),\n enumerable: false,\n configurable: true,\n writable: true // for typescript, this must be writable, otherwise it cannot inherit :/ (see inheritable actions test)\n };\n }\n // babel only: @action method = () => {}\n var initializer_1 = descriptor.initializer;\n return {\n enumerable: false,\n configurable: true,\n writable: true,\n initializer: function () {\n // N.B: we can't immediately invoke initializer; this would be wrong\n return createAction(name, initializer_1.call(this));\n }\n };\n }\n // bound instance methods\n return actionFieldDecorator(name).apply(this, arguments);\n };\n}\nfunction actionFieldDecorator(name) {\n // Simple property that writes on first invocation to the current instance\n return function (target, prop, descriptor) {\n Object.defineProperty(target, prop, {\n configurable: true,\n enumerable: false,\n get: function () {\n return undefined;\n },\n set: function (value) {\n addHiddenProp(this, prop, action(name, value));\n }\n });\n };\n}\nfunction boundActionDecorator(target, propertyName, descriptor, applyToInstance) {\n if (applyToInstance === true) {\n defineBoundAction(target, propertyName, descriptor.value);\n return null;\n }\n if (descriptor) {\n // if (descriptor.value)\n // Typescript / Babel: @action.bound method() { }\n // also: babel @action.bound method = () => {}\n return {\n configurable: true,\n enumerable: false,\n get: function () {\n defineBoundAction(this, propertyName, descriptor.value || descriptor.initializer.call(this));\n return this[propertyName];\n },\n set: dontReassignFields\n };\n }\n // field decorator Typescript @action.bound method = () => {}\n return {\n enumerable: false,\n configurable: true,\n set: function (v) {\n defineBoundAction(this, propertyName, v);\n },\n get: function () {\n return undefined;\n }\n };\n}\n\nvar action = function action(arg1, arg2, arg3, arg4) {\n // action(fn() {})\n if (arguments.length === 1 && typeof arg1 === \"function\")\n return createAction(arg1.name || \"\", arg1);\n // action(\"name\", fn() {})\n if (arguments.length === 2 && typeof arg2 === \"function\")\n return createAction(arg1, arg2);\n // @action(\"name\") fn() {}\n if (arguments.length === 1 && typeof arg1 === \"string\")\n return namedActionDecorator(arg1);\n // @action fn() {}\n if (arg4 === true) {\n // apply to instance immediately\n arg1[arg2] = createAction(arg1.name || arg2, arg3.value);\n }\n else {\n return namedActionDecorator(arg2).apply(null, arguments);\n }\n};\naction.bound = boundActionDecorator;\nfunction runInAction(arg1, arg2) {\n // TODO: deprecate?\n var actionName = typeof arg1 === \"string\" ? arg1 : arg1.name || \"\";\n var fn = typeof arg1 === \"function\" ? arg1 : arg2;\n if (process.env.NODE_ENV !== \"production\") {\n invariant(typeof fn === \"function\" && fn.length === 0, \"`runInAction` expects a function without arguments\");\n if (typeof actionName !== \"string\" || !actionName)\n fail(\"actions should have valid names, got: '\" + actionName + \"'\");\n }\n return executeAction(actionName, fn, this, undefined);\n}\nfunction isAction(thing) {\n return typeof thing === \"function\" && thing.isMobxAction === true;\n}\nfunction defineBoundAction(target, propertyName, fn) {\n addHiddenProp(target, propertyName, createAction(propertyName, fn.bind(target)));\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nfunction autorun(view, opts) {\n if (opts === void 0) { opts = EMPTY_OBJECT; }\n if (process.env.NODE_ENV !== \"production\") {\n invariant(typeof view === \"function\", \"Autorun expects a function as first argument\");\n invariant(isAction(view) === false, \"Autorun does not accept actions since actions are untrackable\");\n }\n var name = (opts && opts.name) || view.name || \"Autorun@\" + getNextId();\n var runSync = !opts.scheduler && !opts.delay;\n var reaction;\n if (runSync) {\n // normal autorun\n reaction = new Reaction(name, function () {\n this.track(reactionRunner);\n }, opts.onError, opts.requiresObservable);\n }\n else {\n var scheduler_1 = createSchedulerFromOptions(opts);\n // debounced autorun\n var isScheduled_1 = false;\n reaction = new Reaction(name, function () {\n if (!isScheduled_1) {\n isScheduled_1 = true;\n scheduler_1(function () {\n isScheduled_1 = false;\n if (!reaction.isDisposed)\n reaction.track(reactionRunner);\n });\n }\n }, opts.onError, opts.requiresObservable);\n }\n function reactionRunner() {\n view(reaction);\n }\n reaction.schedule();\n return reaction.getDisposer();\n}\nvar run = function (f) { return f(); };\nfunction createSchedulerFromOptions(opts) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? function (f) { return setTimeout(f, opts.delay); }\n : run;\n}\nfunction reaction(expression, effect, opts) {\n if (opts === void 0) { opts = EMPTY_OBJECT; }\n if (typeof opts === \"boolean\") {\n opts = { fireImmediately: opts };\n deprecated(\"Using fireImmediately as argument is deprecated. Use '{ fireImmediately: true }' instead\");\n }\n if (process.env.NODE_ENV !== \"production\") {\n invariant(typeof expression === \"function\", \"First argument to reaction should be a function\");\n invariant(typeof opts === \"object\", \"Third argument of reactions should be an object\");\n }\n var name = opts.name || \"Reaction@\" + getNextId();\n var effectAction = action(name, opts.onError ? wrapErrorHandler(opts.onError, effect) : effect);\n var runSync = !opts.scheduler && !opts.delay;\n var scheduler = createSchedulerFromOptions(opts);\n var firstTime = true;\n var isScheduled = false;\n var value;\n var equals = opts.compareStructural\n ? comparer.structural\n : opts.equals || comparer.default;\n var r = new Reaction(name, function () {\n if (firstTime || runSync) {\n reactionRunner();\n }\n else if (!isScheduled) {\n isScheduled = true;\n scheduler(reactionRunner);\n }\n }, opts.onError, opts.requiresObservable);\n function reactionRunner() {\n isScheduled = false; // Q: move into reaction runner?\n if (r.isDisposed)\n return;\n var changed = false;\n r.track(function () {\n var nextValue = expression(r);\n changed = firstTime || !equals(value, nextValue);\n value = nextValue;\n });\n if (firstTime && opts.fireImmediately)\n effectAction(value, r);\n if (!firstTime && changed === true)\n effectAction(value, r);\n if (firstTime)\n firstTime = false;\n }\n r.schedule();\n return r.getDisposer();\n}\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments);\n }\n catch (e) {\n errorHandler.call(this, e);\n }\n };\n}\n\nfunction onBecomeObserved(thing, arg2, arg3) {\n return interceptHook(\"onBecomeObserved\", thing, arg2, arg3);\n}\nfunction onBecomeUnobserved(thing, arg2, arg3) {\n return interceptHook(\"onBecomeUnobserved\", thing, arg2, arg3);\n}\nfunction interceptHook(hook, thing, arg2, arg3) {\n var atom = typeof arg3 === \"function\" ? getAtom(thing, arg2) : getAtom(thing);\n var cb = typeof arg3 === \"function\" ? arg3 : arg2;\n var orig = atom[hook];\n if (typeof orig !== \"function\")\n return fail(process.env.NODE_ENV !== \"production\" && \"Not an atom that can be (un)observed\");\n atom[hook] = function () {\n orig.call(this);\n cb.call(this);\n };\n return function () {\n atom[hook] = orig;\n };\n}\n\nfunction configure(options) {\n var enforceActions = options.enforceActions, computedRequiresReaction = options.computedRequiresReaction, computedConfigurable = options.computedConfigurable, disableErrorBoundaries = options.disableErrorBoundaries, arrayBuffer = options.arrayBuffer, reactionScheduler = options.reactionScheduler, reactionRequiresObservable = options.reactionRequiresObservable, observableRequiresReaction = options.observableRequiresReaction;\n if (options.isolateGlobalState === true) {\n isolateGlobalState();\n }\n if (enforceActions !== undefined) {\n if (typeof enforceActions === \"boolean\" || enforceActions === \"strict\")\n deprecated(\"Deprecated value for 'enforceActions', use 'false' => '\\\"never\\\"', 'true' => '\\\"observed\\\"', '\\\"strict\\\"' => \\\"'always'\\\" instead\");\n var ea = void 0;\n switch (enforceActions) {\n case true:\n case \"observed\":\n ea = true;\n break;\n case false:\n case \"never\":\n ea = false;\n break;\n case \"strict\":\n case \"always\":\n ea = \"strict\";\n break;\n default:\n fail(\"Invalid value for 'enforceActions': '\" + enforceActions + \"', expected 'never', 'always' or 'observed'\");\n }\n globalState.enforceActions = ea;\n globalState.allowStateChanges = ea === true || ea === \"strict\" ? false : true;\n }\n if (computedRequiresReaction !== undefined) {\n globalState.computedRequiresReaction = !!computedRequiresReaction;\n }\n if (reactionRequiresObservable !== undefined) {\n globalState.reactionRequiresObservable = !!reactionRequiresObservable;\n }\n if (observableRequiresReaction !== undefined) {\n globalState.observableRequiresReaction = !!observableRequiresReaction;\n globalState.allowStateReads = !globalState.observableRequiresReaction;\n }\n if (computedConfigurable !== undefined) {\n globalState.computedConfigurable = !!computedConfigurable;\n }\n if (disableErrorBoundaries !== undefined) {\n if (disableErrorBoundaries === true)\n console.warn(\"WARNING: Debug feature only. MobX will NOT recover from errors if this is on.\");\n globalState.disableErrorBoundaries = !!disableErrorBoundaries;\n }\n if (typeof arrayBuffer === \"number\") {\n reserveArrayBuffer(arrayBuffer);\n }\n if (reactionScheduler) {\n setReactionScheduler(reactionScheduler);\n }\n}\n\nfunction decorate(thing, decorators) {\n if (process.env.NODE_ENV !== \"production\" && !isPlainObject(decorators))\n fail(\"Decorators should be a key value map\");\n var target = typeof thing === \"function\" ? thing.prototype : thing;\n var _loop_1 = function (prop) {\n var propertyDecorators = decorators[prop];\n if (!Array.isArray(propertyDecorators)) {\n propertyDecorators = [propertyDecorators];\n }\n // prettier-ignore\n if (process.env.NODE_ENV !== \"production\" && !propertyDecorators.every(function (decorator) { return typeof decorator === \"function\"; }))\n fail(\"Decorate: expected a decorator function or array of decorator functions for '\" + prop + \"'\");\n var descriptor = Object.getOwnPropertyDescriptor(target, prop);\n var newDescriptor = propertyDecorators.reduce(function (accDescriptor, decorator) { return decorator(target, prop, accDescriptor); }, descriptor);\n if (newDescriptor)\n Object.defineProperty(target, prop, newDescriptor);\n };\n for (var prop in decorators) {\n _loop_1(prop);\n }\n return thing;\n}\n\nfunction extendShallowObservable(target, properties, decorators) {\n deprecated(\"'extendShallowObservable' is deprecated, use 'extendObservable(target, props, { deep: false })' instead\");\n return extendObservable(target, properties, decorators, shallowCreateObservableOptions);\n}\nfunction extendObservable(target, properties, decorators, options) {\n if (process.env.NODE_ENV !== \"production\") {\n invariant(arguments.length >= 2 && arguments.length <= 4, \"'extendObservable' expected 2-4 arguments\");\n invariant(typeof target === \"object\", \"'extendObservable' expects an object as first argument\");\n invariant(!isObservableMap(target), \"'extendObservable' should not be used on maps, use map.merge instead\");\n invariant(!isObservable(properties), \"Extending an object with another observable (object) is not supported. Please construct an explicit propertymap, using `toJS` if need. See issue #540\");\n if (decorators)\n for (var key in decorators)\n if (!(key in properties))\n fail(\"Trying to declare a decorator for unspecified property '\" + key + \"'\");\n }\n options = asCreateObservableOptions(options);\n var defaultDecorator = options.defaultDecorator || (options.deep === false ? refDecorator : deepDecorator);\n initializeInstance(target);\n asObservableObject(target, options.name, defaultDecorator.enhancer); // make sure object is observable, even without initial props\n startBatch();\n try {\n var keys = Object.getOwnPropertyNames(properties);\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n var descriptor = Object.getOwnPropertyDescriptor(properties, key);\n if (process.env.NODE_ENV !== \"production\") {\n if (isComputed(descriptor.value))\n fail(\"Passing a 'computed' as initial property value is no longer supported by extendObservable. Use a getter or decorator instead\");\n }\n var decorator = decorators && key in decorators\n ? decorators[key]\n : descriptor.get\n ? computedDecorator\n : defaultDecorator;\n if (process.env.NODE_ENV !== \"production\" && typeof decorator !== \"function\")\n return fail(\"Not a valid decorator for '\" + key + \"', got: \" + decorator);\n var resultDescriptor = decorator(target, key, descriptor, true);\n if (resultDescriptor // otherwise, assume already applied, due to `applyToInstance`\n )\n Object.defineProperty(target, key, resultDescriptor);\n }\n }\n finally {\n endBatch();\n }\n return target;\n}\n\nfunction getDependencyTree(thing, property) {\n return nodeToDependencyTree(getAtom(thing, property));\n}\nfunction nodeToDependencyTree(node) {\n var result = {\n name: node.name\n };\n if (node.observing && node.observing.length > 0)\n result.dependencies = unique(node.observing).map(nodeToDependencyTree);\n return result;\n}\nfunction getObserverTree(thing, property) {\n return nodeToObserverTree(getAtom(thing, property));\n}\nfunction nodeToObserverTree(node) {\n var result = {\n name: node.name\n };\n if (hasObservers(node))\n result.observers = getObservers(node).map(nodeToObserverTree);\n return result;\n}\n\nvar generatorId = 0;\nfunction FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\";\n}\nFlowCancellationError.prototype = Object.create(Error.prototype);\nfunction isFlowCancellationError(error) {\n return error instanceof FlowCancellationError;\n}\nfunction flow(generator) {\n if (arguments.length !== 1)\n fail(!!process.env.NODE_ENV && \"Flow expects one 1 argument and cannot be used as decorator\");\n var name = generator.name || \"\";\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n return function () {\n var ctx = this;\n var args = arguments;\n var runId = ++generatorId;\n var gen = action(name + \" - runid: \" + runId + \" - init\", generator).apply(ctx, args);\n var rejector;\n var pendingPromise = undefined;\n var res = new Promise(function (resolve, reject) {\n var stepId = 0;\n rejector = reject;\n function onFulfilled(res) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.next).call(gen, res);\n }\n catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function onRejected(err) {\n pendingPromise = undefined;\n var ret;\n try {\n ret = action(name + \" - runid: \" + runId + \" - yield \" + stepId++, gen.throw).call(gen, err);\n }\n catch (e) {\n return reject(e);\n }\n next(ret);\n }\n function next(ret) {\n if (ret && typeof ret.then === \"function\") {\n // an async iterator\n ret.then(next, reject);\n return;\n }\n if (ret.done)\n return resolve(ret.value);\n pendingPromise = Promise.resolve(ret.value);\n return pendingPromise.then(onFulfilled, onRejected);\n }\n onFulfilled(undefined); // kick off the process\n });\n res.cancel = action(name + \" - runid: \" + runId + \" - cancel\", function () {\n try {\n if (pendingPromise)\n cancelPromise(pendingPromise);\n // Finally block can return (or yield) stuff..\n var res_1 = gen.return(undefined);\n // eat anything that promise would do, it's cancelled!\n var yieldedPromise = Promise.resolve(res_1.value);\n yieldedPromise.then(noop, noop);\n cancelPromise(yieldedPromise); // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError());\n }\n catch (e) {\n rejector(e); // there could be a throwing finally block\n }\n });\n return res;\n };\n}\nfunction cancelPromise(promise) {\n if (typeof promise.cancel === \"function\")\n promise.cancel();\n}\n\nfunction interceptReads(thing, propOrHandler, handler) {\n var target;\n if (isObservableMap(thing) || isObservableArray(thing) || isObservableValue(thing)) {\n target = getAdministration(thing);\n }\n else if (isObservableObject(thing)) {\n if (typeof propOrHandler !== \"string\")\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"InterceptReads can only be used with a specific property, not with an object in general\");\n target = getAdministration(thing, propOrHandler);\n }\n else {\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"Expected observable map, object or array as first array\");\n }\n if (target.dehancer !== undefined)\n return fail(process.env.NODE_ENV !== \"production\" && \"An intercept reader was already established\");\n target.dehancer = typeof propOrHandler === \"function\" ? propOrHandler : handler;\n return function () {\n target.dehancer = undefined;\n };\n}\n\nfunction intercept(thing, propOrHandler, handler) {\n if (typeof handler === \"function\")\n return interceptProperty(thing, propOrHandler, handler);\n else\n return interceptInterceptable(thing, propOrHandler);\n}\nfunction interceptInterceptable(thing, handler) {\n return getAdministration(thing).intercept(handler);\n}\nfunction interceptProperty(thing, property, handler) {\n return getAdministration(thing, property).intercept(handler);\n}\n\nfunction _isComputed(value, property) {\n if (value === null || value === undefined)\n return false;\n if (property !== undefined) {\n if (isObservableObject(value) === false)\n return false;\n if (!value.$mobx.values[property])\n return false;\n var atom = getAtom(value, property);\n return isComputedValue(atom);\n }\n return isComputedValue(value);\n}\nfunction isComputed(value) {\n if (arguments.length > 1)\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"isComputed expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n return _isComputed(value);\n}\nfunction isComputedProp(value, propName) {\n if (typeof propName !== \"string\")\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"isComputed expected a property name as second argument\");\n return _isComputed(value, propName);\n}\n\nfunction _isObservable(value, property) {\n if (value === null || value === undefined)\n return false;\n if (property !== undefined) {\n if (process.env.NODE_ENV !== \"production\" &&\n (isObservableMap(value) || isObservableArray(value)))\n return fail(\"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\");\n if (isObservableObject(value)) {\n var o = value.$mobx;\n return o.values && !!o.values[property];\n }\n return false;\n }\n // For first check, see #701\n return (isObservableObject(value) ||\n !!value.$mobx ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value));\n}\nfunction isObservable(value) {\n if (arguments.length !== 1)\n fail(process.env.NODE_ENV !== \"production\" &&\n \"isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property\");\n return _isObservable(value);\n}\nfunction isObservableProp(value, propName) {\n if (typeof propName !== \"string\")\n return fail(process.env.NODE_ENV !== \"production\" && \"expected a property name as second argument\");\n return _isObservable(value, propName);\n}\n\nfunction keys(obj) {\n if (isObservableObject(obj)) {\n return obj.$mobx.getKeys();\n }\n if (isObservableMap(obj)) {\n return iteratorToArray(obj.keys());\n }\n if (isObservableSet(obj)) {\n return iteratorToArray(obj.keys());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (_, index) { return index; });\n }\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'keys()' can only be used on observable objects, arrays, sets and maps\");\n}\nfunction values(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) { return obj[key]; });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) { return obj.get(key); });\n }\n if (isObservableSet(obj)) {\n return iteratorToArray(obj.values());\n }\n if (isObservableArray(obj)) {\n return obj.slice();\n }\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'values()' can only be used on observable objects, arrays, sets and maps\");\n}\nfunction entries(obj) {\n if (isObservableObject(obj)) {\n return keys(obj).map(function (key) { return [key, obj[key]]; });\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(function (key) { return [key, obj.get(key)]; });\n }\n if (isObservableSet(obj)) {\n return iteratorToArray(obj.entries());\n }\n if (isObservableArray(obj)) {\n return obj.map(function (key, index) { return [index, key]; });\n }\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'entries()' can only be used on observable objects, arrays and maps\");\n}\nfunction set(obj, key, value) {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch();\n var values_1 = key;\n try {\n for (var key_1 in values_1)\n set(obj, key_1, values_1[key_1]);\n }\n finally {\n endBatch();\n }\n return;\n }\n if (isObservableObject(obj)) {\n var adm = obj.$mobx;\n var existingObservable = adm.values[key];\n if (existingObservable) {\n adm.write(obj, key, value);\n }\n else {\n defineObservableProperty(obj, key, value, adm.defaultEnhancer);\n }\n }\n else if (isObservableMap(obj)) {\n obj.set(key, value);\n }\n else if (isObservableSet(obj)) {\n obj.add(key);\n }\n else if (isObservableArray(obj)) {\n if (typeof key !== \"number\")\n key = parseInt(key, 10);\n invariant(key >= 0, \"Not a valid index: '\" + key + \"'\");\n startBatch();\n if (key >= obj.length)\n obj.length = key + 1;\n obj[key] = value;\n endBatch();\n }\n else {\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'set()' can only be used on observable objects, arrays and maps\");\n }\n}\nfunction remove(obj, key) {\n if (isObservableObject(obj)) {\n obj.$mobx.remove(key);\n }\n else if (isObservableMap(obj)) {\n obj.delete(key);\n }\n else if (isObservableSet(obj)) {\n obj.delete(key);\n }\n else if (isObservableArray(obj)) {\n if (typeof key !== \"number\")\n key = parseInt(key, 10);\n invariant(key >= 0, \"Not a valid index: '\" + key + \"'\");\n obj.splice(key, 1);\n }\n else {\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'remove()' can only be used on observable objects, arrays and maps\");\n }\n}\nfunction has(obj, key) {\n if (isObservableObject(obj)) {\n // return keys(obj).indexOf(key) >= 0\n var adm = getAdministration(obj);\n adm.getKeys(); // make sure we get notified of key changes, but for performance, use the values map to look up existence\n return !!adm.values[key];\n }\n else if (isObservableMap(obj)) {\n return obj.has(key);\n }\n else if (isObservableSet(obj)) {\n return obj.has(key);\n }\n else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length;\n }\n else {\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'has()' can only be used on observable objects, arrays and maps\");\n }\n}\nfunction get(obj, key) {\n if (!has(obj, key))\n return undefined;\n if (isObservableObject(obj)) {\n return obj[key];\n }\n else if (isObservableMap(obj)) {\n return obj.get(key);\n }\n else if (isObservableArray(obj)) {\n return obj[key];\n }\n else {\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'get()' can only be used on observable objects, arrays and maps\");\n }\n}\n\nfunction observe(thing, propOrCb, cbOrFire, fireImmediately) {\n if (typeof cbOrFire === \"function\")\n return observeObservableProperty(thing, propOrCb, cbOrFire, fireImmediately);\n else\n return observeObservable(thing, propOrCb, cbOrFire);\n}\nfunction observeObservable(thing, listener, fireImmediately) {\n return getAdministration(thing).observe(listener, fireImmediately);\n}\nfunction observeObservableProperty(thing, property, listener, fireImmediately) {\n return getAdministration(thing, property).observe(listener, fireImmediately);\n}\n\nvar defaultOptions = {\n detectCycles: true,\n exportMapsAsObjects: true,\n recurseEverything: false\n};\nfunction cache(map, key, value, options) {\n if (options.detectCycles)\n map.set(key, value);\n return value;\n}\nfunction toJSHelper(source, options, __alreadySeen) {\n if (!options.recurseEverything && !isObservable(source))\n return source;\n if (typeof source !== \"object\")\n return source;\n // Directly return null if source is null\n if (source === null)\n return null;\n // Directly return the Date object itself if contained in the observable\n if (source instanceof Date)\n return source;\n if (isObservableValue(source))\n return toJSHelper(source.get(), options, __alreadySeen);\n // make sure we track the keys of the object\n if (isObservable(source))\n keys(source);\n var detectCycles = options.detectCycles === true;\n if (detectCycles && source !== null && __alreadySeen.has(source)) {\n return __alreadySeen.get(source);\n }\n if (isObservableArray(source) || Array.isArray(source)) {\n var res_1 = cache(__alreadySeen, source, [], options);\n var toAdd = source.map(function (value) { return toJSHelper(value, options, __alreadySeen); });\n res_1.length = toAdd.length;\n for (var i = 0, l = toAdd.length; i < l; i++)\n res_1[i] = toAdd[i];\n return res_1;\n }\n if (isObservableSet(source) || Object.getPrototypeOf(source) === Set.prototype) {\n if (options.exportMapsAsObjects === false) {\n var res_2 = cache(__alreadySeen, source, new Set(), options);\n source.forEach(function (value) {\n res_2.add(toJSHelper(value, options, __alreadySeen));\n });\n return res_2;\n }\n else {\n var res_3 = cache(__alreadySeen, source, [], options);\n source.forEach(function (value) {\n res_3.push(toJSHelper(value, options, __alreadySeen));\n });\n return res_3;\n }\n }\n if (isObservableMap(source) || Object.getPrototypeOf(source) === Map.prototype) {\n if (options.exportMapsAsObjects === false) {\n var res_4 = cache(__alreadySeen, source, new Map(), options);\n source.forEach(function (value, key) {\n res_4.set(key, toJSHelper(value, options, __alreadySeen));\n });\n return res_4;\n }\n else {\n var res_5 = cache(__alreadySeen, source, {}, options);\n source.forEach(function (value, key) {\n res_5[key] = toJSHelper(value, options, __alreadySeen);\n });\n return res_5;\n }\n }\n // Fallback to the situation that source is an ObservableObject or a plain object\n var res = cache(__alreadySeen, source, {}, options);\n for (var key in source) {\n res[key] = toJSHelper(source[key], options, __alreadySeen);\n }\n return res;\n}\nfunction toJS(source, options) {\n // backward compatibility\n if (typeof options === \"boolean\")\n options = { detectCycles: options };\n if (!options)\n options = defaultOptions;\n options.detectCycles =\n options.detectCycles === undefined\n ? options.recurseEverything === true\n : options.detectCycles === true;\n var __alreadySeen;\n if (options.detectCycles)\n __alreadySeen = new Map();\n return toJSHelper(source, options, __alreadySeen);\n}\n\nfunction trace() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var enterBreakPoint = false;\n if (typeof args[args.length - 1] === \"boolean\")\n enterBreakPoint = args.pop();\n var derivation = getAtomFromArgs(args);\n if (!derivation) {\n return fail(process.env.NODE_ENV !== \"production\" &&\n \"'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly\");\n }\n if (derivation.isTracing === TraceMode.NONE) {\n console.log(\"[mobx.trace] '\" + derivation.name + \"' tracing enabled\");\n }\n derivation.isTracing = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG;\n}\nfunction getAtomFromArgs(args) {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation;\n case 1:\n return getAtom(args[0]);\n case 2:\n return getAtom(args[0], args[1]);\n }\n}\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nfunction transaction(action, thisArg) {\n if (thisArg === void 0) { thisArg = undefined; }\n startBatch();\n try {\n return action.apply(thisArg);\n }\n finally {\n endBatch();\n }\n}\n\nfunction when(predicate, arg1, arg2) {\n if (arguments.length === 1 || (arg1 && typeof arg1 === \"object\"))\n return whenPromise(predicate, arg1);\n return _when(predicate, arg1, arg2 || {});\n}\nfunction _when(predicate, effect, opts) {\n var timeoutHandle;\n if (typeof opts.timeout === \"number\") {\n timeoutHandle = setTimeout(function () {\n if (!disposer.$mobx.isDisposed) {\n disposer();\n var error = new Error(\"WHEN_TIMEOUT\");\n if (opts.onError)\n opts.onError(error);\n else\n throw error;\n }\n }, opts.timeout);\n }\n opts.name = opts.name || \"When@\" + getNextId();\n var effectAction = createAction(opts.name + \"-effect\", effect);\n var disposer = autorun(function (r) {\n if (predicate()) {\n r.dispose();\n if (timeoutHandle)\n clearTimeout(timeoutHandle);\n effectAction();\n }\n }, opts);\n return disposer;\n}\nfunction whenPromise(predicate, opts) {\n if (process.env.NODE_ENV !== \"production\" && opts && opts.onError)\n return fail(\"the options 'onError' and 'promise' cannot be combined\");\n var cancel;\n var res = new Promise(function (resolve, reject) {\n var disposer = _when(predicate, resolve, __assign(__assign({}, opts), { onError: reject }));\n cancel = function () {\n disposer();\n reject(\"WHEN_CANCELLED\");\n };\n });\n res.cancel = cancel;\n return res;\n}\n\nfunction hasInterceptors(interceptable) {\n return interceptable.interceptors !== undefined && interceptable.interceptors.length > 0;\n}\nfunction registerInterceptor(interceptable, handler) {\n var interceptors = interceptable.interceptors || (interceptable.interceptors = []);\n interceptors.push(handler);\n return once(function () {\n var idx = interceptors.indexOf(handler);\n if (idx !== -1)\n interceptors.splice(idx, 1);\n });\n}\nfunction interceptChange(interceptable, change) {\n var prevU = untrackedStart();\n try {\n var interceptors = interceptable.interceptors;\n if (interceptors)\n for (var i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change);\n invariant(!change || change.type, \"Intercept handlers should return nothing or a change object\");\n if (!change)\n break;\n }\n return change;\n }\n finally {\n untrackedEnd(prevU);\n }\n}\n\nfunction hasListeners(listenable) {\n return listenable.changeListeners !== undefined && listenable.changeListeners.length > 0;\n}\nfunction registerListener(listenable, handler) {\n var listeners = listenable.changeListeners || (listenable.changeListeners = []);\n listeners.push(handler);\n return once(function () {\n var idx = listeners.indexOf(handler);\n if (idx !== -1)\n listeners.splice(idx, 1);\n });\n}\nfunction notifyListeners(listenable, change) {\n var prevU = untrackedStart();\n var listeners = listenable.changeListeners;\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change);\n }\n untrackedEnd(prevU);\n}\n\nvar MAX_SPLICE_SIZE = 10000; // See e.g. https://github.com/mobxjs/mobx/issues/859\n// Detects bug in safari 9.1.1 (or iOS 9 safari mobile). See #364\nvar safariPrototypeSetterInheritanceBug = (function () {\n var v = false;\n var p = {};\n Object.defineProperty(p, \"0\", {\n set: function () {\n v = true;\n }\n });\n Object.create(p)[\"0\"] = 1;\n return v === false;\n})();\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nvar OBSERVABLE_ARRAY_BUFFER_SIZE = 0;\n// Typescript workaround to make sure ObservableArray extends Array\nvar StubArray = /** @class */ (function () {\n function StubArray() {\n }\n return StubArray;\n}());\nfunction inherit(ctor, proto) {\n if (typeof Object[\"setPrototypeOf\"] !== \"undefined\") {\n Object[\"setPrototypeOf\"](ctor.prototype, proto);\n }\n else if (typeof ctor.prototype.__proto__ !== \"undefined\") {\n ctor.prototype.__proto__ = proto;\n }\n else {\n ctor[\"prototype\"] = proto;\n }\n}\ninherit(StubArray, Array.prototype);\n// Weex freeze Array.prototype\n// Make them writeable and configurable in prototype chain\n// https://github.com/alibaba/weex/pull/1529\nif (Object.isFrozen(Array)) {\n [\n \"constructor\",\n \"push\",\n \"shift\",\n \"concat\",\n \"pop\",\n \"unshift\",\n \"replace\",\n \"find\",\n \"findIndex\",\n \"splice\",\n \"reverse\",\n \"sort\"\n ].forEach(function (key) {\n Object.defineProperty(StubArray.prototype, key, {\n configurable: true,\n writable: true,\n value: Array.prototype[key]\n });\n });\n}\nvar ObservableArrayAdministration = /** @class */ (function () {\n function ObservableArrayAdministration(name, enhancer, array, owned) {\n this.array = array;\n this.owned = owned;\n this.values = [];\n this.lastKnownLength = 0;\n this.atom = new Atom(name || \"ObservableArray@\" + getNextId());\n this.enhancer = function (newV, oldV) { return enhancer(newV, oldV, name + \"[..]\"); };\n }\n ObservableArrayAdministration.prototype.dehanceValue = function (value) {\n if (this.dehancer !== undefined)\n return this.dehancer(value);\n return value;\n };\n ObservableArrayAdministration.prototype.dehanceValues = function (values) {\n if (this.dehancer !== undefined && values.length > 0)\n return values.map(this.dehancer);\n return values;\n };\n ObservableArrayAdministration.prototype.intercept = function (handler) {\n return registerInterceptor(this, handler);\n };\n ObservableArrayAdministration.prototype.observe = function (listener, fireImmediately) {\n if (fireImmediately === void 0) { fireImmediately = false; }\n if (fireImmediately) {\n listener({\n object: this.array,\n type: \"splice\",\n index: 0,\n added: this.values.slice(),\n addedCount: this.values.length,\n removed: [],\n removedCount: 0\n });\n }\n return registerListener(this, listener);\n };\n ObservableArrayAdministration.prototype.getArrayLength = function () {\n this.atom.reportObserved();\n return this.values.length;\n };\n ObservableArrayAdministration.prototype.setArrayLength = function (newLength) {\n if (typeof newLength !== \"number\" || newLength < 0)\n throw new Error(\"[mobx.array] Out of range: \" + newLength);\n var currentLength = this.values.length;\n if (newLength === currentLength)\n return;\n else if (newLength > currentLength) {\n var newItems = new Array(newLength - currentLength);\n for (var i = 0; i < newLength - currentLength; i++)\n newItems[i] = undefined; // No Array.fill everywhere...\n this.spliceWithArray(currentLength, 0, newItems);\n }\n else\n this.spliceWithArray(newLength, currentLength - newLength);\n };\n // adds / removes the necessary numeric properties to this object\n ObservableArrayAdministration.prototype.updateArrayLength = function (oldLength, delta) {\n if (oldLength !== this.lastKnownLength)\n throw new Error(\"[mobx] Modification exception: the internal structure of an observable array was changed. Did you use peek() to change it?\");\n this.lastKnownLength += delta;\n if (delta > 0 && oldLength + delta + 1 > OBSERVABLE_ARRAY_BUFFER_SIZE)\n reserveArrayBuffer(oldLength + delta + 1);\n };\n ObservableArrayAdministration.prototype.spliceWithArray = function (index, deleteCount, newItems) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this.atom);\n var length = this.values.length;\n if (index === undefined)\n index = 0;\n else if (index > length)\n index = length;\n else if (index < 0)\n index = Math.max(0, length + index);\n if (arguments.length === 1)\n deleteCount = length - index;\n else if (deleteCount === undefined || deleteCount === null)\n deleteCount = 0;\n else\n deleteCount = Math.max(0, Math.min(deleteCount, length - index));\n if (newItems === undefined)\n newItems = EMPTY_ARRAY;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: this.array,\n type: \"splice\",\n index: index,\n removedCount: deleteCount,\n added: newItems\n });\n if (!change)\n return EMPTY_ARRAY;\n deleteCount = change.removedCount;\n newItems = change.added;\n }\n newItems =\n newItems.length === 0 ? newItems : newItems.map(function (v) { return _this.enhancer(v, undefined); });\n var lengthDelta = newItems.length - deleteCount;\n this.updateArrayLength(length, lengthDelta); // create or remove new entries\n var res = this.spliceItemsIntoValues(index, deleteCount, newItems);\n if (deleteCount !== 0 || newItems.length !== 0)\n this.notifyArraySplice(index, newItems, res);\n return this.dehanceValues(res);\n };\n ObservableArrayAdministration.prototype.spliceItemsIntoValues = function (index, deleteCount, newItems) {\n var _a;\n if (newItems.length < MAX_SPLICE_SIZE) {\n return (_a = this.values).splice.apply(_a, __spread([index, deleteCount], newItems));\n }\n else {\n var res = this.values.slice(index, index + deleteCount);\n this.values = this.values\n .slice(0, index)\n .concat(newItems, this.values.slice(index + deleteCount));\n return res;\n }\n };\n ObservableArrayAdministration.prototype.notifyArrayChildUpdate = function (index, newValue, oldValue) {\n var notifySpy = !this.owned && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy\n ? {\n object: this.array,\n type: \"update\",\n index: index,\n newValue: newValue,\n oldValue: oldValue\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: this.atom.name }));\n this.atom.reportChanged();\n if (notify)\n notifyListeners(this, change);\n if (notifySpy)\n spyReportEnd();\n };\n ObservableArrayAdministration.prototype.notifyArraySplice = function (index, added, removed) {\n var notifySpy = !this.owned && isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy\n ? {\n object: this.array,\n type: \"splice\",\n index: index,\n removed: removed,\n added: added,\n removedCount: removed.length,\n addedCount: added.length\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: this.atom.name }));\n this.atom.reportChanged();\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify)\n notifyListeners(this, change);\n if (notifySpy)\n spyReportEnd();\n };\n return ObservableArrayAdministration;\n}());\nvar ObservableArray = /** @class */ (function (_super) {\n __extends(ObservableArray, _super);\n function ObservableArray(initialValues, enhancer, name, owned) {\n if (name === void 0) { name = \"ObservableArray@\" + getNextId(); }\n if (owned === void 0) { owned = false; }\n var _this = _super.call(this) || this;\n var adm = new ObservableArrayAdministration(name, enhancer, _this, owned);\n addHiddenFinalProp(_this, \"$mobx\", adm);\n if (initialValues && initialValues.length) {\n var prev = allowStateChangesStart(true);\n _this.spliceWithArray(0, 0, initialValues);\n allowStateChangesEnd(prev);\n }\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(adm.array, \"0\", ENTRY_0);\n }\n return _this;\n }\n ObservableArray.prototype.intercept = function (handler) {\n return this.$mobx.intercept(handler);\n };\n ObservableArray.prototype.observe = function (listener, fireImmediately) {\n if (fireImmediately === void 0) { fireImmediately = false; }\n return this.$mobx.observe(listener, fireImmediately);\n };\n ObservableArray.prototype.clear = function () {\n return this.splice(0);\n };\n ObservableArray.prototype.concat = function () {\n var arrays = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arrays[_i] = arguments[_i];\n }\n this.$mobx.atom.reportObserved();\n return Array.prototype.concat.apply(this.peek(), arrays.map(function (a) { return (isObservableArray(a) ? a.peek() : a); }));\n };\n ObservableArray.prototype.replace = function (newItems) {\n return this.$mobx.spliceWithArray(0, this.$mobx.values.length, newItems);\n };\n /**\n * Converts this array back to a (shallow) javascript structure.\n * For a deep clone use mobx.toJS\n */\n ObservableArray.prototype.toJS = function () {\n return this.slice();\n };\n ObservableArray.prototype.toJSON = function () {\n // Used by JSON.stringify\n return this.toJS();\n };\n ObservableArray.prototype.peek = function () {\n this.$mobx.atom.reportObserved();\n return this.$mobx.dehanceValues(this.$mobx.values);\n };\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n ObservableArray.prototype.find = function (predicate, thisArg, fromIndex) {\n if (fromIndex === void 0) { fromIndex = 0; }\n if (arguments.length === 3)\n deprecated(\"The array.find fromIndex argument to find will not be supported anymore in the next major\");\n var idx = this.findIndex.apply(this, arguments);\n return idx === -1 ? undefined : this.get(idx);\n };\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n ObservableArray.prototype.findIndex = function (predicate, thisArg, fromIndex) {\n if (fromIndex === void 0) { fromIndex = 0; }\n if (arguments.length === 3)\n deprecated(\"The array.findIndex fromIndex argument to find will not be supported anymore in the next major\");\n var items = this.peek(), l = items.length;\n for (var i = fromIndex; i < l; i++)\n if (predicate.call(thisArg, items[i], i, this))\n return i;\n return -1;\n };\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n ObservableArray.prototype.splice = function (index, deleteCount) {\n var newItems = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n newItems[_i - 2] = arguments[_i];\n }\n switch (arguments.length) {\n case 0:\n return [];\n case 1:\n return this.$mobx.spliceWithArray(index);\n case 2:\n return this.$mobx.spliceWithArray(index, deleteCount);\n }\n return this.$mobx.spliceWithArray(index, deleteCount, newItems);\n };\n ObservableArray.prototype.spliceWithArray = function (index, deleteCount, newItems) {\n return this.$mobx.spliceWithArray(index, deleteCount, newItems);\n };\n ObservableArray.prototype.push = function () {\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n var adm = this.$mobx;\n adm.spliceWithArray(adm.values.length, 0, items);\n return adm.values.length;\n };\n ObservableArray.prototype.pop = function () {\n return this.splice(Math.max(this.$mobx.values.length - 1, 0), 1)[0];\n };\n ObservableArray.prototype.shift = function () {\n return this.splice(0, 1)[0];\n };\n ObservableArray.prototype.unshift = function () {\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n var adm = this.$mobx;\n adm.spliceWithArray(0, 0, items);\n return adm.values.length;\n };\n ObservableArray.prototype.reverse = function () {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n // so we deviate from the default and just make it an dervitation\n var clone = this.slice();\n return clone.reverse.apply(clone, arguments);\n };\n ObservableArray.prototype.sort = function (compareFn) {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n var clone = this.slice();\n return clone.sort.apply(clone, arguments);\n };\n ObservableArray.prototype.remove = function (value) {\n var idx = this.$mobx.dehanceValues(this.$mobx.values).indexOf(value);\n if (idx > -1) {\n this.splice(idx, 1);\n return true;\n }\n return false;\n };\n ObservableArray.prototype.move = function (fromIndex, toIndex) {\n deprecated(\"observableArray.move is deprecated, use .slice() & .replace() instead\");\n function checkIndex(index) {\n if (index < 0) {\n throw new Error(\"[mobx.array] Index out of bounds: \" + index + \" is negative\");\n }\n var length = this.$mobx.values.length;\n if (index >= length) {\n throw new Error(\"[mobx.array] Index out of bounds: \" + index + \" is not smaller than \" + length);\n }\n }\n checkIndex.call(this, fromIndex);\n checkIndex.call(this, toIndex);\n if (fromIndex === toIndex) {\n return;\n }\n var oldItems = this.$mobx.values;\n var newItems;\n if (fromIndex < toIndex) {\n newItems = __spread(oldItems.slice(0, fromIndex), oldItems.slice(fromIndex + 1, toIndex + 1), [\n oldItems[fromIndex]\n ], oldItems.slice(toIndex + 1));\n }\n else {\n // toIndex < fromIndex\n newItems = __spread(oldItems.slice(0, toIndex), [\n oldItems[fromIndex]\n ], oldItems.slice(toIndex, fromIndex), oldItems.slice(fromIndex + 1));\n }\n this.replace(newItems);\n };\n // See #734, in case property accessors are unreliable...\n ObservableArray.prototype.get = function (index) {\n var impl = this.$mobx;\n if (impl) {\n if (index < impl.values.length) {\n impl.atom.reportObserved();\n return impl.dehanceValue(impl.values[index]);\n }\n console.warn(\"[mobx.array] Attempt to read an array index (\" + index + \") that is out of bounds (\" + impl.values.length + \"). Please check length first. Out of bound indices will not be tracked by MobX\");\n }\n return undefined;\n };\n // See #734, in case property accessors are unreliable...\n ObservableArray.prototype.set = function (index, newValue) {\n var adm = this.$mobx;\n var values = adm.values;\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(adm.atom);\n var oldValue = values[index];\n if (hasInterceptors(adm)) {\n var change = interceptChange(adm, {\n type: \"update\",\n object: this,\n index: index,\n newValue: newValue\n });\n if (!change)\n return;\n newValue = change.newValue;\n }\n newValue = adm.enhancer(newValue, oldValue);\n var changed = newValue !== oldValue;\n if (changed) {\n values[index] = newValue;\n adm.notifyArrayChildUpdate(index, newValue, oldValue);\n }\n }\n else if (index === values.length) {\n // add a new item\n adm.spliceWithArray(index, 0, [newValue]);\n }\n else {\n // out of bounds\n throw new Error(\"[mobx.array] Index out of bounds, \" + index + \" is larger than \" + values.length);\n }\n };\n return ObservableArray;\n}(StubArray));\ndeclareIterator(ObservableArray.prototype, function () {\n this.$mobx.atom.reportObserved();\n var self = this;\n var nextIndex = 0;\n return makeIterable({\n next: function () {\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined };\n }\n });\n});\nObject.defineProperty(ObservableArray.prototype, \"length\", {\n enumerable: false,\n configurable: true,\n get: function () {\n return this.$mobx.getArrayLength();\n },\n set: function (newLength) {\n this.$mobx.setArrayLength(newLength);\n }\n});\naddHiddenProp(ObservableArray.prototype, toStringTagSymbol(), \"Array\");\n[\"indexOf\", \"join\", \"lastIndexOf\", \"slice\", \"toString\", \"toLocaleString\"].forEach(function (funcName) {\n var baseFunc = Array.prototype[funcName];\n invariant(typeof baseFunc === \"function\", \"Base function not defined on Array prototype: '\" + funcName + \"'\");\n addHiddenProp(ObservableArray.prototype, funcName, function () {\n return baseFunc.apply(this.peek(), arguments);\n });\n});\n[\n \"every\",\n \"filter\",\n //\"find\", // implemented individually (IE support)\n //\"findIndex\", // implemented individually (IE support)\n //\"flatMap\", // not supported\n \"forEach\",\n \"map\",\n \"some\"\n].forEach(function (funcName) {\n var baseFunc = Array.prototype[funcName];\n invariant(typeof baseFunc === \"function\", \"Base function not defined on Array prototype: '\" + funcName + \"'\");\n addHiddenProp(ObservableArray.prototype, funcName, function (callback, thisArg) {\n var _this = this;\n var adm = this.$mobx;\n adm.atom.reportObserved();\n var dehancedValues = adm.dehanceValues(adm.values);\n return dehancedValues[funcName](function (element, index) {\n return callback.call(thisArg, element, index, _this);\n }, thisArg);\n });\n});\n[\"reduce\", \"reduceRight\"].forEach(function (funcName) {\n addHiddenProp(ObservableArray.prototype, funcName, function () {\n var _this = this;\n var adm = this.$mobx;\n adm.atom.reportObserved();\n // #2432 - reduce behavior depends on arguments.length\n var callback = arguments[0];\n arguments[0] = function (accumulator, currentValue, index) {\n currentValue = adm.dehanceValue(currentValue);\n return callback(accumulator, currentValue, index, _this);\n };\n return adm.values[funcName].apply(adm.values, arguments);\n });\n});\n/**\n * We don't want those to show up in `for (const key in ar)` ...\n */\nmakeNonEnumerable(ObservableArray.prototype, [\n \"constructor\",\n \"intercept\",\n \"observe\",\n \"clear\",\n \"concat\",\n \"get\",\n \"replace\",\n \"toJS\",\n \"toJSON\",\n \"peek\",\n \"find\",\n \"findIndex\",\n \"splice\",\n \"spliceWithArray\",\n \"push\",\n \"pop\",\n \"set\",\n \"shift\",\n \"unshift\",\n \"reverse\",\n \"sort\",\n \"remove\",\n \"move\",\n \"toString\",\n \"toLocaleString\"\n]);\n// See #364\nvar ENTRY_0 = createArrayEntryDescriptor(0);\nfunction createArrayEntryDescriptor(index) {\n return {\n enumerable: false,\n configurable: false,\n get: function () {\n return this.get(index);\n },\n set: function (value) {\n this.set(index, value);\n }\n };\n}\nfunction createArrayBufferItem(index) {\n Object.defineProperty(ObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index));\n}\nfunction reserveArrayBuffer(max) {\n for (var index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max; index++)\n createArrayBufferItem(index);\n OBSERVABLE_ARRAY_BUFFER_SIZE = max;\n}\nreserveArrayBuffer(1000);\nvar isObservableArrayAdministration = createInstanceofPredicate(\"ObservableArrayAdministration\", ObservableArrayAdministration);\nfunction isObservableArray(thing) {\n return isObject(thing) && isObservableArrayAdministration(thing.$mobx);\n}\n\nvar ObservableMapMarker = {};\nvar ObservableMap = /** @class */ (function () {\n function ObservableMap(initialData, enhancer, name) {\n if (enhancer === void 0) { enhancer = deepEnhancer; }\n if (name === void 0) { name = \"ObservableMap@\" + getNextId(); }\n this.enhancer = enhancer;\n this.name = name;\n this.$mobx = ObservableMapMarker;\n this._keysAtom = createAtom(this.name + \".keys()\");\n if (typeof Map !== \"function\") {\n throw new Error(\"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\");\n }\n this._data = new Map();\n this._hasMap = new Map();\n this.merge(initialData);\n }\n ObservableMap.prototype._has = function (key) {\n return this._data.has(key);\n };\n ObservableMap.prototype.has = function (key) {\n var _this = this;\n if (!globalState.trackingDerivation)\n return this._has(key);\n var entry = this._hasMap.get(key);\n if (!entry) {\n // todo: replace with atom (breaking change)\n var newEntry = (entry = new ObservableValue(this._has(key), referenceEnhancer, this.name + \".\" + stringifyKey(key) + \"?\", false));\n this._hasMap.set(key, newEntry);\n onBecomeUnobserved(newEntry, function () { return _this._hasMap.delete(key); });\n }\n return entry.get();\n };\n ObservableMap.prototype.set = function (key, value) {\n var hasKey = this._has(key);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: hasKey ? \"update\" : \"add\",\n object: this,\n newValue: value,\n name: key\n });\n if (!change)\n return this;\n value = change.newValue;\n }\n if (hasKey) {\n this._updateValue(key, value);\n }\n else {\n this._addValue(key, value);\n }\n return this;\n };\n ObservableMap.prototype.delete = function (key) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this._keysAtom);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: \"delete\",\n object: this,\n name: key\n });\n if (!change)\n return false;\n }\n if (this._has(key)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy\n ? {\n type: \"delete\",\n object: this,\n oldValue: this._data.get(key).value,\n name: key\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: this.name, key: key }));\n transaction(function () {\n _this._keysAtom.reportChanged();\n _this._updateHasMapEntry(key, false);\n var observable = _this._data.get(key);\n observable.setNewValue(undefined);\n _this._data.delete(key);\n });\n if (notify)\n notifyListeners(this, change);\n if (notifySpy)\n spyReportEnd();\n return true;\n }\n return false;\n };\n ObservableMap.prototype._updateHasMapEntry = function (key, value) {\n var entry = this._hasMap.get(key);\n if (entry) {\n entry.setNewValue(value);\n }\n };\n ObservableMap.prototype._updateValue = function (key, newValue) {\n var observable = this._data.get(key);\n newValue = observable.prepareNewValue(newValue);\n if (newValue !== globalState.UNCHANGED) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy\n ? {\n type: \"update\",\n object: this,\n oldValue: observable.value,\n name: key,\n newValue: newValue\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: this.name, key: key }));\n observable.setNewValue(newValue);\n if (notify)\n notifyListeners(this, change);\n if (notifySpy)\n spyReportEnd();\n }\n };\n ObservableMap.prototype._addValue = function (key, newValue) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this._keysAtom);\n transaction(function () {\n var observable = new ObservableValue(newValue, _this.enhancer, _this.name + \".\" + stringifyKey(key), false);\n _this._data.set(key, observable);\n newValue = observable.value; // value might have been changed\n _this._updateHasMapEntry(key, true);\n _this._keysAtom.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy\n ? {\n type: \"add\",\n object: this,\n name: key,\n newValue: newValue\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: this.name, key: key }));\n if (notify)\n notifyListeners(this, change);\n if (notifySpy)\n spyReportEnd();\n };\n ObservableMap.prototype.get = function (key) {\n if (this.has(key))\n return this.dehanceValue(this._data.get(key).get());\n return this.dehanceValue(undefined);\n };\n ObservableMap.prototype.dehanceValue = function (value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n ObservableMap.prototype.keys = function () {\n this._keysAtom.reportObserved();\n return this._data.keys();\n };\n ObservableMap.prototype.values = function () {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function () {\n var _a = keys.next(), done = _a.done, value = _a.value;\n return {\n done: done,\n value: done ? undefined : self.get(value)\n };\n }\n });\n };\n ObservableMap.prototype.entries = function () {\n var self = this;\n var keys = this.keys();\n return makeIterable({\n next: function () {\n var _a = keys.next(), done = _a.done, value = _a.value;\n return {\n done: done,\n value: done ? undefined : [value, self.get(value)]\n };\n }\n });\n };\n ObservableMap.prototype.forEach = function (callback, thisArg) {\n var _this = this;\n this._keysAtom.reportObserved();\n this._data.forEach(function (_, key) { return callback.call(thisArg, _this.get(key), key, _this); });\n };\n /** Merge another object into this object, returns this. */\n ObservableMap.prototype.merge = function (other) {\n var _this = this;\n if (isObservableMap(other)) {\n other = other.toJS();\n }\n transaction(function () {\n var prev = allowStateChangesStart(true);\n try {\n if (isPlainObject(other))\n Object.keys(other).forEach(function (key) { return _this.set(key, other[key]); });\n else if (Array.isArray(other))\n other.forEach(function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n return _this.set(key, value);\n });\n else if (isES6Map(other)) {\n if (other.constructor !== Map)\n fail(\"Cannot initialize from classes that inherit from Map: \" + other.constructor.name); // prettier-ignore\n else\n other.forEach(function (value, key) { return _this.set(key, value); });\n }\n else if (other !== null && other !== undefined)\n fail(\"Cannot initialize map from \" + other);\n }\n finally {\n allowStateChangesEnd(prev);\n }\n });\n return this;\n };\n ObservableMap.prototype.clear = function () {\n var _this = this;\n transaction(function () {\n untracked(function () {\n // Note we are concurrently reading/deleting the same keys\n // forEach handles this properly\n _this._data.forEach(function (_, key) { return _this.delete(key); });\n });\n });\n };\n ObservableMap.prototype.replace = function (values) {\n var _this = this;\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(function () {\n // Convert to map so we can do quick key lookups\n var replacementMap = convertToMap(values);\n var orderedData = new Map();\n // Used for optimization\n var keysReportChangedCalled = false;\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n forOf(_this._data.keys(), function (key) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n var deleted = _this.delete(key);\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n else {\n // Delete prevented by interceptor\n var value = _this._data.get(key);\n orderedData.set(key, value);\n }\n }\n });\n // Merge entries\n forOf(replacementMap.entries(), function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n // We will want to know whether a new key is added\n var keyExisted = _this._data.has(key);\n // Add or update value\n _this.set(key, value);\n // The addition could have been prevent by interceptor\n if (_this._data.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n var value_1 = _this._data.get(key);\n orderedData.set(key, value_1);\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true;\n }\n }\n });\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (_this._data.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n _this._keysAtom.reportChanged();\n }\n else {\n var iter1 = _this._data.keys();\n var iter2 = orderedData.keys();\n var next1 = iter1.next();\n var next2 = iter2.next();\n while (!next1.done) {\n if (next1.value !== next2.value) {\n _this._keysAtom.reportChanged();\n break;\n }\n next1 = iter1.next();\n next2 = iter2.next();\n }\n }\n }\n // Use correctly ordered map\n _this._data = orderedData;\n });\n return this;\n };\n Object.defineProperty(ObservableMap.prototype, \"size\", {\n get: function () {\n this._keysAtom.reportObserved();\n return this._data.size;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns a plain object that represents this map.\n * Note that all the keys being stringified.\n * If there are duplicating keys after converting them to strings, behaviour is undetermined.\n */\n ObservableMap.prototype.toPOJO = function () {\n var _this = this;\n var res = {};\n this.forEach(function (_, key) {\n return (res[typeof key === \"symbol\" ? key : stringifyKey(key)] = _this.get(key));\n });\n return res;\n };\n /**\n * Returns a shallow non observable object clone of this map.\n * Note that the values migth still be observable. For a deep clone use mobx.toJS.\n */\n ObservableMap.prototype.toJS = function () {\n return new Map(this);\n };\n ObservableMap.prototype.toJSON = function () {\n // Used by JSON.stringify\n return this.toPOJO();\n };\n ObservableMap.prototype.toString = function () {\n var _this = this;\n return (this.name +\n \"[{ \" +\n iteratorToArray(this.keys())\n .map(function (key) { return stringifyKey(key) + \": \" + (\"\" + _this.get(key)); })\n .join(\", \") +\n \" }]\");\n };\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n ObservableMap.prototype.observe = function (listener, fireImmediately) {\n process.env.NODE_ENV !== \"production\" &&\n invariant(fireImmediately !== true, \"`observe` doesn't support fireImmediately=true in combination with maps.\");\n return registerListener(this, listener);\n };\n ObservableMap.prototype.intercept = function (handler) {\n return registerInterceptor(this, handler);\n };\n return ObservableMap;\n}());\nfunction stringifyKey(key) {\n if (key && key.toString)\n return key.toString();\n else\n return new String(key).toString();\n}\ndeclareIterator(ObservableMap.prototype, function () {\n return this.entries();\n});\naddHiddenFinalProp(ObservableMap.prototype, toStringTagSymbol(), \"Map\");\n/* 'var' fixes small-build issue */\nvar isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap);\n\nvar ObservableSetMarker = {};\nvar ObservableSet = /** @class */ (function () {\n function ObservableSet(initialData, enhancer, name) {\n if (enhancer === void 0) { enhancer = deepEnhancer; }\n if (name === void 0) { name = \"ObservableSet@\" + getNextId(); }\n this.name = name;\n this.$mobx = ObservableSetMarker;\n this._data = new Set();\n this._atom = createAtom(this.name);\n if (typeof Set !== \"function\") {\n throw new Error(\"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\");\n }\n this.enhancer = function (newV, oldV) { return enhancer(newV, oldV, name); };\n if (initialData) {\n this.replace(initialData);\n }\n }\n ObservableSet.prototype.dehanceValue = function (value) {\n if (this.dehancer !== undefined) {\n return this.dehancer(value);\n }\n return value;\n };\n ObservableSet.prototype.clear = function () {\n var _this = this;\n transaction(function () {\n untracked(function () {\n _this._data.forEach(function (value) {\n _this.delete(value);\n });\n });\n });\n };\n ObservableSet.prototype.forEach = function (callbackFn, thisArg) {\n var _this = this;\n this._atom.reportObserved();\n this._data.forEach(function (value) {\n callbackFn.call(thisArg, value, value, _this);\n });\n };\n Object.defineProperty(ObservableSet.prototype, \"size\", {\n get: function () {\n this._atom.reportObserved();\n return this._data.size;\n },\n enumerable: true,\n configurable: true\n });\n ObservableSet.prototype.add = function (value) {\n var _this = this;\n checkIfStateModificationsAreAllowed(this._atom);\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: \"add\",\n object: this,\n newValue: value\n });\n if (!change)\n return this;\n // TODO: ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(function () {\n _this._data.add(_this.enhancer(value, undefined));\n _this._atom.reportChanged();\n });\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy\n ? {\n type: \"add\",\n object: this,\n newValue: value\n }\n : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\")\n spyReportStart(change);\n if (notify)\n notifyListeners(this, change);\n if (notifySpy && process.env.NODE_ENV !== \"production\")\n spyReportEnd();\n }\n return this;\n };\n ObservableSet.prototype.delete = function (value) {\n var _this = this;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: \"delete\",\n object: this,\n oldValue: value\n });\n if (!change)\n return false;\n }\n if (this.has(value)) {\n var notifySpy = isSpyEnabled();\n var notify = hasListeners(this);\n var change = notify || notifySpy\n ? {\n type: \"delete\",\n object: this,\n oldValue: value\n }\n : null;\n if (notifySpy && process.env.NODE_ENV !== \"production\")\n spyReportStart(__assign(__assign({}, change), { name: this.name }));\n transaction(function () {\n _this._atom.reportChanged();\n _this._data.delete(value);\n });\n if (notify)\n notifyListeners(this, change);\n if (notifySpy && process.env.NODE_ENV !== \"production\")\n spyReportEnd();\n return true;\n }\n return false;\n };\n ObservableSet.prototype.has = function (value) {\n this._atom.reportObserved();\n return this._data.has(this.dehanceValue(value));\n };\n ObservableSet.prototype.entries = function () {\n var nextIndex = 0;\n var keys = iteratorToArray(this.keys());\n var values = iteratorToArray(this.values());\n return makeIterable({\n next: function () {\n var index = nextIndex;\n nextIndex += 1;\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true };\n }\n });\n };\n ObservableSet.prototype.keys = function () {\n return this.values();\n };\n ObservableSet.prototype.values = function () {\n this._atom.reportObserved();\n var self = this;\n var nextIndex = 0;\n var observableValues;\n if (this._data.values !== undefined) {\n observableValues = iteratorToArray(this._data.values());\n }\n else {\n // There is no values function in IE11\n observableValues = [];\n this._data.forEach(function (e) { return observableValues.push(e); });\n }\n return makeIterable({\n next: function () {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue(observableValues[nextIndex++]), done: false }\n : { done: true };\n }\n });\n };\n ObservableSet.prototype.replace = function (other) {\n var _this = this;\n if (isObservableSet(other)) {\n other = other.toJS();\n }\n transaction(function () {\n var prev = allowStateChangesStart(true);\n try {\n if (Array.isArray(other)) {\n _this.clear();\n other.forEach(function (value) { return _this.add(value); });\n }\n else if (isES6Set(other)) {\n _this.clear();\n other.forEach(function (value) { return _this.add(value); });\n }\n else if (other !== null && other !== undefined) {\n fail(\"Cannot initialize set from \" + other);\n }\n }\n finally {\n allowStateChangesEnd(prev);\n }\n });\n return this;\n };\n ObservableSet.prototype.observe = function (listener, fireImmediately) {\n // TODO 'fireImmediately' can be true?\n process.env.NODE_ENV !== \"production\" &&\n invariant(fireImmediately !== true, \"`observe` doesn't support fireImmediately=true in combination with sets.\");\n return registerListener(this, listener);\n };\n ObservableSet.prototype.intercept = function (handler) {\n return registerInterceptor(this, handler);\n };\n ObservableSet.prototype.toJS = function () {\n return new Set(this);\n };\n ObservableSet.prototype.toString = function () {\n return this.name + \"[ \" + iteratorToArray(this.keys()).join(\", \") + \" ]\";\n };\n return ObservableSet;\n}());\ndeclareIterator(ObservableSet.prototype, function () {\n return this.values();\n});\naddHiddenFinalProp(ObservableSet.prototype, toStringTagSymbol(), \"Set\");\nvar isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet);\n\nvar ObservableObjectAdministration = /** @class */ (function () {\n function ObservableObjectAdministration(target, name, defaultEnhancer) {\n this.target = target;\n this.name = name;\n this.defaultEnhancer = defaultEnhancer;\n this.values = {};\n }\n ObservableObjectAdministration.prototype.read = function (owner, key) {\n if (process.env.NODE_ENV === \"production\" && this.target !== owner) {\n this.illegalAccess(owner, key);\n if (!this.values[key])\n return undefined;\n }\n return this.values[key].get();\n };\n ObservableObjectAdministration.prototype.write = function (owner, key, newValue) {\n var instance = this.target;\n if (process.env.NODE_ENV === \"production\" && instance !== owner) {\n this.illegalAccess(owner, key);\n }\n var observable = this.values[key];\n if (observable instanceof ComputedValue) {\n observable.set(newValue);\n return;\n }\n // intercept\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n type: \"update\",\n object: instance,\n name: key,\n newValue: newValue\n });\n if (!change)\n return;\n newValue = change.newValue;\n }\n newValue = observable.prepareNewValue(newValue);\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n var change = notify || notifySpy\n ? {\n type: \"update\",\n object: instance,\n oldValue: observable.value,\n name: key,\n newValue: newValue\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: this.name, key: key }));\n observable.setNewValue(newValue);\n if (notify)\n notifyListeners(this, change);\n if (notifySpy)\n spyReportEnd();\n }\n };\n ObservableObjectAdministration.prototype.remove = function (key) {\n if (!this.values[key])\n return;\n var target = this.target;\n if (hasInterceptors(this)) {\n var change = interceptChange(this, {\n object: target,\n name: key,\n type: \"remove\"\n });\n if (!change)\n return;\n }\n try {\n startBatch();\n var notify = hasListeners(this);\n var notifySpy = isSpyEnabled();\n var oldValue = this.values[key].get();\n if (this.keys)\n this.keys.remove(key);\n delete this.values[key];\n delete this.target[key];\n var change = notify || notifySpy\n ? {\n type: \"remove\",\n object: target,\n oldValue: oldValue,\n name: key\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: this.name, key: key }));\n if (notify)\n notifyListeners(this, change);\n if (notifySpy)\n spyReportEnd();\n }\n finally {\n endBatch();\n }\n };\n ObservableObjectAdministration.prototype.illegalAccess = function (owner, propName) {\n /**\n * This happens if a property is accessed through the prototype chain, but the property was\n * declared directly as own property on the prototype.\n *\n * E.g.:\n * class A {\n * }\n * extendObservable(A.prototype, { x: 1 })\n *\n * classB extens A {\n * }\n * console.log(new B().x)\n *\n * It is unclear whether the property should be considered 'static' or inherited.\n * Either use `console.log(A.x)`\n * or: decorate(A, { x: observable })\n *\n * When using decorate, the property will always be redeclared as own property on the actual instance\n */\n console.warn(\"Property '\" + propName + \"' of '\" + owner + \"' was accessed through the prototype chain. Use 'decorate' instead to declare the prop or access it statically through it's owner\");\n };\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n ObservableObjectAdministration.prototype.observe = function (callback, fireImmediately) {\n process.env.NODE_ENV !== \"production\" &&\n invariant(fireImmediately !== true, \"`observe` doesn't support the fire immediately property for observable objects.\");\n return registerListener(this, callback);\n };\n ObservableObjectAdministration.prototype.intercept = function (handler) {\n return registerInterceptor(this, handler);\n };\n ObservableObjectAdministration.prototype.getKeys = function () {\n var _this = this;\n if (this.keys === undefined) {\n this.keys = (new ObservableArray(Object.keys(this.values).filter(function (key) { return _this.values[key] instanceof ObservableValue; }), referenceEnhancer, \"keys(\" + this.name + \")\", true));\n }\n return this.keys.slice();\n };\n return ObservableObjectAdministration;\n}());\nfunction asObservableObject(target, name, defaultEnhancer) {\n if (name === void 0) { name = \"\"; }\n if (defaultEnhancer === void 0) { defaultEnhancer = deepEnhancer; }\n var adm = target.$mobx;\n if (adm)\n return adm;\n process.env.NODE_ENV !== \"production\" &&\n invariant(Object.isExtensible(target), \"Cannot make the designated object observable; it is not extensible\");\n if (!isPlainObject(target))\n name = (target.constructor.name || \"ObservableObject\") + \"@\" + getNextId();\n if (!name)\n name = \"ObservableObject@\" + getNextId();\n adm = new ObservableObjectAdministration(target, name, defaultEnhancer);\n addHiddenFinalProp(target, \"$mobx\", adm);\n return adm;\n}\nfunction defineObservableProperty(target, propName, newValue, enhancer) {\n var adm = asObservableObject(target);\n assertPropertyConfigurable(target, propName);\n if (hasInterceptors(adm)) {\n var change = interceptChange(adm, {\n object: target,\n name: propName,\n type: \"add\",\n newValue: newValue\n });\n if (!change)\n return;\n newValue = change.newValue;\n }\n var observable = (adm.values[propName] = new ObservableValue(newValue, enhancer, adm.name + \".\" + propName, false));\n newValue = observable.value; // observableValue might have changed it\n Object.defineProperty(target, propName, generateObservablePropConfig(propName));\n if (adm.keys)\n adm.keys.push(propName);\n notifyPropertyAddition(adm, target, propName, newValue);\n}\nfunction defineComputedProperty(target, // which objects holds the observable and provides `this` context?\npropName, options) {\n var adm = asObservableObject(target);\n options.name = adm.name + \".\" + propName;\n options.context = target;\n adm.values[propName] = new ComputedValue(options);\n Object.defineProperty(target, propName, generateComputedPropConfig(propName));\n}\nvar observablePropertyConfigs = Object.create(null);\nvar computedPropertyConfigs = Object.create(null);\nfunction generateObservablePropConfig(propName) {\n return (observablePropertyConfigs[propName] ||\n (observablePropertyConfigs[propName] = {\n configurable: true,\n enumerable: true,\n get: function () {\n return this.$mobx.read(this, propName);\n },\n set: function (v) {\n this.$mobx.write(this, propName, v);\n }\n }));\n}\nfunction getAdministrationForComputedPropOwner(owner) {\n var adm = owner.$mobx;\n if (!adm) {\n // because computed props are declared on proty,\n // the current instance might not have been initialized yet\n initializeInstance(owner);\n return owner.$mobx;\n }\n return adm;\n}\nfunction generateComputedPropConfig(propName) {\n return (computedPropertyConfigs[propName] ||\n (computedPropertyConfigs[propName] = {\n configurable: globalState.computedConfigurable,\n enumerable: false,\n get: function () {\n return getAdministrationForComputedPropOwner(this).read(this, propName);\n },\n set: function (v) {\n getAdministrationForComputedPropOwner(this).write(this, propName, v);\n }\n }));\n}\nfunction notifyPropertyAddition(adm, object, key, newValue) {\n var notify = hasListeners(adm);\n var notifySpy = isSpyEnabled();\n var change = notify || notifySpy\n ? {\n type: \"add\",\n object: object,\n name: key,\n newValue: newValue\n }\n : null;\n if (notifySpy)\n spyReportStart(__assign(__assign({}, change), { name: adm.name, key: key }));\n if (notify)\n notifyListeners(adm, change);\n if (notifySpy)\n spyReportEnd();\n}\nvar isObservableObjectAdministration = createInstanceofPredicate(\"ObservableObjectAdministration\", ObservableObjectAdministration);\nfunction isObservableObject(thing) {\n if (isObject(thing)) {\n // Initializers run lazily when transpiling to babel, so make sure they are run...\n initializeInstance(thing);\n return isObservableObjectAdministration(thing.$mobx);\n }\n return false;\n}\n\nfunction getAtom(thing, property) {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined)\n fail(process.env.NODE_ENV !== \"production\" &&\n \"It is not possible to get index atoms from arrays\");\n return thing.$mobx.atom;\n }\n if (isObservableSet(thing)) {\n return thing.$mobx;\n }\n if (isObservableMap(thing)) {\n var anyThing = thing;\n if (property === undefined)\n return anyThing._keysAtom;\n var observable = anyThing._data.get(property) || anyThing._hasMap.get(property);\n if (!observable)\n fail(process.env.NODE_ENV !== \"production\" &&\n \"the entry '\" + property + \"' does not exist in the observable map '\" + getDebugName(thing) + \"'\");\n return observable;\n }\n // Initializers run lazily when transpiling to babel, so make sure they are run...\n initializeInstance(thing);\n if (property && !thing.$mobx)\n thing[property]; // See #1072\n if (isObservableObject(thing)) {\n if (!property)\n return fail(process.env.NODE_ENV !== \"production\" && \"please specify a property\");\n var observable = thing.$mobx.values[property];\n if (!observable)\n fail(process.env.NODE_ENV !== \"production\" &&\n \"no observable property '\" + property + \"' found on the observable object '\" + getDebugName(thing) + \"'\");\n return observable;\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing;\n }\n }\n else if (typeof thing === \"function\") {\n if (isReaction(thing.$mobx)) {\n // disposer function\n return thing.$mobx;\n }\n }\n return fail(process.env.NODE_ENV !== \"production\" && \"Cannot obtain atom from \" + thing);\n}\nfunction getAdministration(thing, property) {\n if (!thing)\n fail(\"Expecting some object\");\n if (property !== undefined)\n return getAdministration(getAtom(thing, property));\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing))\n return thing;\n if (isObservableMap(thing) || isObservableSet(thing))\n return thing;\n // Initializers run lazily when transpiling to babel, so make sure they are run...\n initializeInstance(thing);\n if (thing.$mobx)\n return thing.$mobx;\n fail(process.env.NODE_ENV !== \"production\" && \"Cannot obtain administration from \" + thing);\n}\nfunction getDebugName(thing, property) {\n var named;\n if (property !== undefined)\n named = getAtom(thing, property);\n else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing))\n named = getAdministration(thing);\n else\n named = getAtom(thing); // valid for arrays as well\n return named.name;\n}\n\nvar toString = Object.prototype.toString;\nfunction deepEqual(a, b, depth) {\n if (depth === void 0) { depth = -1; }\n return eq(a, b, depth);\n}\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a, b, depth, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b)\n return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null)\n return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a)\n return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\")\n return false;\n // Unwrap any wrapped objects.\n a = unwrap(a);\n b = unwrap(b);\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b))\n return false;\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b;\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a)\n return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case \"[object Symbol]\":\n return (\n // eslint-disable-next-line\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b));\n }\n var areArrays = className === \"[object Array]\";\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\")\n return false;\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor &&\n !(typeof aCtor === \"function\" &&\n aCtor instanceof aCtor &&\n typeof bCtor === \"function\" &&\n bCtor instanceof bCtor) &&\n (\"constructor\" in a && \"constructor\" in b)) {\n return false;\n }\n }\n if (depth === 0) {\n return false;\n }\n else if (depth < 0) {\n depth = -1;\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a)\n return bStack[length] === b;\n }\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length)\n return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack))\n return false;\n }\n }\n else {\n // Deep compare objects.\n var keys = Object.keys(a);\n var key = void 0;\n length = keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length)\n return false;\n while (length--) {\n // Deep compare each member\n key = keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack)))\n return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\nfunction unwrap(a) {\n if (isObservableArray(a))\n return a.peek();\n if (isES6Map(a) || isObservableMap(a))\n return iteratorToArray(a.entries());\n if (isES6Set(a) || isObservableSet(a))\n return iteratorToArray(a.entries());\n return a;\n}\nfunction has$1(a, key) {\n return Object.prototype.hasOwnProperty.call(a, key);\n}\n\n/**\n * (c) Michel Weststrate 2015 - 2019\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get an global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\ntry {\n // define process.env if needed\n // if this is not a production build in the first place\n // (in which case the expression below would be substituted with 'production')\n // tslint:disable-next-line\n process.env.NODE_ENV;\n}\ncatch (e) {\n var g = getGlobal();\n if (typeof process === \"undefined\")\n g.process = {};\n g.process.env = {};\n}\n(function () {\n function testCodeMinification() { }\n if (testCodeMinification.name !== \"testCodeMinification\" &&\n process.env.NODE_ENV !== \"production\" &&\n typeof process !== 'undefined' && process.env.IGNORE_MOBX_MINIFY_WARNING !== \"true\") {\n // trick so it doesn't get replaced\n var varName = [\"process\", \"env\", \"NODE_ENV\"].join(\".\");\n console.warn(\"[mobx] you are running a minified build, but '\" + varName + \"' was not set to 'production' in your bundler. This results in an unnecessarily large and slow bundle\");\n }\n})();\n// forward compatibility with mobx, so that packages can easily support mobx 4 & 5\nvar $mobx = \"$mobx\";\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy: spy,\n extras: {\n getDebugName: getDebugName\n },\n $mobx: $mobx\n });\n}\n// TODO: remove in some future build\nif (process.env.NODE_ENV !== \"production\" &&\n typeof module !== \"undefined\" &&\n typeof module.exports !== \"undefined\") {\n var warnedAboutDefaultExport_1 = false;\n Object.defineProperty(module.exports, \"default\", {\n enumerable: false,\n get: function () {\n if (!warnedAboutDefaultExport_1) {\n warnedAboutDefaultExport_1 = true;\n console.warn(\"The MobX package does not have a default export. Use 'import { thing } from \\\"mobx\\\"' (recommended) or 'import * as mobx from \\\"mobx\\\"' instead.\\\"\");\n }\n return undefined;\n }\n });\n [\n \"extras\",\n \"Atom\",\n \"BaseAtom\",\n \"asFlat\",\n \"asMap\",\n \"asReference\",\n \"asStructure\",\n \"autorunAsync\",\n \"createTranformer\",\n \"expr\",\n \"isModifierDescriptor\",\n \"isStrictModeEnabled\",\n \"map\",\n \"useStrict\",\n \"whyRun\"\n ].forEach(function (prop) {\n Object.defineProperty(module.exports, prop, {\n enumerable: false,\n get: function () {\n fail(\"'\" + prop + \"' is no longer part of the public MobX api. Please consult the changelog to find out where this functionality went\");\n },\n set: function () { }\n });\n });\n}\n\nexport { $mobx, FlowCancellationError, IDerivationState, ObservableMap, ObservableSet, Reaction, allowStateChanges as _allowStateChanges, allowStateChangesInsideComputed as _allowStateChangesInsideComputed, allowStateReadsEnd as _allowStateReadsEnd, allowStateReadsStart as _allowStateReadsStart, _endAction, getAdministration as _getAdministration, getGlobalState as _getGlobalState, interceptReads as _interceptReads, isComputingDerivation as _isComputingDerivation, resetGlobalState as _resetGlobalState, _startAction, action, autorun, comparer, computed, configure, createAtom, decorate, entries, extendObservable, extendShallowObservable, flow, get, getAtom, getDebugName, getDependencyTree, getObserverTree, has, intercept, isAction, isArrayLike, isObservableValue as isBoxedObservable, isComputed, isComputedProp, isFlowCancellationError, isObservable, isObservableArray, isObservableMap, isObservableObject, isObservableProp, isObservableSet, keys, observable, observe, onBecomeObserved, onBecomeUnobserved, onReactionError, reaction, remove, runInAction, set, spy, toJS, trace, transaction, untracked, values, when };\n","/** @license mobx-react v5.4.4\n * index.module.js\n *\n * Copyright (c) 2015 Michel Weststrate.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { isObservableArray, isObservableObject, isObservableMap, untracked, createAtom, Reaction, _allowStateChanges, $mobx, spy, configure, getDebugName } from 'mobx';\nimport React__default, { Component, createElement, PureComponent, forwardRef, Children } from 'react';\nimport { findDOMNode, unstable_batchedUpdates } from 'react-dom';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\n// These functions can be stubbed out in specific environments\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,r=b?Symbol.for(\"react.memo\"):\n60115,t=b?Symbol.for(\"react.lazy\"):60116;function u(a){if(\"object\"===typeof a&&null!==a){var q=a.$$typeof;switch(q){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return q}}case d:return q}}}function v(a){return u(a)===m}exports.typeOf=u;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;\nexports.Profiler=g;exports.Portal=d;exports.StrictMode=f;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||u(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return u(a)===k};exports.isContextProvider=function(a){return u(a)===h};\nexports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return u(a)===n};exports.isFragment=function(a){return u(a)===e};exports.isProfiler=function(a){return u(a)===g};exports.isPortal=function(a){return u(a)===d};exports.isStrictMode=function(a){return u(a)===f};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Profiler;\nvar reactIs_production_min_10 = reactIs_production_min.Portal;\nvar reactIs_production_min_11 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_12 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_13 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_14 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_15 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_16 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_17 = reactIs_production_min.isElement;\nvar reactIs_production_min_18 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_19 = reactIs_production_min.isFragment;\nvar reactIs_production_min_20 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_21 = reactIs_production_min.isPortal;\nvar reactIs_production_min_22 = reactIs_production_min.isStrictMode;\n\nvar reactIs = createCommonjsModule(function (module) {\n\n{\n module.exports = reactIs_production_min;\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar EventEmitter =\n/*#__PURE__*/\nfunction () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.listeners = [];\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(cb) {\n var _this = this;\n\n this.listeners.push(cb);\n return function () {\n var index = _this.listeners.indexOf(cb);\n\n if (index !== -1) _this.listeners.splice(index, 1);\n };\n }\n }, {\n key: \"emit\",\n value: function emit(data) {\n this.listeners.forEach(function (fn) {\n return fn(data);\n });\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = new Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n\n return untracked(function () {\n componentName = componentName || \"<>\";\n propFullName = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n var actual = props[propName] === null ? \"null\" : \"undefined\";\n return new Error(\"The \" + location + \" `\" + propFullName + \"` is marked as required \" + \"in `\" + componentName + \"`, but its value is `\" + actual + \"`.\");\n }\n\n return null;\n } else {\n return validate.apply(void 0, [props, propName, componentName, location, propFullName].concat(rest));\n }\n });\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n} // Copied from React.PropTypes\n\n\nfunction isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === \"symbol\") {\n return true;\n } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\n\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true;\n } // Fallback for non-spec compliant Symbols which are polyfilled.\n\n\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n} // Copied from React.PropTypes\n\n\nfunction getPropType(propValue) {\n var propType = _typeof(propValue);\n\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n\n if (isSymbol(propType, propValue)) {\n return \"symbol\";\n }\n\n return propType;\n} // This handles more types than `getPropType`. Only used for error messages.\n// Copied from React.PropTypes\n\n\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\";\n } else if (propValue instanceof RegExp) {\n return \"regexp\";\n }\n }\n\n return propType;\n}\n\nfunction createObservableTypeCheckerCreator(allowNativeType, mobxType) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n return untracked(function () {\n if (allowNativeType) {\n if (getPropType(props[propName]) === mobxType.toLowerCase()) return null;\n }\n\n var mobxChecker;\n\n switch (mobxType) {\n case \"Array\":\n mobxChecker = isObservableArray;\n break;\n\n case \"Object\":\n mobxChecker = isObservableObject;\n break;\n\n case \"Map\":\n mobxChecker = isObservableMap;\n break;\n\n default:\n throw new Error(\"Unexpected mobxType: \".concat(mobxType));\n }\n\n var propValue = props[propName];\n\n if (!mobxChecker(propValue)) {\n var preciseType = getPreciseType(propValue);\n var nativeTypeExpectationMessage = allowNativeType ? \" or javascript `\" + mobxType.toLowerCase() + \"`\" : \"\";\n return new Error(\"Invalid prop `\" + propFullName + \"` of type `\" + preciseType + \"` supplied to\" + \" `\" + componentName + \"`, expected `mobx.Observable\" + mobxType + \"`\" + nativeTypeExpectationMessage + \".\");\n }\n\n return null;\n });\n });\n}\n\nfunction createObservableArrayOfTypeChecker(allowNativeType, typeChecker) {\n return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 5 ? _len2 - 5 : 0), _key2 = 5; _key2 < _len2; _key2++) {\n rest[_key2 - 5] = arguments[_key2];\n }\n\n return untracked(function () {\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has \" + \"invalid PropType notation.\");\n }\n\n var error = createObservableTypeCheckerCreator(allowNativeType, \"Array\")(props, propName, componentName);\n if (error instanceof Error) return error;\n var propValue = props[propName];\n\n for (var i = 0; i < propValue.length; i++) {\n error = typeChecker.apply(void 0, [propValue, i, componentName, location, propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) return error;\n }\n\n return null;\n });\n });\n}\n\nvar observableArray = createObservableTypeCheckerCreator(false, \"Array\");\nvar observableArrayOf = createObservableArrayOfTypeChecker.bind(null, false);\nvar observableMap = createObservableTypeCheckerCreator(false, \"Map\");\nvar observableObject = createObservableTypeCheckerCreator(false, \"Object\");\nvar arrayOrObservableArray = createObservableTypeCheckerCreator(true, \"Array\");\nvar arrayOrObservableArrayOf = createObservableArrayOfTypeChecker.bind(null, true);\nvar objectOrObservableObject = createObservableTypeCheckerCreator(true, \"Object\");\n\nvar propTypes = /*#__PURE__*/Object.freeze({\n observableArray: observableArray,\n observableArrayOf: observableArrayOf,\n observableMap: observableMap,\n observableObject: observableObject,\n arrayOrObservableArray: arrayOrObservableArray,\n arrayOrObservableArrayOf: arrayOrObservableArrayOf,\n objectOrObservableObject: objectOrObservableObject\n});\n\nfunction isStateless(component) {\n // `function() {}` has prototype, but `() => {}` doesn't\n // `() => {}` via Babel has prototype too.\n return !(component.prototype && component.prototype.render);\n}\nvar symbolId = 0;\n\nfunction createSymbol(name) {\n if (typeof Symbol === \"function\") {\n return Symbol(name);\n }\n\n var symbol = \"__$mobx-react \".concat(name, \" (\").concat(symbolId, \")\");\n symbolId++;\n return symbol;\n}\n\nvar createdSymbols = {};\nfunction newSymbol(name) {\n if (!createdSymbols[name]) {\n createdSymbols[name] = createSymbol(name);\n }\n\n return createdSymbols[name];\n}\nvar mobxMixins = newSymbol(\"patchMixins\");\nvar mobxPatchedDefinition = newSymbol(\"patchedDefinition\");\n\nfunction getMixins(target, methodName) {\n var mixins = target[mobxMixins] = target[mobxMixins] || {};\n var methodMixins = mixins[methodName] = mixins[methodName] || {};\n methodMixins.locks = methodMixins.locks || 0;\n methodMixins.methods = methodMixins.methods || [];\n return methodMixins;\n}\n\nfunction wrapper(realMethod, mixins) {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++;\n\n try {\n var retVal;\n\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args);\n }\n\n return retVal;\n } finally {\n mixins.locks--;\n\n if (mixins.locks === 0) {\n mixins.methods.forEach(function (mx) {\n mx.apply(_this, args);\n });\n }\n }\n}\n\nfunction wrapFunction(realMethod, mixins) {\n var fn = function fn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n wrapper.call.apply(wrapper, [this, realMethod, mixins].concat(args));\n };\n\n return fn;\n}\n\nfunction patch(target, methodName) {\n var mixins = getMixins(target, methodName);\n\n for (var _len3 = arguments.length, mixinMethods = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n mixinMethods[_key3 - 2] = arguments[_key3];\n }\n\n for (var _i = 0; _i < mixinMethods.length; _i++) {\n var mixinMethod = mixinMethods[_i];\n\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod);\n }\n }\n\n var oldDefinition = Object.getOwnPropertyDescriptor(target, methodName);\n\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return;\n }\n\n var originalMethod = target[methodName];\n var newDefinition = createDefinition(target, methodName, oldDefinition ? oldDefinition.enumerable : undefined, mixins, originalMethod);\n Object.defineProperty(target, methodName, newDefinition);\n}\n\nfunction createDefinition(target, methodName, enumerable, mixins, originalMethod) {\n var _ref;\n\n var wrappedFunc = wrapFunction(originalMethod, mixins);\n return _ref = {}, _defineProperty(_ref, mobxPatchedDefinition, true), _defineProperty(_ref, \"get\", function get() {\n return wrappedFunc;\n }), _defineProperty(_ref, \"set\", function set(value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins);\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n var newDefinition = createDefinition(this, methodName, enumerable, mixins, value);\n Object.defineProperty(this, methodName, newDefinition);\n }\n }), _defineProperty(_ref, \"configurable\", true), _defineProperty(_ref, \"enumerable\", enumerable), _ref;\n}\n\nvar injectorContextTypes = {\n mobxStores: objectOrObservableObject\n};\nObject.seal(injectorContextTypes);\nvar proxiedInjectorProps = {\n contextTypes: {\n get: function get() {\n return injectorContextTypes;\n },\n set: function set(_) {\n console.warn(\"Mobx Injector: you are trying to attach `contextTypes` on an component decorated with `inject` (or `observer`) HOC. Please specify the contextTypes on the wrapped component instead. It is accessible through the `wrappedComponent`\");\n },\n configurable: true,\n enumerable: false\n },\n isMobxInjector: {\n value: true,\n writable: true,\n configurable: true,\n enumerable: true\n }\n /**\n * Store Injection\n */\n\n};\n\nfunction createStoreInjector(grabStoresFn, component, injectNames) {\n var displayName = \"inject-\" + (component.displayName || component.name || component.constructor && component.constructor.name || \"Unknown\");\n if (injectNames) displayName += \"-with-\" + injectNames;\n\n var Injector =\n /*#__PURE__*/\n function (_Component) {\n _inherits(Injector, _Component);\n\n function Injector() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Injector);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Injector)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.storeRef = function (instance) {\n _this.wrappedInstance = instance;\n };\n\n return _this;\n }\n\n _createClass(Injector, [{\n key: \"render\",\n value: function render() {\n // Optimization: it might be more efficient to apply the mapper function *outside* the render method\n // (if the mapper is a function), that could avoid expensive(?) re-rendering of the injector component\n // See this test: 'using a custom injector is not too reactive' in inject.js\n var newProps = {};\n\n for (var key in this.props) {\n if (this.props.hasOwnProperty(key)) {\n newProps[key] = this.props[key];\n }\n }\n\n var additionalProps = grabStoresFn(this.context.mobxStores || {}, newProps, this.context) || {};\n\n for (var _key2 in additionalProps) {\n newProps[_key2] = additionalProps[_key2];\n }\n\n if (!isStateless(component)) {\n newProps.ref = this.storeRef;\n }\n\n return createElement(component, newProps);\n }\n }]);\n\n return Injector;\n }(Component); // Static fields from component should be visible on the generated Injector\n\n\n Injector.displayName = displayName;\n hoistNonReactStatics_cjs(Injector, component);\n Injector.wrappedComponent = component;\n Object.defineProperties(Injector, proxiedInjectorProps);\n return Injector;\n}\n\nfunction grabStoresByName(storeNames) {\n return function (baseStores, nextProps) {\n storeNames.forEach(function (storeName) {\n if (storeName in nextProps // prefer props over stores\n ) return;\n if (!(storeName in baseStores)) throw new Error(\"MobX injector: Store '\" + storeName + \"' is not available! Make sure it is provided by some Provider\");\n nextProps[storeName] = baseStores[storeName];\n });\n return nextProps;\n };\n}\n/**\n * higher order component that injects stores to a child.\n * takes either a varargs list of strings, which are stores read from the context,\n * or a function that manually maps the available stores from the context to props:\n * storesToProps(mobxStores, props, context) => newProps\n */\n\n\nfunction inject()\n/* fn(stores, nextProps) or ...storeNames */\n{\n var grabStoresFn;\n\n if (typeof arguments[0] === \"function\") {\n grabStoresFn = arguments[0];\n return function (componentClass) {\n var injected = createStoreInjector(grabStoresFn, componentClass);\n injected.isMobxInjector = false; // supress warning\n // mark the Injector as observer, to make it react to expressions in `grabStoresFn`,\n // see #111\n\n injected = observer(injected);\n injected.isMobxInjector = true; // restore warning\n\n return injected;\n };\n } else {\n var storeNames = [];\n\n for (var i = 0; i < arguments.length; i++) {\n storeNames[i] = arguments[i];\n }\n\n grabStoresFn = grabStoresByName(storeNames);\n return function (componentClass) {\n return createStoreInjector(grabStoresFn, componentClass, storeNames.join(\"-\"));\n };\n }\n}\n\nvar mobxAdminProperty = $mobx || \"$mobx\";\nvar mobxIsUnmounted = newSymbol(\"isUnmounted\");\n/**\n * dev tool support\n */\n\nvar isDevtoolsEnabled = false;\nvar isUsingStaticRendering = false;\nvar warnedAboutObserverInjectDeprecation = false; // WeakMap;\n\nvar componentByNodeRegistry = typeof WeakMap !== \"undefined\" ? new WeakMap() : undefined;\nvar renderReporter = new EventEmitter();\nvar skipRenderKey = newSymbol(\"skipRender\");\nvar isForcingUpdateKey = newSymbol(\"isForcingUpdate\"); // Using react-is had some issues (and operates on elements, not on types), see #608 / #609\n\nvar ReactForwardRefSymbol = typeof forwardRef === \"function\" && forwardRef(function (_props, _ref) {})[\"$$typeof\"];\n/**\n * Helper to set `prop` to `this` as non-enumerable (hidden prop)\n * @param target\n * @param prop\n * @param value\n */\n\nfunction setHiddenProp(target, prop, value) {\n if (!Object.hasOwnProperty.call(target, prop)) {\n Object.defineProperty(target, prop, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: value\n });\n } else {\n target[prop] = value;\n }\n}\n\nfunction findDOMNode$2(component) {\n if (findDOMNode) {\n try {\n return findDOMNode(component);\n } catch (e) {\n // findDOMNode will throw in react-test-renderer, see:\n // See https://github.com/mobxjs/mobx-react/issues/216\n // Is there a better heuristic?\n return null;\n }\n }\n\n return null;\n}\n\nfunction reportRendering(component) {\n var node = findDOMNode$2(component);\n if (node && componentByNodeRegistry) componentByNodeRegistry.set(node, component);\n renderReporter.emit({\n event: \"render\",\n renderTime: component.__$mobRenderEnd - component.__$mobRenderStart,\n totalTime: Date.now() - component.__$mobRenderStart,\n component: component,\n node: node\n });\n}\n\nfunction trackComponents() {\n if (typeof WeakMap === \"undefined\") throw new Error(\"[mobx-react] tracking components is not supported in this browser.\");\n if (!isDevtoolsEnabled) isDevtoolsEnabled = true;\n}\nfunction useStaticRendering(useStaticRendering) {\n isUsingStaticRendering = useStaticRendering;\n}\n/**\n * Errors reporter\n */\n\nvar errorsReporter = new EventEmitter();\n/**\n * Utilities\n */\n\nfunction patch$1(target, funcName) {\n patch(target, funcName, reactiveMixin[funcName]);\n}\n\nfunction shallowEqual(objA, objB) {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) return true;\n\n if (_typeof(objA) !== \"object\" || objA === null || _typeof(objB) !== \"object\" || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction is(x, y) {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction makeComponentReactive(render) {\n var _this2 = this;\n\n if (isUsingStaticRendering === true) return render.call(this);\n\n function reactiveRender() {\n var _this = this;\n\n isRenderingPending = false;\n var exception = undefined;\n var rendering = undefined;\n reaction.track(function () {\n if (isDevtoolsEnabled) {\n _this.__$mobRenderStart = Date.now();\n }\n\n try {\n rendering = _allowStateChanges(false, baseRender);\n } catch (e) {\n exception = e;\n }\n\n if (isDevtoolsEnabled) {\n _this.__$mobRenderEnd = Date.now();\n }\n });\n\n if (exception) {\n errorsReporter.emit(exception);\n throw exception;\n }\n\n return rendering;\n } // Generate friendly name for debugging\n\n\n var initialName = this.displayName || this.name || this.constructor && (this.constructor.displayName || this.constructor.name) || \"\";\n var rootNodeID = this._reactInternalInstance && this._reactInternalInstance._rootNodeID || this._reactInternalInstance && this._reactInternalInstance._debugID || this._reactInternalFiber && this._reactInternalFiber._debugID;\n /**\n * If props are shallowly modified, react will render anyway,\n * so atom.reportChanged() should not result in yet another re-render\n */\n\n setHiddenProp(this, skipRenderKey, false);\n /**\n * forceUpdate will re-assign this.props. We don't want that to cause a loop,\n * so detect these changes\n */\n\n setHiddenProp(this, isForcingUpdateKey, false); // wire up reactive render\n\n var baseRender = render.bind(this);\n var isRenderingPending = false;\n var reaction = new Reaction(\"\".concat(initialName, \"#\").concat(rootNodeID, \".render()\"), function () {\n if (!isRenderingPending) {\n // N.B. Getting here *before mounting* means that a component constructor has side effects (see the relevant test in misc.js)\n // This unidiomatic React usage but React will correctly warn about this so we continue as usual\n // See #85 / Pull #44\n isRenderingPending = true;\n if (typeof _this2.componentWillReact === \"function\") _this2.componentWillReact(); // TODO: wrap in action?\n\n if (_this2[mobxIsUnmounted] !== true) {\n // If we are unmounted at this point, componentWillReact() had a side effect causing the component to unmounted\n // TODO: remove this check? Then react will properly warn about the fact that this should not happen? See #73\n // However, people also claim this might happen during unit tests..\n var hasError = true;\n\n try {\n setHiddenProp(_this2, isForcingUpdateKey, true);\n if (!_this2[skipRenderKey]) Component.prototype.forceUpdate.call(_this2);\n hasError = false;\n } finally {\n setHiddenProp(_this2, isForcingUpdateKey, false);\n if (hasError) reaction.dispose();\n }\n }\n }\n });\n reaction.reactComponent = this;\n reactiveRender[mobxAdminProperty] = reaction;\n this.render = reactiveRender;\n return reactiveRender.call(this);\n}\n/**\n * ReactiveMixin\n */\n\n\nvar reactiveMixin = {\n componentWillUnmount: function componentWillUnmount() {\n if (isUsingStaticRendering === true) return;\n this.render[mobxAdminProperty] && this.render[mobxAdminProperty].dispose();\n this[mobxIsUnmounted] = true;\n\n if (isDevtoolsEnabled) {\n var node = findDOMNode$2(this);\n\n if (node && componentByNodeRegistry) {\n componentByNodeRegistry.delete(node);\n }\n\n renderReporter.emit({\n event: \"destroy\",\n component: this,\n node: node\n });\n }\n },\n componentDidMount: function componentDidMount() {\n if (isDevtoolsEnabled) {\n reportRendering(this);\n }\n },\n componentDidUpdate: function componentDidUpdate() {\n if (isDevtoolsEnabled) {\n reportRendering(this);\n }\n },\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (isUsingStaticRendering) {\n console.warn(\"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\");\n } // update on any state changes (as is the default)\n\n\n if (this.state !== nextState) {\n return true;\n } // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n\n\n return !shallowEqual(this.props, nextProps);\n }\n};\n\nfunction makeObservableProp(target, propName) {\n var valueHolderKey = newSymbol(\"reactProp_\".concat(propName, \"_valueHolder\"));\n var atomHolderKey = newSymbol(\"reactProp_\".concat(propName, \"_atomHolder\"));\n\n function getAtom() {\n if (!this[atomHolderKey]) {\n setHiddenProp(this, atomHolderKey, createAtom(\"reactive \" + propName));\n }\n\n return this[atomHolderKey];\n }\n\n Object.defineProperty(target, propName, {\n configurable: true,\n enumerable: true,\n get: function get() {\n getAtom.call(this).reportObserved();\n return this[valueHolderKey];\n },\n set: function set(v) {\n if (!this[isForcingUpdateKey] && !shallowEqual(this[valueHolderKey], v)) {\n setHiddenProp(this, valueHolderKey, v);\n setHiddenProp(this, skipRenderKey, true);\n getAtom.call(this).reportChanged();\n setHiddenProp(this, skipRenderKey, false);\n } else {\n setHiddenProp(this, valueHolderKey, v);\n }\n }\n });\n}\n/**\n * Observer function / decorator\n */\n\n\nfunction observer(arg1, arg2) {\n if (typeof arg1 === \"string\") {\n throw new Error(\"Store names should be provided as array\");\n }\n\n if (Array.isArray(arg1)) {\n // TODO: remove in next major\n // component needs stores\n if (!warnedAboutObserverInjectDeprecation) {\n warnedAboutObserverInjectDeprecation = true;\n console.warn('Mobx observer: Using observer to inject stores is deprecated since 4.0. Use `@inject(\"store1\", \"store2\") @observer ComponentClass` or `inject(\"store1\", \"store2\")(observer(componentClass))` instead of `@observer([\"store1\", \"store2\"]) ComponentClass`');\n }\n\n if (!arg2) {\n // invoked as decorator\n return function (componentClass) {\n return observer(arg1, componentClass);\n };\n } else {\n return inject.apply(null, arg1)(observer(arg2));\n }\n }\n\n var componentClass = arg1;\n\n if (componentClass.isMobxInjector === true) {\n console.warn(\"Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'\");\n }\n\n if (componentClass.__proto__ === PureComponent) {\n console.warn(\"Mobx observer: You are using 'observer' on React.PureComponent. These two achieve two opposite goals and should not be used together\");\n } // Unwrap forward refs into `` component\n // we need to unwrap the render, because it is the inner render that needs to be tracked,\n // not the ForwardRef HoC\n\n\n if (ReactForwardRefSymbol && componentClass[\"$$typeof\"] === ReactForwardRefSymbol) {\n var _baseRender = componentClass.render;\n if (typeof _baseRender !== \"function\") throw new Error(\"render property of ForwardRef was not a function\"); // TODO: do we need to hoist statics from baseRender to the forward ref?\n\n return forwardRef(function ObserverForwardRef() {\n var _arguments = arguments;\n return React__default.createElement(Observer, null, function () {\n return _baseRender.apply(undefined, _arguments);\n });\n });\n } // Stateless function component:\n // If it is function but doesn't seem to be a react class constructor,\n // wrap it to a react class automatically\n\n\n if (typeof componentClass === \"function\" && (!componentClass.prototype || !componentClass.prototype.render) && !componentClass.isReactClass && !Component.isPrototypeOf(componentClass)) {\n var _class, _temp;\n\n var observerComponent = observer((_temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inherits(_class, _Component);\n\n function _class() {\n _classCallCheck(this, _class);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(_class).apply(this, arguments));\n }\n\n _createClass(_class, [{\n key: \"render\",\n value: function render() {\n return componentClass.call(this, this.props, this.context);\n }\n }]);\n\n return _class;\n }(Component), _class.displayName = componentClass.displayName || componentClass.name, _class.contextTypes = componentClass.contextTypes, _class.propTypes = componentClass.propTypes, _class.defaultProps = componentClass.defaultProps, _temp));\n hoistNonReactStatics_cjs(observerComponent, componentClass);\n return observerComponent;\n }\n\n if (!componentClass) {\n throw new Error(\"Please pass a valid component to 'observer'\");\n }\n\n var target = componentClass.prototype || componentClass;\n mixinLifecycleEvents(target);\n componentClass.isMobXReactObserver = true;\n makeObservableProp(target, \"props\");\n makeObservableProp(target, \"state\");\n var baseRender = target.render;\n\n target.render = function () {\n return makeComponentReactive.call(this, baseRender);\n };\n\n return componentClass;\n}\n\nfunction mixinLifecycleEvents(target) {\n [\"componentDidMount\", \"componentWillUnmount\", \"componentDidUpdate\"].forEach(function (funcName) {\n patch$1(target, funcName);\n });\n\n if (!target.shouldComponentUpdate) {\n target.shouldComponentUpdate = reactiveMixin.shouldComponentUpdate;\n } else {\n if (target.shouldComponentUpdate !== reactiveMixin.shouldComponentUpdate) {\n // TODO: make throw in next major\n console.warn(\"Use `shouldComponentUpdate` in an `observer` based component breaks the behavior of `observer` and might lead to unexpected results. Manually implementing `sCU` should not be needed when using mobx-react.\");\n }\n }\n}\n\nvar Observer = observer(function (_ref2) {\n var children = _ref2.children,\n observerInject = _ref2.inject,\n render = _ref2.render;\n var component = children || render;\n\n if (typeof component === \"undefined\") {\n return null;\n }\n\n if (!observerInject) {\n return component();\n } // TODO: remove in next major\n\n\n console.warn(\" is no longer supported. Please use inject on the enclosing component instead\");\n var InjectComponent = inject(observerInject)(component);\n return React__default.createElement(InjectComponent, null);\n});\nObserver.displayName = \"Observer\";\n\nvar ObserverPropsCheck = function ObserverPropsCheck(props, key, componentName, location, propFullName) {\n var extraKey = key === \"children\" ? \"render\" : \"children\";\n\n if (typeof props[key] === \"function\" && typeof props[extraKey] === \"function\") {\n return new Error(\"Invalid prop,do not use children and render in the same time in`\" + componentName);\n }\n\n if (typeof props[key] === \"function\" || typeof props[extraKey] === \"function\") {\n return;\n }\n\n return new Error(\"Invalid prop `\" + propFullName + \"` of type `\" + _typeof(props[key]) + \"` supplied to\" + \" `\" + componentName + \"`, expected `function`.\");\n};\n\nObserver.propTypes = {\n render: ObserverPropsCheck,\n children: ObserverPropsCheck\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component$$1) {\n var prototype = Component$$1.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component$$1.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component$$1;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component$$1.displayName || Component$$1.name;\n var newApiName =\n typeof Component$$1.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component$$1.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component$$1;\n}\n\nvar specialReactKeys = {\n children: true,\n key: true,\n ref: true\n};\n\nvar Provider =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Provider, _Component);\n\n function Provider(props, context) {\n var _this;\n\n _classCallCheck(this, Provider);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Provider).call(this, props, context));\n _this.state = {};\n copyStores(props, _this.state);\n return _this;\n }\n\n _createClass(Provider, [{\n key: \"render\",\n value: function render() {\n return Children.only(this.props.children);\n }\n }, {\n key: \"getChildContext\",\n value: function getChildContext() {\n var stores = {}; // inherit stores\n\n copyStores(this.context.mobxStores, stores); // add own stores\n\n copyStores(this.props, stores);\n return {\n mobxStores: stores\n };\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (!nextProps) return null;\n if (!prevState) return nextProps; // Maybe this warning is too aggressive?\n\n if (Object.keys(nextProps).filter(validStoreName).length !== Object.keys(prevState).filter(validStoreName).length) console.warn(\"MobX Provider: The set of provided stores has changed. Please avoid changing stores as the change might not propagate to all children\");\n if (!nextProps.suppressChangedStoreWarning) for (var key in nextProps) {\n if (validStoreName(key) && prevState[key] !== nextProps[key]) console.warn(\"MobX Provider: Provided store '\" + key + \"' has changed. Please avoid replacing stores as the change might not propagate to all children\");\n }\n return nextProps;\n }\n }]);\n\n return Provider;\n}(Component);\n\nProvider.contextTypes = {\n mobxStores: objectOrObservableObject\n};\nProvider.childContextTypes = {\n mobxStores: objectOrObservableObject.isRequired\n};\n\nfunction copyStores(from, to) {\n if (!from) return;\n\n for (var key in from) {\n if (validStoreName(key)) to[key] = from[key];\n }\n}\n\nfunction validStoreName(key) {\n return !specialReactKeys[key] && key !== \"suppressChangedStoreWarning\";\n} // TODO: kill in next major\n\n\npolyfill(Provider);\n\nvar storeKey = newSymbol(\"disposeOnUnmount\");\n\nfunction runDisposersOnWillUnmount() {\n var _this = this;\n\n if (!this[storeKey]) {\n // when disposeOnUnmount is only set to some instances of a component it will still patch the prototype\n return;\n }\n\n this[storeKey].forEach(function (propKeyOrFunction) {\n var prop = typeof propKeyOrFunction === \"string\" ? _this[propKeyOrFunction] : propKeyOrFunction;\n\n if (prop !== undefined && prop !== null) {\n if (typeof prop !== \"function\") {\n throw new Error(\"[mobx-react] disposeOnUnmount only works on functions such as disposers returned by reactions, autorun, etc.\");\n }\n\n prop();\n }\n });\n this[storeKey] = [];\n}\n\nfunction disposeOnUnmount(target, propertyKeyOrFunction) {\n if (Array.isArray(propertyKeyOrFunction)) {\n return propertyKeyOrFunction.map(function (fn) {\n return disposeOnUnmount(target, fn);\n });\n }\n\n if (!target instanceof Component) {\n throw new Error(\"[mobx-react] disposeOnUnmount only works on class based React components.\");\n }\n\n if (typeof propertyKeyOrFunction !== \"string\" && typeof propertyKeyOrFunction !== \"function\") {\n throw new Error(\"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\");\n } // add property key / function we want run (disposed) to the store\n\n\n var componentWasAlreadyModified = !!target[storeKey];\n var store = target[storeKey] || (target[storeKey] = []);\n store.push(propertyKeyOrFunction); // tweak the component class componentWillUnmount if not done already\n\n if (!componentWasAlreadyModified) {\n patch(target, \"componentWillUnmount\", runDisposersOnWillUnmount);\n } // return the disposer as is if invoked as a non decorator\n\n\n if (typeof propertyKeyOrFunction !== \"string\") {\n return propertyKeyOrFunction;\n }\n}\n\nif (!Component) throw new Error(\"mobx-react requires React to be available\");\nif (!spy) throw new Error(\"mobx-react requires mobx to be available\");\nif (typeof unstable_batchedUpdates === \"function\") configure({\n reactionScheduler: unstable_batchedUpdates\n});\nvar onError = function onError(fn) {\n return errorsReporter.on(fn);\n};\n\nif ((typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"undefined\" ? \"undefined\" : _typeof(__MOBX_DEVTOOLS_GLOBAL_HOOK__)) === \"object\") {\n var mobx = {\n spy: spy,\n extras: {\n getDebugName: getDebugName\n }\n };\n var mobxReact = {\n renderReporter: renderReporter,\n componentByNodeRegistry: componentByNodeRegistry,\n componentByNodeRegistery: componentByNodeRegistry,\n trackComponents: trackComponents\n };\n\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobxReact(mobxReact, mobx);\n}\n\nexport { propTypes, propTypes as PropTypes, onError, observer, Observer, renderReporter, componentByNodeRegistry as componentByNodeRegistery, componentByNodeRegistry, trackComponents, useStaticRendering, Provider, inject, disposeOnUnmount };\n","\"use strict\";\nexports.toDate = toDate;\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","\"use strict\";\nexports.Parser = void 0;\nvar _Setter = require(\"./Setter.js\");\n\nclass Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new _Setter.ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\nexports.Parser = Parser;\n","\"use strict\";\nexports.dayPeriodEnumToHours = dayPeriodEnumToHours;\nexports.isLeapYearIndex = isLeapYearIndex;\nexports.mapValue = mapValue;\nexports.normalizeTwoDigitYear = normalizeTwoDigitYear;\nexports.parseAnyDigitsSigned = parseAnyDigitsSigned;\nexports.parseNDigits = parseNDigits;\nexports.parseNDigitsSigned = parseNDigitsSigned;\nexports.parseNumericPattern = parseNumericPattern;\nexports.parseTimezonePattern = parseTimezonePattern;\nvar _index = require(\"../../constants.js\");\n\nvar _constants = require(\"./constants.js\");\n\nfunction mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nfunction parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nfunction parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * _index.millisecondsInHour +\n minutes * _index.millisecondsInMinute +\n seconds * _index.millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nfunction parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(\n _constants.numericPatterns.anyDigitsSigned,\n dateString,\n );\n}\n\nfunction parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(\n _constants.numericPatterns.singleDigit,\n dateString,\n );\n case 2:\n return parseNumericPattern(\n _constants.numericPatterns.twoDigits,\n dateString,\n );\n case 3:\n return parseNumericPattern(\n _constants.numericPatterns.threeDigits,\n dateString,\n );\n case 4:\n return parseNumericPattern(\n _constants.numericPatterns.fourDigits,\n dateString,\n );\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nfunction parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(\n _constants.numericPatterns.singleDigitSigned,\n dateString,\n );\n case 2:\n return parseNumericPattern(\n _constants.numericPatterns.twoDigitsSigned,\n dateString,\n );\n case 3:\n return parseNumericPattern(\n _constants.numericPatterns.threeDigitsSigned,\n dateString,\n );\n case 4:\n return parseNumericPattern(\n _constants.numericPatterns.fourDigitsSigned,\n dateString,\n );\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nfunction dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nexports.constructFrom = constructFrom;\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","\"use strict\";\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\n\nlet defaultOptions = {};\n\nfunction getDefaultOptions() {\n return defaultOptions;\n}\n\nfunction setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","\"use strict\";\nexports.secondsInYear =\n exports.secondsInWeek =\n exports.secondsInQuarter =\n exports.secondsInMonth =\n exports.secondsInMinute =\n exports.secondsInHour =\n exports.secondsInDay =\n exports.quartersInYear =\n exports.monthsInYear =\n exports.monthsInQuarter =\n exports.minutesInYear =\n exports.minutesInMonth =\n exports.minutesInHour =\n exports.minutesInDay =\n exports.minTime =\n exports.millisecondsInWeek =\n exports.millisecondsInSecond =\n exports.millisecondsInMinute =\n exports.millisecondsInHour =\n exports.millisecondsInDay =\n exports.maxTime =\n exports.daysInYear =\n exports.daysInWeek =\n void 0; /**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nconst daysInWeek = (exports.daysInWeek = 7);\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nconst daysInYear = (exports.daysInYear = 365.2425);\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nconst maxTime = (exports.maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000);\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nconst minTime = (exports.minTime = -maxTime);\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nconst millisecondsInWeek = (exports.millisecondsInWeek = 604800000);\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nconst millisecondsInDay = (exports.millisecondsInDay = 86400000);\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nconst millisecondsInMinute = (exports.millisecondsInMinute = 60000);\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nconst millisecondsInHour = (exports.millisecondsInHour = 3600000);\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nconst millisecondsInSecond = (exports.millisecondsInSecond = 1000);\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nconst minutesInYear = (exports.minutesInYear = 525600);\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nconst minutesInMonth = (exports.minutesInMonth = 43200);\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nconst minutesInDay = (exports.minutesInDay = 1440);\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nconst minutesInHour = (exports.minutesInHour = 60);\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nconst monthsInQuarter = (exports.monthsInQuarter = 3);\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nconst monthsInYear = (exports.monthsInYear = 12);\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nconst quartersInYear = (exports.quartersInYear = 4);\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nconst secondsInHour = (exports.secondsInHour = 3600);\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nconst secondsInMinute = (exports.secondsInMinute = 60);\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nconst secondsInDay = (exports.secondsInDay = secondsInHour * 24);\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nconst secondsInWeek = (exports.secondsInWeek = secondsInDay * 7);\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nconst secondsInYear = (exports.secondsInYear = secondsInDay * daysInYear);\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nconst secondsInMonth = (exports.secondsInMonth = secondsInYear / 12);\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nconst secondsInQuarter = (exports.secondsInQuarter = secondsInMonth * 3);\n","\"use strict\";\nexports.startOfWeek = startOfWeek;\nvar _index = require(\"./toDate.js\");\n\nvar _index2 = require(\"./_lib/defaultOptions.js\");\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfWeek(date, options) {\n const defaultOptions = (0, _index2.getDefaultOptions)();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = (0, _index.toDate)(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","// 'path' module extracted from Node.js v8.11.1 (only the posix part)\n// transplited with Babel\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}\n\n// Resolves . and .. elements in a path with directory names\nfunction normalizeStringPosix(path, allowAboveRoot) {\n var res = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path.length; ++i) {\n if (i < path.length)\n code = path.charCodeAt(i);\n else if (code === 47 /*/*/)\n break;\n else\n code = 47 /*/*/;\n if (code === 47 /*/*/) {\n if (lastSlash === i - 1 || dots === 1) {\n // NOOP\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 /*.*/ || res.charCodeAt(res.length - 2) !== 46 /*.*/) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf('/');\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = '';\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf('/');\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = '';\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += '/..';\n else\n res = '..';\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += '/' + path.slice(lastSlash + 1, i);\n else\n res = path.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 /*.*/ && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nfunction _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || '') + (pathObject.ext || '');\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n}\n\nvar posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = '';\n var resolvedAbsolute = false;\n var cwd;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path;\n if (i >= 0)\n path = arguments[i];\n else {\n if (cwd === undefined)\n cwd = process.cwd();\n path = cwd;\n }\n\n assertPath(path);\n\n // Skip empty entries\n if (path.length === 0) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charCodeAt(0) === 47 /*/*/;\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return '/' + resolvedPath;\n else\n return '/';\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return '.';\n }\n },\n\n normalize: function normalize(path) {\n assertPath(path);\n\n if (path.length === 0) return '.';\n\n var isAbsolute = path.charCodeAt(0) === 47 /*/*/;\n var trailingSeparator = path.charCodeAt(path.length - 1) === 47 /*/*/;\n\n // Normalize the path\n path = normalizeStringPosix(path, !isAbsolute);\n\n if (path.length === 0 && !isAbsolute) path = '.';\n if (path.length > 0 && trailingSeparator) path += '/';\n\n if (isAbsolute) return '/' + path;\n return path;\n },\n\n isAbsolute: function isAbsolute(path) {\n assertPath(path);\n return path.length > 0 && path.charCodeAt(0) === 47 /*/*/;\n },\n\n join: function join() {\n if (arguments.length === 0)\n return '.';\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === undefined)\n joined = arg;\n else\n joined += '/' + arg;\n }\n }\n if (joined === undefined)\n return '.';\n return posix.normalize(joined);\n },\n\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n\n if (from === to) return '';\n\n from = posix.resolve(from);\n to = posix.resolve(to);\n\n if (from === to) return '';\n\n // Trim any leading backslashes\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47 /*/*/)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n\n // Trim any leading backslashes\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47 /*/*/)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n\n // Compare paths to find the longest common path from root\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47 /*/*/) {\n // We get here if `from` is the exact base path for `to`.\n // For example: from='/foo/bar'; to='/foo/bar/baz'\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n // We get here if `from` is the root\n // For example: from='/'; to='/foo'\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47 /*/*/) {\n // We get here if `to` is the exact base path for `from`.\n // For example: from='/foo/bar/baz'; to='/foo/bar'\n lastCommonSep = i;\n } else if (i === 0) {\n // We get here if `to` is the root.\n // For example: from='/foo'; to='/'\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47 /*/*/)\n lastCommonSep = i;\n }\n\n var out = '';\n // Generate the relative path based on the path difference between `to`\n // and `from`\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47 /*/*/) {\n if (out.length === 0)\n out += '..';\n else\n out += '/..';\n }\n }\n\n // Lastly, append the rest of the destination (`to`) path that comes after\n // the common path parts\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47 /*/*/)\n ++toStart;\n return to.slice(toStart);\n }\n },\n\n _makeLong: function _makeLong(path) {\n return path;\n },\n\n dirname: function dirname(path) {\n assertPath(path);\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) return '//';\n return path.slice(0, end);\n },\n\n basename: function basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') throw new TypeError('\"ext\" argument must be a string');\n assertPath(path);\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\n if (ext.length === path.length && ext === path) return '';\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n // Try to match the explicit extension\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = i;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n\n if (start === end) end = firstNonSlashEnd;else if (end === -1) end = path.length;\n return path.slice(start, end);\n } else {\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n }\n },\n\n extname: function extname(path) {\n assertPath(path);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n },\n\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== 'object') {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format('/', pathObject);\n },\n\n parse: function parse(path) {\n assertPath(path);\n\n var ret = { root: '', dir: '', base: '', ext: '', name: '' };\n if (path.length === 0) return ret;\n var code = path.charCodeAt(0);\n var isAbsolute = code === 47 /*/*/;\n var start;\n if (isAbsolute) {\n ret.root = '/';\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path.length - 1;\n\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n\n // Get non-dir info\n for (; i >= start; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute) ret.base = ret.name = path.slice(1, end);else ret.base = ret.name = path.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path.slice(1, startDot);\n ret.base = path.slice(1, end);\n } else {\n ret.name = path.slice(startPart, startDot);\n ret.base = path.slice(startPart, end);\n }\n ret.ext = path.slice(startDot, end);\n }\n\n if (startPart > 0) ret.dir = path.slice(0, startPart - 1);else if (isAbsolute) ret.dir = '/';\n\n return ret;\n },\n\n sep: '/',\n delimiter: ':',\n win32: null,\n posix: null\n};\n\nposix.posix = posix;\n\nmodule.exports = posix;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","\"use strict\";\nexports.startOfISOWeek = startOfISOWeek;\nvar _index = require(\"./startOfWeek.js\");\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfISOWeek(date) {\n return (0, _index.startOfWeek)(date, { weekStartsOn: 1 });\n}\n","\"use strict\";\nexports.addDays = addDays;\nvar _index = require(\"./toDate.js\");\nvar _index2 = require(\"./constructFrom.js\");\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nfunction addDays(date, amount) {\n const _date = (0, _index.toDate)(date);\n if (isNaN(amount)) return (0, _index2.constructFrom)(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","\"use strict\";\nexports.addMonths = addMonths;\nvar _index = require(\"./toDate.js\");\nvar _index2 = require(\"./constructFrom.js\");\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nfunction addMonths(date, amount) {\n const _date = (0, _index.toDate)(date);\n if (isNaN(amount)) return (0, _index2.constructFrom)(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = (0, _index2.constructFrom)(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n","import { _isSSR } from './setSSR';\n\nlet _window: Window | undefined = undefined;\n\n// Note: Accessing \"window\" in IE11 is somewhat expensive, and calling \"typeof window\"\n// hits a memory leak, whereas aliasing it and calling \"typeof _window\" does not.\n// Caching the window value at the file scope lets us minimize the impact.\ntry {\n _window = window;\n} catch (e) {\n /* no-op */\n}\n\n/**\n * Helper to get the window object. The helper will make sure to use a cached variable\n * of \"window\", to avoid overhead and memory leaks in IE11. Note that in popup scenarios the\n * window object won't match the \"global\" window object, and for these scenarios, you should\n * pass in an element hosted within the popup.\n *\n * @public\n */\nexport function getWindow(rootElement?: Element | null): Window | undefined {\n if (_isSSR || typeof _window === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument && el.ownerDocument.defaultView ? el.ownerDocument.defaultView : _window;\n }\n}\n","import { IStyle } from './IStyle';\n\nexport const InjectionMode = {\n /**\n * Avoids style injection, use getRules() to read the styles.\n */\n none: 0 as 0,\n\n /**\n * Inserts rules using the insertRule api.\n */\n insertNode: 1 as 1,\n\n /**\n * Appends rules using appendChild.\n */\n appendChild: 2 as 2,\n};\n\nexport type InjectionMode = typeof InjectionMode[keyof typeof InjectionMode];\n\n/**\n * CSP settings for the stylesheet\n */\nexport interface ICSPSettings {\n /**\n * Nonce to inject into script tag\n */\n nonce?: string;\n}\n\n/**\n * Stylesheet config.\n *\n * @public\n */\nexport interface IStyleSheetConfig {\n /**\n * Injection mode for how rules are inserted.\n */\n injectionMode?: InjectionMode;\n\n /**\n * Default 'displayName' to use for a className.\n * @defaultvalue 'css'\n */\n defaultPrefix?: string;\n\n /**\n * Defines the default direction of rules for auto-rtlifying things.\n * While typically this is represented as a DIR attribute in the markup,\n * the DIR is not enough to control whether padding goes on the left or\n * right. Use this to set the default direction when rules are registered.\n */\n rtl?: boolean;\n\n /**\n * Default 'namespace' to attach before the className.\n */\n namespace?: string;\n\n /**\n * CSP settings\n */\n cspSettings?: ICSPSettings;\n\n /**\n * Callback executed when a rule is inserted.\n */\n onInsertRule?: (rule: string) => void;\n\n /**\n * Initial value for classnames cache. Key is serialized css rules associated with a classname.\n */\n classNameCache?: { [key: string]: string };\n}\n\nconst STYLESHEET_SETTING = '__stylesheet__';\n/**\n * MSIE 11 doesn't cascade styles based on DOM ordering, but rather on the order that each style node\n * is created. As such, to maintain consistent priority, IE11 should reuse a single style node.\n */\nconst REUSE_STYLE_NODE = typeof navigator !== 'undefined' && /rv:11.0/.test(navigator.userAgent);\n\nlet _global: { [key: string]: any } = {};\n\n// Grab window.\ntry {\n _global = window;\n} catch {\n /* leave as blank object */\n}\n\nlet _stylesheet: Stylesheet;\n\n/**\n * Represents the state of styles registered in the page. Abstracts\n * the surface for adding styles to the stylesheet, exposes helpers\n * for reading the styles registered in server rendered scenarios.\n *\n * @public\n */\nexport class Stylesheet {\n private _lastStyleElement?: HTMLStyleElement;\n private _styleElement?: HTMLStyleElement;\n private _rules: string[] = [];\n private _preservedRules: string[] = [];\n private _config: IStyleSheetConfig;\n private _rulesToInsert: string[] = [];\n private _counter = 0;\n private _keyToClassName: { [key: string]: string } = {};\n private _onResetCallbacks: (() => void)[] = [];\n\n private _classNameToArgs: { [key: string]: { args: any; rules: string[] } } = {};\n\n /**\n * Gets the singleton instance.\n */\n public static getInstance(): Stylesheet {\n _stylesheet = _global[STYLESHEET_SETTING] as Stylesheet;\n\n if (!_stylesheet || (_stylesheet._lastStyleElement && _stylesheet._lastStyleElement.ownerDocument !== document)) {\n const fabricConfig = _global?.FabricConfig || {};\n\n _stylesheet = _global[STYLESHEET_SETTING] = new Stylesheet(fabricConfig.mergeStyles);\n }\n\n return _stylesheet;\n }\n\n constructor(config?: IStyleSheetConfig) {\n this._config = {\n injectionMode: InjectionMode.insertNode,\n defaultPrefix: 'css',\n namespace: undefined,\n cspSettings: undefined,\n ...config,\n };\n\n this._keyToClassName = this._config.classNameCache || {};\n }\n\n /**\n * Configures the stylesheet.\n */\n public setConfig(config?: IStyleSheetConfig): void {\n this._config = {\n ...this._config,\n ...config,\n };\n }\n\n /**\n * Configures a reset callback.\n *\n * @param callback - A callback which will be called when the Stylesheet is reset.\n */\n public onReset(callback: () => void): void {\n this._onResetCallbacks.push(callback);\n }\n\n /**\n * Generates a unique classname.\n *\n * @param displayName - Optional value to use as a prefix.\n */\n public getClassName(displayName?: string): string {\n const { namespace } = this._config;\n const prefix = displayName || this._config.defaultPrefix;\n\n return `${namespace ? namespace + '-' : ''}${prefix}-${this._counter++}`;\n }\n\n /**\n * Used internally to cache information about a class which was\n * registered with the stylesheet.\n */\n public cacheClassName(className: string, key: string, args: IStyle[], rules: string[]): void {\n this._keyToClassName[key] = className;\n this._classNameToArgs[className] = {\n args,\n rules,\n };\n }\n\n /**\n * Gets the appropriate classname given a key which was previously\n * registered using cacheClassName.\n */\n public classNameFromKey(key: string): string | undefined {\n return this._keyToClassName[key];\n }\n\n /**\n * Gets all classnames cache with the stylesheet.\n */\n public getClassNameCache(): { [key: string]: string } {\n return this._keyToClassName;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public argsFromClassName(className: string): IStyle[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.args;\n }\n\n /**\n * Gets the arguments associated with a given classname which was\n * previously registered using cacheClassName.\n */\n public insertedRulesFromClassName(className: string): string[] | undefined {\n const entry = this._classNameToArgs[className];\n\n return entry && entry.rules;\n }\n\n /**\n * Inserts a css rule into the stylesheet.\n * @param preserve - Preserves the rule beyond a reset boundary.\n */\n public insertRule(rule: string, preserve?: boolean): void {\n const { injectionMode } = this._config;\n const element = injectionMode !== InjectionMode.none ? this._getStyleElement() : undefined;\n\n if (preserve) {\n this._preservedRules.push(rule);\n }\n\n if (element) {\n switch (this._config.injectionMode) {\n case InjectionMode.insertNode:\n const { sheet } = element!;\n\n try {\n (sheet as CSSStyleSheet).insertRule(rule, (sheet as CSSStyleSheet).cssRules.length);\n } catch (e) {\n // The browser will throw exceptions on unsupported rules (such as a moz prefix in webkit.)\n // We need to swallow the exceptions for this scenario, otherwise we'd need to filter\n // which could be slower and bulkier.\n }\n break;\n\n case InjectionMode.appendChild:\n element.appendChild(document.createTextNode(rule));\n break;\n }\n } else {\n this._rules.push(rule);\n }\n\n if (this._config.onInsertRule) {\n this._config.onInsertRule(rule);\n }\n }\n\n /**\n * Gets all rules registered with the stylesheet; only valid when\n * using InsertionMode.none.\n */\n public getRules(includePreservedRules?: boolean): string {\n return (\n (includePreservedRules ? this._preservedRules.join('') : '') + this._rules.join('') + this._rulesToInsert.join('')\n );\n }\n\n /**\n * Resets the internal state of the stylesheet. Only used in server\n * rendered scenarios where we're using InsertionMode.none.\n */\n public reset(): void {\n this._rules = [];\n this._rulesToInsert = [];\n this._counter = 0;\n this._classNameToArgs = {};\n this._keyToClassName = {};\n\n this._onResetCallbacks.forEach((callback: () => void) => callback());\n }\n\n // Forces the regeneration of incoming styles without totally resetting the stylesheet.\n public resetKeys(): void {\n this._keyToClassName = {};\n }\n\n private _getStyleElement(): HTMLStyleElement | undefined {\n if (!this._styleElement && typeof document !== 'undefined') {\n this._styleElement = this._createStyleElement();\n\n if (!REUSE_STYLE_NODE) {\n // Reset the style element on the next frame.\n window.requestAnimationFrame(() => {\n this._styleElement = undefined;\n });\n }\n }\n return this._styleElement;\n }\n\n private _createStyleElement(): HTMLStyleElement {\n const head: HTMLHeadElement = document.head;\n const styleElement = document.createElement('style');\n let nodeToInsertBefore: Node | null = null;\n\n styleElement.setAttribute('data-merge-styles', 'true');\n\n const { cspSettings } = this._config;\n if (cspSettings) {\n if (cspSettings.nonce) {\n styleElement.setAttribute('nonce', cspSettings.nonce);\n }\n }\n if (this._lastStyleElement) {\n // If the `nextElementSibling` is null, then the insertBefore will act as a regular append.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/insertBefore#Syntax\n nodeToInsertBefore = this._lastStyleElement.nextElementSibling;\n } else {\n const placeholderStyleTag: Element | null = this._findPlaceholderStyleTag();\n\n if (placeholderStyleTag) {\n nodeToInsertBefore = placeholderStyleTag.nextElementSibling;\n } else {\n nodeToInsertBefore = head.childNodes[0];\n }\n }\n\n head!.insertBefore(styleElement, head!.contains(nodeToInsertBefore) ? nodeToInsertBefore : null);\n this._lastStyleElement = styleElement;\n\n return styleElement;\n }\n\n private _findPlaceholderStyleTag(): Element | null {\n const head: HTMLHeadElement = document.head;\n if (head) {\n return head.querySelector('style[data-merge-styles]');\n }\n return null;\n }\n}\n","import { Stylesheet } from '@uifabric/merge-styles';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ndeclare class WeakMap {\n public get(key: any): any;\n public set(key: any, value: any): void;\n public has(key: any): boolean;\n}\n\nlet _initializedStylesheetResets = false;\nlet _resetCounter = 0;\nconst _emptyObject = { empty: true };\nconst _dictionary: any = {};\nlet _weakMap = typeof WeakMap === 'undefined' ? null : WeakMap;\n\ninterface IMemoizeNode {\n map: WeakMap | null;\n value?: any;\n}\n\n/**\n * Test utility for providing a custom weakmap.\n *\n * @internal\n * */\nexport function setMemoizeWeakMap(weakMap: any): void {\n _weakMap = weakMap;\n}\n\n/**\n * Reset memoizations.\n */\nexport function resetMemoizations(): void {\n _resetCounter++;\n}\n\n/**\n * Memoize decorator to be used on class methods. WARNING: the `this` reference\n * will be inaccessible within a memoized method, given that a cached method's `this`\n * would not be instance-specific.\n *\n * @public\n */\nexport function memoize(\n target: any,\n key: string,\n descriptor: TypedPropertyDescriptor,\n): {\n configurable: boolean;\n get(): T;\n} {\n // We bind to \"null\" to prevent people from inadvertently pulling values from \"this\",\n // rather than passing them in as input values which can be memoized.\n let fn = memoizeFunction(descriptor.value && descriptor.value.bind(null));\n\n return {\n configurable: true,\n get(): T {\n return fn;\n },\n };\n}\n\n/**\n * Memoizes a function; when you pass in the same parameters multiple times, it returns a cached result.\n * Be careful when passing in objects, you need to pass in the same INSTANCE for caching to work. Otherwise\n * it will grow the cache unnecessarily. Also avoid using default values that evaluate functions; passing in\n * undefined for a value and relying on a default function will execute it the first time, but will not\n * re-evaluate subsequent times which may have been unexpected.\n *\n * By default, the cache will reset after 100 permutations, to avoid abuse cases where the function is\n * unintendedly called with unique objects. Without a reset, the cache could grow infinitely, so we safeguard\n * by resetting. To override this behavior, pass a value of 0 to the maxCacheSize parameter.\n *\n * @public\n * @param cb - The function to memoize.\n * @param maxCacheSize - Max results to cache. If the cache exceeds this value, it will reset on the next call.\n * @param ignoreNullOrUndefinedResult - Flag to decide whether to cache callback result if it is undefined/null.\n * If the flag is set to true, the callback result is recomputed every time till the callback result is\n * not undefined/null for the first time, and then the non-undefined/null version gets cached.\n * @returns A memoized version of the function.\n */\nexport function memoizeFunction RetType, RetType>(\n cb: T,\n maxCacheSize: number = 100,\n ignoreNullOrUndefinedResult: boolean = false,\n): T {\n // Avoid breaking scenarios which don't have weak map.\n if (!_weakMap) {\n return cb;\n }\n\n if (!_initializedStylesheetResets) {\n const stylesheet = Stylesheet.getInstance();\n\n if (stylesheet && stylesheet.onReset) {\n Stylesheet.getInstance().onReset(resetMemoizations);\n }\n _initializedStylesheetResets = true;\n }\n\n let rootNode: any;\n let cacheSize = 0;\n let localResetCounter = _resetCounter;\n\n return function memoizedFunction(...args: any[]): RetType {\n let currentNode: any = rootNode;\n\n if (\n rootNode === undefined ||\n localResetCounter !== _resetCounter ||\n (maxCacheSize > 0 && cacheSize > maxCacheSize)\n ) {\n rootNode = _createNode();\n cacheSize = 0;\n localResetCounter = _resetCounter;\n }\n\n currentNode = rootNode;\n\n // Traverse the tree until we find the match.\n for (let i = 0; i < args.length; i++) {\n let arg = _normalizeArg(args[i]);\n\n if (!currentNode.map.has(arg)) {\n currentNode.map.set(arg, _createNode());\n }\n\n currentNode = currentNode.map.get(arg);\n }\n\n if (!currentNode.hasOwnProperty('value')) {\n currentNode.value = cb(...args);\n cacheSize++;\n }\n\n if (ignoreNullOrUndefinedResult && (currentNode.value === null || currentNode.value === undefined)) {\n currentNode.value = cb(...args);\n }\n\n return currentNode.value;\n } as any;\n}\n\n/**\n * Creates a memoizer for a single-value function, backed by a WeakMap.\n * With a WeakMap, the memoized values are only kept as long as the source objects,\n * ensuring that there is no memory leak.\n *\n * This function assumes that the input values passed to the wrapped function will be\n * `function` or `object` types. To memoize functions which accept other inputs, use\n * `memoizeFunction`, which memoizes against arbitrary inputs using a lookup cache.\n *\n * @public\n */\nexport function createMemoizer any>(getValue: F): F {\n if (!_weakMap) {\n // Without a `WeakMap` implementation, memoization is not possible.\n return getValue;\n }\n\n const cache = new _weakMap();\n\n function memoizedGetValue(input: any): any {\n if (!input || (typeof input !== 'function' && typeof input !== 'object')) {\n // A WeakMap can only be used to test against reference values, i.e. 'function' and 'object'.\n // All other inputs cannot be memoized against in this manner.\n return getValue(input);\n }\n\n if (cache.has(input)) {\n return cache.get(input)!;\n }\n\n const value = getValue(input);\n\n cache.set(input, value);\n\n return value;\n }\n\n return memoizedGetValue as F;\n}\n\nfunction _normalizeArg(val: null | undefined): { empty: boolean } | any;\nfunction _normalizeArg(val: object): any;\nfunction _normalizeArg(val: any): any {\n if (!val) {\n return _emptyObject;\n } else if (typeof val === 'object' || typeof val === 'function') {\n return val;\n } else if (!_dictionary[val]) {\n _dictionary[val] = { val };\n }\n\n return _dictionary[val];\n}\n\nfunction _createNode(): IMemoizeNode {\n return {\n map: _weakMap ? new _weakMap() : null,\n };\n}\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require('./lib/axios');","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var j = 0; j < string.length; j += limit) {\n var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n var arr = [];\n\n for (var i = 0; i < segment.length; ++i) {\n var c = segment.charCodeAt(i);\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n arr[arr.length] = hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n out += arr.join('');\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","\"use strict\";\nexports.startOfDay = startOfDay;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nfunction startOfDay(date) {\n const _date = (0, _index.toDate)(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n","\"use strict\";\nexports.getTimezoneOffsetInMilliseconds = getTimezoneOffsetInMilliseconds;\nvar _index = require(\"../toDate.js\");\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n const _date = (0, _index.toDate)(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","\"use strict\";\nexports.getISOWeek = getISOWeek;\nvar _index = require(\"./constants.js\");\nvar _index2 = require(\"./startOfISOWeek.js\");\nvar _index3 = require(\"./startOfISOWeekYear.js\");\nvar _index4 = require(\"./toDate.js\");\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nfunction getISOWeek(date) {\n const _date = (0, _index4.toDate)(date);\n const diff =\n +(0, _index2.startOfISOWeek)(_date) -\n +(0, _index3.startOfISOWeekYear)(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / _index.millisecondsInWeek) + 1;\n}\n","\"use strict\";\nexports.getWeekYear = getWeekYear;\nvar _index = require(\"./constructFrom.js\");\nvar _index2 = require(\"./startOfWeek.js\");\nvar _index3 = require(\"./toDate.js\");\n\nvar _index4 = require(\"./_lib/defaultOptions.js\");\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nfunction getWeekYear(date, options) {\n const _date = (0, _index3.toDate)(date);\n const year = _date.getFullYear();\n\n const defaultOptions = (0, _index4.getDefaultOptions)();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = (0, _index.constructFrom)(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = (0, _index2.startOfWeek)(\n firstWeekOfNextYear,\n options,\n );\n\n const firstWeekOfThisYear = (0, _index.constructFrom)(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = (0, _index2.startOfWeek)(\n firstWeekOfThisYear,\n options,\n );\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n","\"use strict\";\nexports.setMonth = setMonth;\nvar _index = require(\"./constructFrom.js\");\nvar _index2 = require(\"./getDaysInMonth.js\");\nvar _index3 = require(\"./toDate.js\");\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nfunction setMonth(date, month) {\n const _date = (0, _index3.toDate)(date);\n const year = _date.getFullYear();\n const day = _date.getDate();\n\n const dateWithDesiredMonth = (0, _index.constructFrom)(date, 0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n const daysInMonth = (0, _index2.getDaysInMonth)(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n _date.setMonth(month, Math.min(day, daysInMonth));\n return _date;\n}\n","\"use strict\";\nexports.setDay = setDay;\nvar _index = require(\"./addDays.js\");\nvar _index2 = require(\"./toDate.js\");\n\nvar _index3 = require(\"./_lib/defaultOptions.js\");\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setDay(date, day, options) {\n const defaultOptions = (0, _index3.getDefaultOptions)();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = (0, _index2.toDate)(date);\n const currentDay = _date.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return (0, _index.addDays)(_date, diff);\n}\n","var baseUnset = require('./_baseUnset'),\n isIndex = require('./_isIndex');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n}\n\nmodule.exports = basePullAt;\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import { IStyle, IStyleBaseArray } from './IStyle';\nimport { Stylesheet } from './Stylesheet';\n\n/**\n * Separates the classes and style objects. Any classes that are pre-registered\n * args are auto expanded into objects.\n */\nexport function extractStyleParts(\n ...args: (IStyle | IStyle[] | false | null | undefined)[]\n): { classes: string[]; objects: IStyleBaseArray } {\n const classes: string[] = [];\n const objects: {}[] = [];\n const stylesheet = Stylesheet.getInstance();\n\n function _processArgs(argsList: (IStyle | IStyle[])[]): void {\n for (const arg of argsList) {\n if (arg) {\n if (typeof arg === 'string') {\n if (arg.indexOf(' ') >= 0) {\n _processArgs(arg.split(' '));\n } else {\n const translatedArgs = stylesheet.argsFromClassName(arg);\n\n if (translatedArgs) {\n _processArgs(translatedArgs);\n } else {\n // Avoid adding the same class twice.\n if (classes.indexOf(arg) === -1) {\n classes.push(arg);\n }\n }\n }\n } else if (Array.isArray(arg)) {\n _processArgs(arg);\n } else if (typeof arg === 'object') {\n objects.push(arg);\n }\n }\n }\n }\n\n _processArgs(args);\n\n return {\n classes,\n objects,\n };\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { extractStyleParts } from './extractStyleParts';\nimport { IStyle } from './IStyle';\nimport { IStyleOptions } from './IStyleOptions';\nimport { IConcatenatedStyleSet, IProcessedStyleSet, IStyleSet } from './IStyleSet';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { applyRegistration, styleToRegistration } from './styleToClassName';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet - The first style set to be merged and reigstered.\n */\nexport function mergeStyleSets(\n styleSet: TStyleSet | false | null | undefined,\n): IProcessedStyleSet>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n */\nexport function mergeStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IProcessedStyleSet & ObjectOnly>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n */\nexport function mergeStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IProcessedStyleSet & ObjectOnly & ObjectOnly>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSet1 - The first style set to be merged.\n * @param styleSet2 - The second style set to be merged.\n * @param styleSet3 - The third style set to be merged.\n * @param styleSet4 - The fourth style set to be merged.\n */\nexport function mergeStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IProcessedStyleSet<\n ObjectOnly & ObjectOnly & ObjectOnly & ObjectOnly\n>;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeStyles` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n */\nexport function mergeStyleSets(...styleSets: Array): IProcessedStyleSet {\n return mergeCssSets(styleSets as any, getStyleOptions());\n}\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [TStyleSet1 | false | null | undefined, TStyleSet2 | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: [\n TStyleSet1 | false | null | undefined,\n TStyleSet2 | false | null | undefined,\n TStyleSet3 | false | null | undefined,\n TStyleSet4 | false | null | undefined,\n ],\n options?: IStyleOptions,\n): IProcessedStyleSet<\n ObjectOnly & ObjectOnly & ObjectOnly & ObjectOnly\n>;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures we maintain the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSet: [TStyleSet | false | null | undefined],\n options?: IStyleOptions,\n): IProcessedStyleSet;\n\n/**\n * Takes in one or more style set objects, each1consisting of a set of areas,\n * each which will produce a class name. Using this is analogous to calling\n * `mergeCss` for each property in the object, but ensures the\n * set ordering when multiple style sets are merged.\n *\n * @param styleSets - One or more style sets to be merged.\n * @param options - (optional) Options to use when creating rules.\n */\nexport function mergeCssSets(\n styleSets: Array,\n options?: IStyleOptions,\n): IProcessedStyleSet {\n const classNameSet: IProcessedStyleSet = { subComponentStyles: {} };\n\n const styleSet = styleSets[0];\n\n if (!styleSet && styleSets.length <= 1) {\n return { subComponentStyles: {} } as any;\n }\n\n const concatenatedStyleSet = concatStyleSets(...styleSets);\n\n const registrations = [];\n\n for (const styleSetArea in concatenatedStyleSet) {\n if (concatenatedStyleSet.hasOwnProperty(styleSetArea)) {\n if (styleSetArea === 'subComponentStyles') {\n classNameSet.subComponentStyles = (concatenatedStyleSet as IConcatenatedStyleSet).subComponentStyles || {};\n continue;\n }\n\n const styles: IStyle = (concatenatedStyleSet as any)[styleSetArea];\n\n const { classes, objects } = extractStyleParts(styles);\n\n if (objects?.length) {\n const registration = styleToRegistration(options || {}, { displayName: styleSetArea }, objects);\n\n if (registration) {\n registrations.push(registration);\n classNameSet[styleSetArea] = classes.concat([registration.className]).join(' ');\n }\n } else {\n classNameSet[styleSetArea] = classes.join(' ');\n }\n }\n }\n\n for (const registration of registrations) {\n if (registration) {\n applyRegistration(registration, options?.specificityMultiplier);\n }\n }\n\n return classNameSet as any;\n}\n","import { KeyCodes } from './KeyCodes';\nimport { getDocument } from './dom/getDocument';\nimport { getItem, setItem } from './sessionStorage';\nimport { setRTL as mergeStylesSetRTL } from '@uifabric/merge-styles';\n\nconst RTL_LOCAL_STORAGE_KEY = 'isRTL';\n\n// Default to undefined so that we initialize on first read.\nlet _isRTL: boolean | undefined;\n\n/**\n * Gets the rtl state of the page (returns true if in rtl.)\n */\nexport function getRTL(theme: { rtl?: boolean } = {}): boolean {\n if (theme.rtl !== undefined) {\n return theme.rtl;\n }\n if (_isRTL === undefined) {\n // Fabric supports persisting the RTL setting between page refreshes via session storage\n let savedRTL = getItem(RTL_LOCAL_STORAGE_KEY);\n if (savedRTL !== null) {\n _isRTL = savedRTL === '1';\n setRTL(_isRTL);\n }\n\n let doc = getDocument();\n if (_isRTL === undefined && doc) {\n _isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';\n mergeStylesSetRTL(_isRTL);\n }\n }\n\n return !!_isRTL;\n}\n\n/**\n * Sets the rtl state of the page (by adjusting the dir attribute of the html element.)\n */\nexport function setRTL(isRTL: boolean, persistSetting: boolean = false): void {\n let doc = getDocument();\n if (doc) {\n doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');\n }\n\n if (persistSetting) {\n setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');\n }\n\n _isRTL = isRTL;\n mergeStylesSetRTL(_isRTL);\n}\n\n/**\n * Returns the given key, but flips right/left arrows if necessary.\n */\nexport function getRTLSafeKeyCode(key: number, theme: { rtl?: boolean } = {}): number {\n if (getRTL(theme)) {\n if (key === KeyCodes.left) {\n key = KeyCodes.right;\n } else if (key === KeyCodes.right) {\n key = KeyCodes.left;\n }\n }\n\n return key;\n}\n","import {\n mergeCssSets,\n IStyleSet,\n IProcessedStyleSet,\n Stylesheet,\n IStyleFunctionOrObject,\n} from '@uifabric/merge-styles';\nimport { getRTL } from './rtl';\nimport { getWindow } from './dom';\nimport { StyleFunction } from './styled';\n\nconst MAX_CACHE_COUNT = 50;\nconst DEFAULT_SPECIFICITY_MULTIPLIER = 5;\n\nlet _memoizedClassNames = 0;\n\nconst stylesheet = Stylesheet.getInstance();\n\nif (stylesheet && stylesheet.onReset) {\n stylesheet.onReset(() => _memoizedClassNames++);\n}\n\n// Note that because of the caching nature within the classNames memoization,\n// I've disabled this rule to simply be able to work with any types.\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n// This represents a prop we attach to each Map to indicate the cached return value\n// associated with the graph node.\nconst retVal = '__retval__';\n\ninterface IRecursiveMemoNode extends Map {\n [retVal]?: string;\n}\n\ntype AppWindow = (Window & { FabricConfig?: { enableClassNameCacheFullWarning?: boolean } }) | undefined;\n\nexport interface IClassNamesFunctionOptions {\n /**\n * Disables class caching for scenarios where styleProp parts mutate frequently.\n */\n disableCaching?: boolean;\n\n /**\n * Size of the cache. It overwrites default cache size when defined.\n */\n cacheSize?: number;\n\n /**\n * Set to true if component base styles are implemented in scss instead of css-in-js.\n */\n useStaticStyles?: boolean;\n}\n\n/**\n * Creates a getClassNames function which calls getStyles given the props, and injects them\n * into mergeStyleSets.\n *\n * Note that the props you pass in on every render should be in the same order and\n * immutable (numbers, strings, and booleans). This will allow the results to be memoized. Violating\n * these will cause extra recalcs to occur.\n */\nexport function classNamesFunction>(\n options: IClassNamesFunctionOptions = {},\n): (\n getStyles: IStyleFunctionOrObject | undefined,\n styleProps?: TStyleProps,\n) => IProcessedStyleSet {\n // We build a trie where each node is a Map. The map entry key represents an argument\n // value, and the entry value is another node (Map). Each node has a `__retval__`\n // property which is used to hold the cached response.\n\n // To derive the response, we can simply ensure the arguments are added or already\n // exist in the trie. At the last node, if there is a `__retval__` we return that. Otherwise\n // we call the `getStyles` api to evaluate, cache on the property, and return that.\n let map: IRecursiveMemoNode = new Map();\n let styleCalcCount = 0;\n let getClassNamesCount = 0;\n let currentMemoizedClassNames = _memoizedClassNames;\n\n const getClassNames = (\n styleFunctionOrObject: IStyleFunctionOrObject | undefined,\n styleProps: TStyleProps = {} as TStyleProps,\n ): IProcessedStyleSet => {\n // If useStaticStyles is true, styleFunctionOrObject returns slot to classname mappings.\n // If there is also no style overrides, we can skip merge styles completely and\n // simply return the result from the style funcion.\n if (\n options.useStaticStyles &&\n typeof styleFunctionOrObject === 'function' &&\n (styleFunctionOrObject as StyleFunction).__noStyleOverride__\n ) {\n return styleFunctionOrObject(styleProps) as IProcessedStyleSet;\n }\n\n getClassNamesCount++;\n let current: Map = map;\n const { theme } = styleProps as any;\n const rtl = theme && theme.rtl !== undefined ? theme.rtl : getRTL();\n\n const disableCaching = options.disableCaching;\n\n // On reset of our stylesheet, reset memoized cache.\n if (currentMemoizedClassNames !== _memoizedClassNames) {\n currentMemoizedClassNames = _memoizedClassNames;\n map = new Map();\n styleCalcCount = 0;\n }\n\n if (!options.disableCaching) {\n current = _traverseMap(map, styleFunctionOrObject as any);\n current = _traverseMap(current, styleProps);\n }\n\n if (disableCaching || !(current as any)[retVal]) {\n if (styleFunctionOrObject === undefined) {\n (current as any)[retVal] = {} as IProcessedStyleSet;\n } else {\n (current as any)[retVal] = mergeCssSets(\n [\n (typeof styleFunctionOrObject === 'function'\n ? styleFunctionOrObject(styleProps)\n : styleFunctionOrObject) as IStyleSet,\n ],\n { rtl: !!rtl, specificityMultiplier: options.useStaticStyles ? DEFAULT_SPECIFICITY_MULTIPLIER : undefined },\n );\n }\n\n if (!disableCaching) {\n styleCalcCount++;\n }\n }\n\n if (styleCalcCount > (options.cacheSize || MAX_CACHE_COUNT)) {\n const win = getWindow() as AppWindow;\n if (win?.FabricConfig?.enableClassNameCacheFullWarning) {\n // eslint-disable-next-line no-console\n console.warn(\n `Styles are being recalculated too frequently. Cache miss rate is ${styleCalcCount}/${getClassNamesCount}.`,\n );\n // eslint-disable-next-line no-console\n console.trace();\n }\n\n map.clear();\n styleCalcCount = 0;\n\n // Mutate the options passed in, that's all we can do.\n options.disableCaching = true;\n }\n\n // Note: the retVal is an attached property on the Map; not a key in the Map. We use this attached property to\n // cache the return value for this branch of the graph.\n return (current as any)[retVal];\n };\n\n return getClassNames;\n}\n\nfunction _traverseEdge(current: Map, value: any): Map {\n value = _normalizeValue(value);\n\n if (!current.has(value)) {\n current.set(value, new Map());\n }\n\n return current.get(value);\n}\n\nfunction _traverseMap(current: Map, inputs: any[] | Object): Map {\n if (typeof inputs === 'function') {\n const cachedInputsFromStyled = (inputs as StyleFunction).__cachedInputs__;\n if (cachedInputsFromStyled) {\n // The styled helper will generate the styles function and will attach the cached\n // inputs (consisting of the default styles, customzied styles, and user provided styles.)\n // These should be used as cache keys for deriving the memoized value.\n for (const input of (inputs as any).__cachedInputs__) {\n current = _traverseEdge(current, input);\n }\n } else {\n current = _traverseEdge(current, inputs);\n }\n } else if (typeof inputs === 'object') {\n for (const propName in inputs) {\n if (inputs.hasOwnProperty(propName)) {\n current = _traverseEdge(current, (inputs as any)[propName]);\n }\n }\n }\n\n return current;\n}\n\nfunction _normalizeValue(value: any): string {\n switch (value) {\n case undefined:\n return '__undefined__';\n case null:\n return '__null__';\n default:\n return value;\n }\n}\n","const toObjectMap = (...items: (string[] | Record)[]) => {\n const result: Record = {};\n\n for (const item of items) {\n const keys = Array.isArray(item) ? item : Object.keys(item);\n\n for (const key of keys) {\n result[key] = 1;\n }\n }\n\n return result;\n};\n\n/**\n * An array of events that are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementEvents = toObjectMap([\n 'onCopy',\n 'onCut',\n 'onPaste',\n 'onCompositionEnd',\n 'onCompositionStart',\n 'onCompositionUpdate',\n 'onFocus',\n 'onFocusCapture',\n 'onBlur',\n 'onBlurCapture',\n 'onChange',\n 'onInput',\n 'onSubmit',\n 'onLoad',\n 'onError',\n 'onKeyDown',\n 'onKeyDownCapture',\n 'onKeyPress',\n 'onKeyUp',\n 'onAbort',\n 'onCanPlay',\n 'onCanPlayThrough',\n 'onDurationChange',\n 'onEmptied',\n 'onEncrypted',\n 'onEnded',\n 'onLoadedData',\n 'onLoadedMetadata',\n 'onLoadStart',\n 'onPause',\n 'onPlay',\n 'onPlaying',\n 'onProgress',\n 'onRateChange',\n 'onSeeked',\n 'onSeeking',\n 'onStalled',\n 'onSuspend',\n 'onTimeUpdate',\n 'onVolumeChange',\n 'onWaiting',\n 'onClick',\n 'onClickCapture',\n 'onContextMenu',\n 'onDoubleClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onMouseDown',\n 'onMouseDownCapture',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOut',\n 'onMouseOver',\n 'onMouseUp',\n 'onMouseUpCapture',\n 'onSelect',\n 'onTouchCancel',\n 'onTouchEnd',\n 'onTouchMove',\n 'onTouchStart',\n 'onScroll',\n 'onWheel',\n 'onPointerCancel',\n 'onPointerDown',\n 'onPointerEnter',\n 'onPointerLeave',\n 'onPointerMove',\n 'onPointerOut',\n 'onPointerOver',\n 'onPointerUp',\n 'onGotPointerCapture',\n 'onLostPointerCapture',\n]);\n\n/**\n * An array of element attributes which are allowed on every html element type.\n *\n * @public\n */\nexport const baseElementProperties = toObjectMap([\n 'accessKey', // global\n 'children', // global\n 'className', // global\n 'contentEditable', // global\n 'dir', // global\n 'draggable', // global\n 'hidden', // global\n 'htmlFor', // global\n 'id', // global\n 'lang', // global\n 'ref', // global\n 'role', // global\n 'style', // global\n 'tabIndex', // global\n 'title', // global\n 'translate', // global\n 'spellCheck', // global\n 'name', // global\n]);\n\n/**\n * An array of HTML element properties and events.\n *\n * @public\n */\nexport const htmlElementProperties = toObjectMap(baseElementProperties, baseElementEvents);\n\n/**\n * An array of LABEL tag properties and events.\n *\n * @public\n */\nexport const labelProperties = toObjectMap(htmlElementProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n]);\n\n/**\n * An array of AUDIO tag properties and events.\n\n * @public\n */\nexport const audioProperties = toObjectMap(htmlElementProperties, [\n 'height', // canvas, embed, iframe, img, input, object, video\n 'loop', // audio, video\n 'muted', // audio, video\n 'preload', // audio, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of VIDEO tag properties and events.\n *\n * @public\n */\nexport const videoProperties = toObjectMap(audioProperties, [\n 'poster', // video\n]);\n\n/**\n * An array of OL tag properties and events.\n *\n * @public\n */\nexport const olProperties = toObjectMap(htmlElementProperties, [\n 'start', // ol\n]);\n\n/**\n * An array of LI tag properties and events.\n *\n * @public\n */\nexport const liProperties = toObjectMap(htmlElementProperties, [\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of A tag properties and events.\n *\n * @public\n */\nexport const anchorProperties = toObjectMap(htmlElementProperties, [\n 'download', // a, area\n 'href', // a, area, base, link\n 'hrefLang', // a, area, link\n 'media', // a, area, link, source, style\n 'rel', // a, area, link\n 'target', // a, area, base, form\n 'type', // a, button, input, link, menu, object, script, source, style\n]);\n\n/**\n * An array of BUTTON tag properties and events.\n *\n * @public\n */\nexport const buttonProperties = toObjectMap(htmlElementProperties, [\n 'autoFocus', // button, input, select, textarea\n 'disabled', // button, fieldset, input, optgroup, option, select, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'formAction', // input, button\n 'formEncType', // input, button\n 'formMethod', // input, button\n 'formNoValidate', // input, button\n 'formTarget', // input, button\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param,\n]);\n\n/**\n * An array of INPUT tag properties and events.\n *\n * @public\n */\nexport const inputProperties = toObjectMap(buttonProperties, [\n 'accept', // input\n 'alt', // area, img, input\n 'autoCapitalize', // input, textarea\n 'autoComplete', // form, input\n 'checked', // input\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'height', // canvas, embed, iframe, img, input, object, video\n 'inputMode', // input\n 'list', // input\n 'max', // input, meter\n 'maxLength', // input, textarea\n 'min', // input, meter\n 'multiple', // input, select\n 'pattern', // input\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'step', // input\n 'size', // input\n 'type', // a, button, input, link, menu, object, script, source, style\n 'value', // button, input, li, option, meter, progress, param\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * An array of TEXTAREA tag properties and events.\n *\n * @public\n */\nexport const textAreaProperties = toObjectMap(buttonProperties, [\n 'autoCapitalize', // input, textarea\n 'cols', // textarea\n 'dirname', // input, textarea\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'maxLength', // input, textarea\n 'placeholder', // input, textarea\n 'readOnly', // input, textarea\n 'required', // input, select, textarea\n 'rows', // textarea\n 'wrap', // textarea\n]);\n\n/**\n * An array of SELECT tag properties and events.\n *\n * @public\n */\nexport const selectProperties = toObjectMap(buttonProperties, [\n 'form', // button, fieldset, input, label, meter, object, output, select, textarea\n 'multiple', // input, select\n 'required', // input, select, textarea\n]);\n\nexport const optionProperties = toObjectMap(htmlElementProperties, [\n 'selected', // option\n 'value', // button, input, li, option, meter, progress, param\n]);\n\n/**\n * An array of TABLE tag properties and events.\n *\n * @public\n */\nexport const tableProperties = toObjectMap(htmlElementProperties, [\n 'cellPadding', // table\n 'cellSpacing', // table\n]);\n\n/**\n * An array of TR tag properties and events.\n *\n * @public\n */\nexport const trProperties = htmlElementProperties;\n\n/**\n * An array of TH tag properties and events.\n *\n * @public\n */\nexport const thProperties = toObjectMap(htmlElementProperties, [\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\n/**\n * An array of TD tag properties and events.\n *\n * @public\n */\nexport const tdProperties = toObjectMap(htmlElementProperties, [\n 'colSpan', // td\n 'headers', // td\n 'rowSpan', // td, th\n 'scope', // th\n]);\n\nexport const colGroupProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\nexport const colProperties = toObjectMap(htmlElementProperties, [\n 'span', // col, colgroup\n]);\n\n/**\n * An array of FORM tag properties and events.\n *\n * @public\n */\nexport const formProperties = toObjectMap(htmlElementProperties, [\n 'acceptCharset', // form\n 'action', // form\n 'encType', // form\n 'encType', // form\n 'method', // form\n 'noValidate', // form\n 'target', // form\n]);\n\n/**\n * An array of IFRAME tag properties and events.\n *\n * @public\n */\nexport const iframeProperties = toObjectMap(htmlElementProperties, [\n 'allow', // iframe\n 'allowFullScreen', // iframe\n 'allowPaymentRequest', // iframe\n 'allowTransparency', // iframe\n 'csp', // iframe\n 'height', // canvas, embed, iframe, img, input, object, video\n 'importance', // iframe\n 'referrerPolicy', // iframe\n 'sandbox', // iframe\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcDoc', // iframe\n 'width', // canvas, embed, iframe, img, input, object, video,\n]);\n\n/**\n * An array of IMAGE tag properties and events.\n *\n * @public\n */\nexport const imgProperties = toObjectMap(htmlElementProperties, [\n 'alt', // area, img, input\n 'crossOrigin', // img\n 'height', // canvas, embed, iframe, img, input, object, video\n 'src', // audio, embed, iframe, img, input, script, source, track, video\n 'srcSet', // img, source\n 'useMap', // img, object,\n 'width', // canvas, embed, iframe, img, input, object, video\n]);\n\n/**\n * @deprecated Use imgProperties for img elements.\n */\nexport const imageProperties = imgProperties;\n\n/**\n * An array of DIV tag properties and events.\n *\n * @public\n */\nexport const divProperties = htmlElementProperties;\n\n/**\n * Gets native supported props for an html element provided the allowance set. Use one of the property\n * sets defined (divProperties, buttonPropertes, etc) to filter out supported properties from a given\n * props set. Note that all data- and aria- prefixed attributes will be allowed.\n * NOTE: getNativeProps should always be applied first when adding props to a react component. The\n * non-native props should be applied second. This will prevent getNativeProps from overriding your custom props.\n * For example, if props passed to getNativeProps has an onClick function and getNativeProps is added to\n * the component after an onClick function is added, then the getNativeProps onClick will override it.\n *\n * @public\n * @param props - The unfiltered input props\n * @param allowedPropsNames - The array or record of allowed prop names.\n * @returns The filtered props\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getNativeProps>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: Record,\n allowedPropNames: string[] | Record,\n excludedPropNames?: string[],\n): T {\n // It'd be great to properly type this while allowing 'aria-` and 'data-' attributes like TypeScript does for\n // JSX attributes, but that ability is hardcoded into the TS compiler with no analog in TypeScript typings.\n // Then we'd be able to enforce props extends native props (including aria- and data- attributes), and then\n // return native props.\n // We should be able to do this once this PR is merged: https://github.com/microsoft/TypeScript/pull/26797\n\n const isArray = Array.isArray(allowedPropNames);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record = {};\n const keys = Object.keys(props);\n\n for (const key of keys) {\n const isNativeProp =\n (!isArray && (allowedPropNames as Record)[key]) ||\n (isArray && (allowedPropNames as string[]).indexOf(key) >= 0) ||\n key.indexOf('data-') === 0 ||\n key.indexOf('aria-') === 0;\n\n if (isNativeProp && (!excludedPropNames || excludedPropNames?.indexOf(key) === -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result[key] = props![key] as any;\n }\n }\n\n return result as T;\n}\n","import * as React from 'react';\n\n/**\n * DelayedRender component props.\n *\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface IDelayedRenderProps extends React.Props<{}> {\n /**\n * Number of milliseconds to delay rendering children.\n */\n delay?: number;\n}\n\n/**\n * DelayedRender component state.\n *\n * @internal\n */\nexport interface IDelayedRenderState {\n /**\n * Whether the component is rendered or not.\n */\n isRendered: boolean;\n}\n\n/**\n * Utility component for delaying the render of a child component after a given delay. This component\n * requires a single child component; don't pass in many components. Wrap multiple components in a DIV\n * if necessary.\n *\n * @public\n * {@docCategory DelayedRender}\n */\nexport class DelayedRender extends React.Component {\n public static defaultProps = {\n delay: 0,\n };\n\n private _timeoutId: number | undefined;\n\n constructor(props: IDelayedRenderProps) {\n super(props);\n this.state = {\n isRendered: false,\n };\n }\n\n public componentDidMount(): void {\n let { delay } = this.props;\n this._timeoutId = window.setTimeout(() => {\n this.setState({\n isRendered: true,\n });\n }, delay);\n }\n\n public componentWillUnmount(): void {\n if (this._timeoutId) {\n clearTimeout(this._timeoutId);\n }\n }\n\n public render(): React.ReactElement<{}> | null {\n return this.state.isRendered ? (React.Children.only(this.props.children) as React.ReactElement<{}>) : null;\n }\n}\n","import { IRawStyle } from '@uifabric/merge-styles';\n\nexport const hiddenContentStyle: IRawStyle = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n padding: 0,\n border: 0,\n overflow: 'hidden',\n};\n","import { ITheme } from '../interfaces/index';\nimport { Stylesheet } from '@uifabric/merge-styles';\nimport { memoizeFunction } from '@uifabric/utilities';\n\nexport type GlobalClassNames = Record;\n\n/**\n * Internal memoized function which simply takes in the class map and the\n * disable boolean. These immutable values can be memoized.\n */\nconst _getGlobalClassNames = memoizeFunction(\n (classNames: GlobalClassNames, disableGlobalClassNames?: boolean): GlobalClassNames => {\n const styleSheet = Stylesheet.getInstance();\n\n if (disableGlobalClassNames) {\n // disable global classnames\n return (Object.keys(classNames) as (keyof T)[]).reduce((acc, className) => {\n acc[className] = styleSheet.getClassName(classNames[className]);\n return acc;\n }, {} as GlobalClassNames);\n }\n\n // use global classnames\n return classNames;\n },\n);\n\n/**\n * Checks for the `disableGlobalClassNames` property on the `theme` to determine if it should return `classNames`\n * Note that calls to this function are memoized.\n *\n * @param classNames - The collection of global class names that apply when the flag is false. Make sure to pass in\n * the same instance on each call to benefit from memoization.\n * @param theme - The theme to check the flag on\n * @param disableGlobalClassNames - Optional. Explicitly opt in/out of disabling global classnames. Defaults to false.\n */\nexport function getGlobalClassNames(\n classNames: GlobalClassNames,\n theme: ITheme,\n disableGlobalClassNames?: boolean,\n): GlobalClassNames {\n return _getGlobalClassNames(\n classNames,\n disableGlobalClassNames !== undefined ? disableGlobalClassNames : theme.disableGlobalClassNames,\n );\n}\n","import { IRawStyle } from '../MergeStyles';\n\nexport const HighContrastSelector = '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\nexport const HighContrastSelectorWhite =\n // eslint-disable-next-line @fluentui/max-len\n '@media screen and (-ms-high-contrast: black-on-white), screen and (forced-colors: active) and (prefers-color-scheme: light)';\nexport const HighContrastSelectorBlack =\n // eslint-disable-next-line @fluentui/max-len\n '@media screen and (-ms-high-contrast: white-on-black), screen and (forced-colors: active) and (prefers-color-scheme: dark)';\n/**\n * @deprecated Use `HighContrastSelector`\n */\nexport const EdgeChromiumHighContrastSelector =\n '@media screen and (-ms-high-contrast: active), screen and (forced-colors: active)';\n\nexport const ScreenWidthMinSmall = 320;\nexport const ScreenWidthMinMedium = 480;\nexport const ScreenWidthMinLarge = 640;\nexport const ScreenWidthMinXLarge = 1024;\nexport const ScreenWidthMinXXLarge = 1366;\nexport const ScreenWidthMinXXXLarge = 1920;\nexport const ScreenWidthMaxSmall = ScreenWidthMinMedium - 1;\nexport const ScreenWidthMaxMedium = ScreenWidthMinLarge - 1;\nexport const ScreenWidthMaxLarge = ScreenWidthMinXLarge - 1;\nexport const ScreenWidthMaxXLarge = ScreenWidthMinXXLarge - 1;\nexport const ScreenWidthMaxXXLarge = ScreenWidthMinXXXLarge - 1;\n\nexport const ScreenWidthMinUhfMobile = 768;\n\nexport function getScreenSelector(min: number | undefined, max: number | undefined): string {\n const minSelector = typeof min === 'number' ? ` and (min-width: ${min}px)` : '';\n const maxSelector = typeof max === 'number' ? ` and (max-width: ${max}px)` : '';\n return `@media only screen${minSelector}${maxSelector}`;\n}\n\n/**\n * The style which turns off high contrast adjustment in browsers.\n */\nexport function getHighContrastNoAdjustStyle(): IRawStyle {\n return {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n };\n}\n\n/**\n * The style which turns off high contrast adjustment in (only) Edge Chromium browser.\n * @deprecated Use `getHighContrastNoAdjustStyle`\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getEdgeChromiumNoHighContrastAdjustSelector(): { [EdgeChromiumHighContrastSelector]: IRawStyle } {\n return {\n // eslint-disable-next-line deprecation/deprecation\n [EdgeChromiumHighContrastSelector]: {\n forcedColorAdjust: 'none',\n MsHighContrastAdjust: 'none',\n },\n };\n}\n","import { IKeyframes } from './IKeyframes';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers keyframe definitions.\n *\n * @public\n */\nexport function keyframes(timeline: IKeyframes): string {\n const stylesheet = Stylesheet.getInstance();\n const name = stylesheet.getClassName();\n\n const rulesArray: string[] = [];\n\n for (const prop in timeline) {\n if (timeline.hasOwnProperty(prop)) {\n rulesArray.push(prop, '{', serializeRuleEntries(getStyleOptions(), timeline[prop]), '}');\n }\n }\n const rules = rulesArray.join('');\n\n stylesheet.insertRule(`@keyframes ${name}{${rules}}`, true);\n\n stylesheet.cacheClassName(name, rules, [], ['keyframes', rules]);\n\n return name;\n}\n","// A packages cache that makes sure that we don't inject the same packageName twice in the same bundle -\n// this cache is local to the module closure inside this bundle\nconst packagesCache: { [name: string]: string } = {};\n\n// Cache access to window to avoid IE11 memory leak.\nlet _win: Window | undefined = undefined;\n\ntry {\n _win = window;\n} catch (e) {\n /* no-op */\n}\n\nexport function setVersion(packageName: string, packageVersion: string): void {\n if (typeof _win !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const packages = ((_win as any).__packages__ = (_win as any).__packages__ || {});\n\n // We allow either the global packages or local packages caches to invalidate so testing can\n // just clear the global to set this state\n if (!packages[packageName] || !packagesCache[packageName]) {\n packagesCache[packageName] = packageVersion;\n const versions = (packages[packageName] = packages[packageName] || []);\n versions.push(packageVersion);\n }\n }\n}\n","import { setVersion } from './setVersion';\nexport { setVersion };\n\nsetVersion('@uifabric/set-version', '6.0.0');\n","// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@uifabric/set-version';\nsetVersion('@uifabric/styling', '7.25.0');","import { IPalette } from '../types/index';\n\n// When adding or removing a color, make sure you keep this consistent with IColorClassNames\n// by adding the color variants.\nexport const DefaultPalette: IPalette = {\n themeDarker: '#004578',\n themeDark: '#005a9e',\n themeDarkAlt: '#106ebe',\n themePrimary: '#0078d4',\n themeSecondary: '#2b88d8',\n themeTertiary: '#71afe5',\n themeLight: '#c7e0f4',\n themeLighter: '#deecf9',\n themeLighterAlt: '#eff6fc',\n black: '#000000',\n blackTranslucent40: 'rgba(0,0,0,.4)',\n neutralDark: '#201f1e',\n neutralPrimary: '#323130',\n neutralPrimaryAlt: '#3b3a39',\n neutralSecondary: '#605e5c',\n neutralSecondaryAlt: '#8a8886',\n neutralTertiary: '#a19f9d',\n neutralTertiaryAlt: '#c8c6c4',\n neutralQuaternary: '#d2d0ce',\n neutralQuaternaryAlt: '#e1dfdd',\n neutralLight: '#edebe9',\n neutralLighter: '#f3f2f1',\n neutralLighterAlt: '#faf9f8',\n accent: '#0078d4',\n white: '#ffffff',\n whiteTranslucent40: 'rgba(255,255,255,.4)',\n yellowDark: '#d29200',\n yellow: '#ffb900',\n yellowLight: '#fff100',\n orange: '#d83b01',\n orangeLight: '#ea4300',\n orangeLighter: '#ff8c00',\n redDark: '#a4262c',\n red: '#e81123',\n magentaDark: '#5c005c',\n magenta: '#b4009e',\n magentaLight: '#e3008c',\n purpleDark: '#32145a',\n purple: '#5c2d91',\n purpleLight: '#b4a0ff',\n blueDark: '#002050',\n blueMid: '#00188f',\n blue: '#0078d4',\n blueLight: '#00bcf2',\n tealDark: '#004b50',\n teal: '#008272',\n tealLight: '#00b294',\n greenDark: '#004b1c',\n green: '#107c10',\n greenLight: '#bad80a',\n};\n","export namespace Depths {\n export const depth0 = '0 0 0 0 transparent';\n export const depth4 = '0 1.6px 3.6px 0 rgba(0, 0, 0, 0.132), 0 0.3px 0.9px 0 rgba(0, 0, 0, 0.108)';\n export const depth8 = '0 3.2px 7.2px 0 rgba(0, 0, 0, 0.132), 0 0.6px 1.8px 0 rgba(0, 0, 0, 0.108)';\n export const depth16 = '0 6.4px 14.4px 0 rgba(0, 0, 0, 0.132), 0 1.2px 3.6px 0 rgba(0, 0, 0, 0.108)';\n export const depth64 = '0 25.6px 57.6px 0 rgba(0, 0, 0, 0.22), 0 4.8px 14.4px 0 rgba(0, 0, 0, 0.18)';\n}\n","import { IEffects } from '../types/index';\nimport { Depths } from './FluentDepths';\n\nexport const DefaultEffects: IEffects = {\n elevation4: Depths.depth4,\n elevation8: Depths.depth8,\n elevation16: Depths.depth16,\n elevation64: Depths.depth64,\n\n roundedCorner2: '2px',\n roundedCorner4: '4px',\n roundedCorner6: '6px',\n};\n","import { IFontWeight } from '@uifabric/merge-styles';\n\n// Font face names to be registered.\nexport namespace LocalizedFontNames {\n export const Arabic = 'Segoe UI Web (Arabic)';\n export const Cyrillic = 'Segoe UI Web (Cyrillic)';\n export const EastEuropean = 'Segoe UI Web (East European)';\n export const Greek = 'Segoe UI Web (Greek)';\n export const Hebrew = 'Segoe UI Web (Hebrew)';\n export const Thai = 'Leelawadee UI Web';\n export const Vietnamese = 'Segoe UI Web (Vietnamese)';\n export const WestEuropean = 'Segoe UI Web (West European)';\n export const Selawik = 'Selawik Web';\n export const Armenian = 'Segoe UI Web (Armenian)';\n export const Georgian = 'Segoe UI Web (Georgian)';\n}\n\n// Font families with fallbacks, for the general regions.\nexport namespace LocalizedFontFamilies {\n export const Arabic = `'${LocalizedFontNames.Arabic}'`;\n export const ChineseSimplified = `'Microsoft Yahei UI', Verdana, Simsun`;\n export const ChineseTraditional = `'Microsoft Jhenghei UI', Pmingliu`;\n export const Cyrillic = `'${LocalizedFontNames.Cyrillic}'`;\n export const EastEuropean = `'${LocalizedFontNames.EastEuropean}'`;\n export const Greek = `'${LocalizedFontNames.Greek}'`;\n export const Hebrew = `'${LocalizedFontNames.Hebrew}'`;\n export const Hindi = `'Nirmala UI'`;\n export const Japanese = `'Yu Gothic UI', 'Meiryo UI', Meiryo, 'MS Pgothic', Osaka`;\n export const Korean = `'Malgun Gothic', Gulim`;\n export const Selawik = `'${LocalizedFontNames.Selawik}'`;\n export const Thai = `'Leelawadee UI Web', 'Kmer UI'`;\n export const Vietnamese = `'${LocalizedFontNames.Vietnamese}'`;\n export const WestEuropean = `'${LocalizedFontNames.WestEuropean}'`;\n export const Armenian = `'${LocalizedFontNames.Armenian}'`;\n export const Georgian = `'${LocalizedFontNames.Georgian}'`;\n}\n\n// Standard font sizes.\nexport namespace FontSizes {\n export const size10 = '10px';\n export const size12 = '12px';\n export const size14 = '14px';\n export const size16 = '16px';\n export const size18 = '18px';\n export const size20 = '20px';\n export const size24 = '24px';\n export const size28 = '28px';\n export const size32 = '32px';\n export const size42 = '42px';\n export const size68 = '68px';\n\n export const mini: string = '10px';\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const smallPlus: string = '12px';\n export const medium: string = '14px';\n export const mediumPlus: string = '16px';\n export const icon: string = '16px';\n export const large: string = '18px';\n export const xLarge: string = '20px';\n export const xLargePlus: string = '24px';\n export const xxLarge: string = '28px';\n export const xxLargePlus: string = '32px';\n export const superLarge: string = '42px';\n export const mega: string = '68px';\n}\n\n// Standard font weights.\nexport namespace FontWeights {\n export const light: IFontWeight = 100;\n export const semilight: IFontWeight = 300;\n export const regular: IFontWeight = 400;\n export const semibold: IFontWeight = 600;\n export const bold: IFontWeight = 700;\n}\n\n// Standard Icon Sizes.\nexport namespace IconFontSizes {\n export const xSmall: string = '10px';\n export const small: string = '12px';\n export const medium: string = '16px';\n export const large: string = '20px';\n}\n","import { IFontWeight, IRawStyle } from '@uifabric/merge-styles';\nimport { IFontStyles } from '../types/IFontStyles';\nimport { FontSizes, FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\n\n// Fallback fonts, if specified system or web fonts are unavailable.\nconst FontFamilyFallbacks = `'Segoe UI', -apple-system, BlinkMacSystemFont, 'Roboto', 'Helvetica Neue', sans-serif`;\n\n// By default, we favor system fonts for the default.\n// All localized fonts use a web font and never use the system font.\nconst defaultFontFamily = `'Segoe UI', '${LocalizedFontNames.WestEuropean}'`;\n\n// Mapping of language prefix to to font family.\nconst LanguageToFontMap = {\n ar: LocalizedFontFamilies.Arabic,\n bg: LocalizedFontFamilies.Cyrillic,\n cs: LocalizedFontFamilies.EastEuropean,\n el: LocalizedFontFamilies.Greek,\n et: LocalizedFontFamilies.EastEuropean,\n he: LocalizedFontFamilies.Hebrew,\n hi: LocalizedFontFamilies.Hindi,\n hr: LocalizedFontFamilies.EastEuropean,\n hu: LocalizedFontFamilies.EastEuropean,\n ja: LocalizedFontFamilies.Japanese,\n kk: LocalizedFontFamilies.EastEuropean,\n ko: LocalizedFontFamilies.Korean,\n lt: LocalizedFontFamilies.EastEuropean,\n lv: LocalizedFontFamilies.EastEuropean,\n pl: LocalizedFontFamilies.EastEuropean,\n ru: LocalizedFontFamilies.Cyrillic,\n sk: LocalizedFontFamilies.EastEuropean,\n 'sr-latn': LocalizedFontFamilies.EastEuropean,\n th: LocalizedFontFamilies.Thai,\n tr: LocalizedFontFamilies.EastEuropean,\n uk: LocalizedFontFamilies.Cyrillic,\n vi: LocalizedFontFamilies.Vietnamese,\n 'zh-hans': LocalizedFontFamilies.ChineseSimplified,\n 'zh-hant': LocalizedFontFamilies.ChineseTraditional,\n hy: LocalizedFontFamilies.Armenian,\n ka: LocalizedFontFamilies.Georgian,\n};\n\nfunction _fontFamilyWithFallbacks(fontFamily: string): string {\n return `${fontFamily}, ${FontFamilyFallbacks}`;\n}\n\n/**\n * If there is a localized font for this language, return that.\n * Returns undefined if there is no localized font for that language.\n */\nfunction _getLocalizedFontFamily(language: string | null): string {\n for (const lang in LanguageToFontMap) {\n if (LanguageToFontMap.hasOwnProperty(lang) && language && lang.indexOf(language) === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (LanguageToFontMap as any)[lang];\n }\n }\n\n return defaultFontFamily;\n}\n\nfunction _createFont(size: string, weight: IFontWeight, fontFamily: string): IRawStyle {\n return {\n fontFamily: fontFamily,\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n fontSize: size,\n fontWeight: weight,\n };\n}\n\nexport function createFontStyles(localeCode: string | null): IFontStyles {\n const localizedFont = _getLocalizedFontFamily(localeCode);\n const fontFamilyWithFallback = _fontFamilyWithFallbacks(localizedFont);\n\n const fontStyles = {\n tiny: _createFont(FontSizes.mini, FontWeights.regular, fontFamilyWithFallback),\n xSmall: _createFont(FontSizes.xSmall, FontWeights.regular, fontFamilyWithFallback),\n small: _createFont(FontSizes.small, FontWeights.regular, fontFamilyWithFallback),\n smallPlus: _createFont(FontSizes.smallPlus, FontWeights.regular, fontFamilyWithFallback),\n medium: _createFont(FontSizes.medium, FontWeights.regular, fontFamilyWithFallback),\n mediumPlus: _createFont(FontSizes.mediumPlus, FontWeights.regular, fontFamilyWithFallback),\n large: _createFont(FontSizes.large, FontWeights.regular, fontFamilyWithFallback),\n xLarge: _createFont(FontSizes.xLarge, FontWeights.semibold, fontFamilyWithFallback),\n xLargePlus: _createFont(FontSizes.xLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n xxLarge: _createFont(FontSizes.xxLarge, FontWeights.semibold, fontFamilyWithFallback),\n xxLargePlus: _createFont(FontSizes.xxLargePlus, FontWeights.semibold, fontFamilyWithFallback),\n superLarge: _createFont(FontSizes.superLarge, FontWeights.semibold, fontFamilyWithFallback),\n mega: _createFont(FontSizes.mega, FontWeights.semibold, fontFamilyWithFallback),\n };\n\n return fontStyles;\n}\n","import { getDocument } from './dom/getDocument';\nimport * as localStorage from './localStorage';\nimport * as sessionStorage from './sessionStorage';\n\n// Default to undefined so that we initialize on first read.\nlet _language: string | null;\n\nconst STORAGE_KEY = 'language';\n\n/**\n * Gets the language set for the page.\n * @param persistenceType - Where to persist the value. Default is `localStorage` if available.\n * (In version 8, the default will be `sessionStorage`.)\n */\nexport function getLanguage(\n persistenceType: 'localStorage' | 'sessionStorage' | 'none' = 'localStorage',\n): string | null {\n if (_language === undefined) {\n let doc = getDocument();\n const savedLanguage =\n persistenceType === 'localStorage'\n ? localStorage.getItem(STORAGE_KEY)\n : persistenceType === 'sessionStorage'\n ? sessionStorage.getItem(STORAGE_KEY)\n : undefined;\n\n if (savedLanguage) {\n _language = savedLanguage;\n }\n\n if (_language === undefined && doc) {\n _language = doc.documentElement.getAttribute('lang');\n }\n\n if (_language === undefined) {\n _language = 'en';\n }\n }\n\n return _language;\n}\n\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @param language - Language to set.\n * @param persistenceType - Where to persist the value. Default is `localStorage` if available.\n * (In version 8, the default will be `sessionStorage`.)\n */\nexport function setLanguage(language: string, persistenceType?: 'localStorage' | 'sessionStorage' | 'none'): void;\n/**\n * Sets the language for the page (by adjusting the lang attribute of the html element).\n * @deprecated Use string parameter version.\n * @param language - Language to set.\n * @param avoidPersisting - If true, don't store the value.\n */\nexport function setLanguage(language: string, avoidPersisting?: boolean): void;\nexport function setLanguage(\n language: string,\n persistenceParam?: 'localStorage' | 'sessionStorage' | 'none' | boolean,\n): void {\n let doc = getDocument();\n\n if (doc) {\n doc.documentElement.setAttribute('lang', language);\n }\n\n const persistenceType = persistenceParam === true ? 'none' : !persistenceParam ? 'localStorage' : persistenceParam;\n if (persistenceType === 'localStorage') {\n localStorage.setItem(STORAGE_KEY, language);\n } else if (persistenceType === 'sessionStorage') {\n sessionStorage.setItem(STORAGE_KEY, language);\n }\n\n _language = language;\n}\n","import { fontFace, IFontWeight } from '@uifabric/merge-styles';\nimport { FontWeights, LocalizedFontFamilies, LocalizedFontNames } from './FluentFonts';\nimport { createFontStyles } from './createFontStyles';\nimport { getLanguage, getWindow } from '@uifabric/utilities';\nimport { IFontStyles } from '../types/IFontStyles';\nimport { IFabricConfig } from '../types/IFabricConfig';\n\n// Default urls.\nconst DefaultBaseUrl = 'https://static2.sharepointonline.com/files/fabric/assets';\n\n// Standard font styling.\nexport const DefaultFontStyles: IFontStyles = createFontStyles(getLanguage('sessionStorage'));\n\nfunction _registerFontFace(fontFamily: string, url: string, fontWeight?: IFontWeight, localFontName?: string): void {\n fontFamily = `'${fontFamily}'`;\n\n const localFontSrc = localFontName !== undefined ? `local('${localFontName}'),` : '';\n\n fontFace({\n fontFamily,\n src: localFontSrc + `url('${url}.woff2') format('woff2'),` + `url('${url}.woff') format('woff')`,\n fontWeight,\n fontStyle: 'normal',\n fontDisplay: 'swap',\n });\n}\n\nfunction _registerFontFaceSet(\n baseUrl: string,\n fontFamily: string,\n cdnFolder: string,\n cdnFontName: string = 'segoeui',\n localFontName?: string,\n): void {\n const urlBase = `${baseUrl}/${cdnFolder}/${cdnFontName}`;\n\n _registerFontFace(fontFamily, urlBase + '-light', FontWeights.light, localFontName && localFontName + ' Light');\n _registerFontFace(\n fontFamily,\n urlBase + '-semilight',\n FontWeights.semilight,\n localFontName && localFontName + ' SemiLight',\n );\n _registerFontFace(fontFamily, urlBase + '-regular', FontWeights.regular, localFontName);\n _registerFontFace(\n fontFamily,\n urlBase + '-semibold',\n FontWeights.semibold,\n localFontName && localFontName + ' SemiBold',\n );\n _registerFontFace(fontFamily, urlBase + '-bold', FontWeights.bold, localFontName && localFontName + ' Bold');\n}\n\nexport function registerDefaultFontFaces(baseUrl: string): void {\n if (baseUrl) {\n const fontUrl = `${baseUrl}/fonts`;\n\n // Produce @font-face definitions for all supported web fonts.\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Thai, 'leelawadeeui-thai', 'leelawadeeui');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Arabic, 'segoeui-arabic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Cyrillic, 'segoeui-cyrillic');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.EastEuropean, 'segoeui-easteuropean');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Greek, 'segoeui-greek');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Hebrew, 'segoeui-hebrew');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Vietnamese, 'segoeui-vietnamese');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.WestEuropean, 'segoeui-westeuropean', 'segoeui', 'Segoe UI');\n _registerFontFaceSet(fontUrl, LocalizedFontFamilies.Selawik, 'selawik', 'selawik');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Armenian, 'segoeui-armenian');\n _registerFontFaceSet(fontUrl, LocalizedFontNames.Georgian, 'segoeui-georgian');\n\n // Leelawadee UI (Thai) does not have a 'light' weight, so we override\n // the font-face generated above to use the 'semilight' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-semilight`, FontWeights.light);\n\n // Leelawadee UI (Thai) does not have a 'semibold' weight, so we override\n // the font-face generated above to use the 'bold' weight instead.\n _registerFontFace('Leelawadee UI Web', `${fontUrl}/leelawadeeui-thai/leelawadeeui-bold`, FontWeights.semibold);\n }\n}\n\n/**\n * Reads the fontBaseUrl from window.FabricConfig.fontBaseUrl or falls back to a default.\n */\nfunction _getFontBaseUrl(): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fabricConfig: IFabricConfig | undefined = (getWindow() as any)?.FabricConfig;\n\n return fabricConfig?.fontBaseUrl ?? DefaultBaseUrl;\n}\n\n/**\n * Register the font faces.\n */\nregisterDefaultFontFaces(_getFontBaseUrl());\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from local storage without throwing an exception\n * @param key The key of the item to fetch from local storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.localStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into local storage without throwing an exception\n * @param key The key of the item to add to local storage\n * @param data The data to put into local storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n const win = getWindow();\n\n win && win.localStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","import { IFontFace } from './IRawStyleBase';\nimport { getStyleOptions } from './StyleOptionsState';\nimport { Stylesheet } from './Stylesheet';\nimport { serializeRuleEntries } from './styleToClassName';\n\n/**\n * Registers a font face.\n * @public\n */\nexport function fontFace(font: IFontFace): void {\n Stylesheet.getInstance().insertRule(`@font-face{${serializeRuleEntries(getStyleOptions(), font as {})}}`, true);\n}\n","/**\n * Simple deep merge function. Takes all arguments and returns a deep copy of the objects merged\n * together in the order provided. If an object creates a circular reference, it will assign the\n * original reference.\n */\nexport function merge(target: Partial, ...args: (Partial | null | undefined | false)[]): T {\n for (const arg of args) {\n _merge(target || {}, arg as Partial);\n }\n\n return target as T;\n}\n\n/**\n * The _merge helper iterates through all props on source and assigns them to target.\n * When the value is an object, we will create a deep clone of the object. However if\n * there is a circular reference, the value will not be deep cloned and will persist\n * the reference.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _merge(target: T, source: T, circularReferences: any[] = []): T {\n circularReferences.push(source);\n\n for (let name in source) {\n if (source.hasOwnProperty(name)) {\n if (name !== '__proto__' && name !== 'constructor' && name !== 'prototype') {\n const value: T[Extract] = source[name];\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const isCircularReference = circularReferences.indexOf(value) > -1;\n target[name] = (isCircularReference\n ? value\n : _merge(target[name] || {}, value, circularReferences)) as T[Extract];\n } else {\n target[name] = value;\n }\n }\n }\n }\n\n circularReferences.pop();\n\n return target;\n}\n","import { IEffects, IPalette, ISemanticColors } from '../types/index';\n\n/** Generates all the semantic slot colors based on the theme so far\n * We'll use these as fallbacks for semantic slots that the passed in theme did not define.\n * The caller must still mix in the customized semantic slots at the end.\n */\nexport function makeSemanticColors(\n p: IPalette,\n e: IEffects,\n s: Partial | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): ISemanticColors {\n const semanticColors: Partial = {\n primaryButtonBorder: 'transparent',\n\n errorText: !isInverted ? '#a4262c' : '#F1707B',\n\n messageText: !isInverted ? '#323130' : '#F3F2F1',\n messageLink: !isInverted ? '#005A9E' : '#6CB8F6',\n messageLinkHovered: !isInverted ? '#004578' : '#82C7FF',\n\n infoIcon: !isInverted ? '#605e5c' : '#C8C6C4',\n errorIcon: !isInverted ? '#A80000' : '#F1707B',\n blockingIcon: !isInverted ? '#FDE7E9' : '#442726',\n warningIcon: !isInverted ? '#797775' : '#C8C6C4',\n severeWarningIcon: !isInverted ? '#D83B01' : '#FCE100',\n successIcon: !isInverted ? '#107C10' : '#92C353',\n\n infoBackground: !isInverted ? '#f3f2f1' : '#323130',\n errorBackground: !isInverted ? '#FDE7E9' : '#442726',\n blockingBackground: !isInverted ? '#FDE7E9' : '#442726',\n warningBackground: !isInverted ? '#FFF4CE' : '#433519',\n severeWarningBackground: !isInverted ? '#FED9CC' : '#4F2A0F',\n successBackground: !isInverted ? '#DFF6DD' : '#393D1B',\n\n // deprecated\n warningHighlight: !isInverted ? '#ffb900' : '#fff100',\n successText: !isInverted ? '#107C10' : '#92c353',\n\n ...s,\n };\n\n const fullSemanticColors = getSemanticColors(p, e, semanticColors, isInverted);\n return _fixDeprecatedSlots(fullSemanticColors, depComments);\n}\n\n/**\n * Map partial platte and effects to partial semantic colors.\n */\nexport function getSemanticColors>(\n p: Partial | undefined,\n e: Partial | undefined,\n s: Partial | undefined,\n isInverted: boolean,\n depComments: boolean = false,\n): TResult {\n let result: Partial = {};\n\n // map palette\n const {\n white,\n black,\n themePrimary,\n themeDark,\n themeDarker,\n themeDarkAlt,\n themeLighter,\n neutralLight,\n neutralLighter,\n neutralDark,\n neutralQuaternary,\n neutralQuaternaryAlt,\n neutralPrimary,\n neutralSecondary,\n neutralSecondaryAlt,\n neutralTertiary,\n neutralTertiaryAlt,\n neutralLighterAlt,\n accent,\n } = p || {};\n\n if (white) {\n result.bodyBackground = white;\n result.bodyFrameBackground = white;\n result.accentButtonText = white;\n result.buttonBackground = white;\n result.primaryButtonText = white;\n result.primaryButtonTextHovered = white;\n result.primaryButtonTextPressed = white;\n result.inputBackground = white;\n result.inputForegroundChecked = white;\n result.listBackground = white;\n result.menuBackground = white;\n result.cardStandoutBackground = white;\n }\n if (black) {\n result.bodyTextChecked = black;\n result.buttonTextCheckedHovered = black;\n }\n if (themePrimary) {\n result.link = themePrimary;\n result.primaryButtonBackground = themePrimary;\n result.inputBackgroundChecked = themePrimary;\n result.inputIcon = themePrimary;\n result.inputFocusBorderAlt = themePrimary;\n result.menuIcon = themePrimary;\n result.menuHeader = themePrimary;\n result.accentButtonBackground = themePrimary;\n }\n if (themeDark) {\n result.primaryButtonBackgroundPressed = themeDark;\n result.inputBackgroundCheckedHovered = themeDark;\n result.inputIconHovered = themeDark;\n }\n if (themeDarker) {\n result.linkHovered = themeDarker;\n }\n if (themeDarkAlt) {\n result.primaryButtonBackgroundHovered = themeDarkAlt;\n }\n if (themeLighter) {\n result.inputPlaceholderBackgroundChecked = themeLighter;\n }\n if (neutralLight) {\n result.bodyBackgroundChecked = neutralLight;\n result.bodyFrameDivider = neutralLight;\n result.bodyDivider = neutralLight;\n result.variantBorder = neutralLight;\n result.buttonBackgroundCheckedHovered = neutralLight;\n result.buttonBackgroundPressed = neutralLight;\n result.listItemBackgroundChecked = neutralLight;\n result.listHeaderBackgroundPressed = neutralLight;\n result.menuItemBackgroundPressed = neutralLight;\n // eslint-disable-next-line deprecation/deprecation\n result.menuItemBackgroundChecked = neutralLight;\n }\n if (neutralLighter) {\n result.bodyBackgroundHovered = neutralLighter;\n result.buttonBackgroundHovered = neutralLighter;\n result.buttonBackgroundDisabled = neutralLighter;\n result.buttonBorderDisabled = neutralLighter;\n result.primaryButtonBackgroundDisabled = neutralLighter;\n result.disabledBackground = neutralLighter;\n result.listItemBackgroundHovered = neutralLighter;\n result.listHeaderBackgroundHovered = neutralLighter;\n result.menuItemBackgroundHovered = neutralLighter;\n }\n if (neutralQuaternary) {\n result.primaryButtonTextDisabled = neutralQuaternary;\n result.disabledSubtext = neutralQuaternary;\n }\n if (neutralQuaternaryAlt) {\n result.listItemBackgroundCheckedHovered = neutralQuaternaryAlt;\n }\n if (neutralTertiary) {\n result.disabledBodyText = neutralTertiary;\n result.variantBorderHovered = s?.variantBorderHovered || neutralTertiary;\n result.buttonTextDisabled = neutralTertiary;\n result.inputIconDisabled = neutralTertiary;\n result.disabledText = neutralTertiary;\n }\n if (neutralPrimary) {\n result.bodyText = neutralPrimary;\n result.actionLink = neutralPrimary;\n result.buttonText = neutralPrimary;\n result.inputBorderHovered = neutralPrimary;\n result.inputText = neutralPrimary;\n result.listText = neutralPrimary;\n result.menuItemText = neutralPrimary;\n }\n if (neutralLighterAlt) {\n result.bodyStandoutBackground = neutralLighterAlt;\n result.defaultStateBackground = neutralLighterAlt;\n }\n if (neutralDark) {\n result.actionLinkHovered = neutralDark;\n result.buttonTextHovered = neutralDark;\n result.buttonTextChecked = neutralDark;\n result.buttonTextPressed = neutralDark;\n result.inputTextHovered = neutralDark;\n result.menuItemTextHovered = neutralDark;\n }\n if (neutralSecondary) {\n result.bodySubtext = neutralSecondary;\n result.focusBorder = neutralSecondary;\n result.inputBorder = neutralSecondary;\n result.smallInputBorder = neutralSecondary;\n result.inputPlaceholderText = neutralSecondary;\n }\n if (neutralSecondaryAlt) {\n result.buttonBorder = neutralSecondaryAlt;\n }\n if (neutralTertiaryAlt) {\n result.disabledBodySubtext = neutralTertiaryAlt;\n result.disabledBorder = neutralTertiaryAlt;\n result.buttonBackgroundChecked = neutralTertiaryAlt;\n result.menuDivider = neutralTertiaryAlt;\n }\n if (accent) {\n result.accentButtonBackground = accent;\n }\n\n // map effects\n if (e?.elevation4) {\n result.cardShadow = e.elevation4;\n }\n if (!isInverted && e?.elevation8) {\n result.cardShadowHovered = e.elevation8;\n } else if (result.variantBorderHovered) {\n result.cardShadowHovered = '0 0 1px ' + result.variantBorderHovered;\n }\n\n result = {\n ...result,\n // mix in customized semantic slots\n ...s,\n };\n\n return result as TResult;\n}\n\nfunction _fixDeprecatedSlots(s: ISemanticColors, depComments: boolean): ISemanticColors {\n // Add @deprecated tag as comment if enabled\n let dep = '';\n if (depComments === true) {\n dep = ' /* @deprecated */';\n }\n\n /* eslint-disable deprecation/deprecation */\n s.listTextColor = s.listText + dep;\n s.menuItemBackgroundChecked += dep;\n s.warningHighlight += dep;\n s.warningText = s.messageText + dep;\n s.successText += dep;\n /* eslint-enable deprecation/deprecation */\n return s;\n}\n","import { ISpacing } from '../types/index';\n\nexport const DefaultSpacing: ISpacing = {\n s2: '4px',\n s1: '8px',\n m: '16px',\n l1: '20px',\n l2: '32px',\n};\n","import { DefaultPalette } from './colors/index';\nimport { DefaultEffects } from './effects/index';\nimport { DefaultFontStyles } from './fonts/index';\nimport { mergeThemes } from './mergeThemes';\nimport { DefaultSpacing } from './spacing/index';\nimport { PartialTheme, Theme } from './types/index';\nimport { makeSemanticColors } from './utilities/makeSemanticColors';\n\n/**\n * Creates a custom theme definition.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function createTheme(theme: PartialTheme = {}, depComments: boolean = false): Theme {\n const isInverted = !!theme.isInverted;\n const baseTheme: Theme = {\n palette: DefaultPalette,\n effects: DefaultEffects,\n fonts: DefaultFontStyles,\n spacing: DefaultSpacing,\n isInverted,\n disableGlobalClassNames: false,\n semanticColors: makeSemanticColors(DefaultPalette, DefaultEffects, undefined, isInverted, depComments),\n rtl: undefined,\n };\n\n return mergeThemes(baseTheme, theme);\n}\n","import { merge } from '@uifabric/utilities';\nimport { IFontStyles, PartialTheme, Theme } from './types/index';\nimport { getSemanticColors } from './utilities/makeSemanticColors';\n\n/**\n * Merge a partial/full theme into a full theme and returns a merged full theme.\n */\nexport function mergeThemes(theme: Theme, partialTheme: PartialTheme = {}): Theme {\n const mergedTheme = merge({}, theme, partialTheme, {\n semanticColors: getSemanticColors(\n partialTheme.palette,\n partialTheme.effects,\n partialTheme.semanticColors,\n partialTheme.isInverted === undefined ? theme.isInverted : partialTheme.isInverted,\n ),\n }) as Theme;\n\n if (partialTheme.palette?.themePrimary && !partialTheme.palette?.accent) {\n mergedTheme.palette.accent = partialTheme.palette.themePrimary;\n }\n\n if (partialTheme.defaultFontStyle) {\n for (const fontStyle of Object.keys(mergedTheme.fonts) as (keyof IFontStyles)[]) {\n mergedTheme.fonts[fontStyle] = merge(\n mergedTheme.fonts[fontStyle],\n partialTheme.defaultFontStyle,\n partialTheme?.fonts?.[fontStyle],\n );\n }\n }\n\n if (partialTheme.stylesheets) {\n mergedTheme.stylesheets = (theme.stylesheets || []).concat(partialTheme.stylesheets);\n }\n\n return mergedTheme;\n}\n","import { Customizations, getWindow } from '@uifabric/utilities';\nimport { ITheme, IPartialTheme, IFontStyles } from '../interfaces/index';\nimport { loadTheme as legacyLoadTheme } from '@microsoft/load-themed-styles';\nimport { IRawStyle } from '@uifabric/merge-styles';\nimport { createTheme } from '@fluentui/theme/lib/createTheme';\n\nexport { createTheme } from '@fluentui/theme/lib/createTheme';\n\nlet _theme: ITheme = createTheme({});\nlet _onThemeChangeCallbacks: Array<(theme: ITheme) => void> = [];\n\nexport const ThemeSettingName = 'theme';\n\nexport function initializeThemeInCustomizations(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const win: any = getWindow();\n\n if (win?.FabricConfig?.legacyTheme) {\n // does everything the `else` clause does and more, such as invoke legacy theming\n loadTheme(win.FabricConfig.legacyTheme);\n } else if (!Customizations.getSettings([ThemeSettingName]).theme) {\n if (win?.FabricConfig?.theme) {\n _theme = createTheme(win.FabricConfig.theme);\n }\n\n // Set the default theme.\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n }\n}\n\n// Ensure theme is initialized when this package is referenced.\ninitializeThemeInCustomizations();\n\n/**\n * Gets the theme object\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function getTheme(depComments: boolean = false): ITheme {\n if (depComments === true) {\n _theme = createTheme({}, depComments);\n }\n return _theme;\n}\n\n/**\n * Registers a callback that gets called whenever the theme changes.\n * This should only be used when the component cannot automatically get theme changes through its state.\n * This will not register duplicate callbacks.\n */\nexport function registerOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n if (_onThemeChangeCallbacks.indexOf(callback) === -1) {\n _onThemeChangeCallbacks.push(callback);\n }\n}\n\n/**\n * See registerOnThemeChangeCallback().\n * Removes previously registered callbacks.\n */\nexport function removeOnThemeChangeCallback(callback: (theme: ITheme) => void): void {\n const i = _onThemeChangeCallbacks.indexOf(callback);\n if (i === -1) {\n return;\n }\n\n _onThemeChangeCallbacks.splice(i, 1);\n}\n\n/**\n * Applies the theme, while filling in missing slots.\n * @param theme - Partial theme object.\n * @param depComments - Whether to include deprecated tags as comments for deprecated slots.\n */\nexport function loadTheme(theme: IPartialTheme, depComments: boolean = false): ITheme {\n _theme = createTheme(theme, depComments);\n\n // Invoke the legacy method of theming the page as well.\n legacyLoadTheme({ ..._theme.palette, ..._theme.semanticColors, ..._theme.effects, ..._loadFonts(_theme) });\n\n Customizations.applySettings({ [ThemeSettingName]: _theme });\n\n _onThemeChangeCallbacks.forEach((callback: (theme: ITheme) => void) => {\n try {\n callback(_theme);\n } catch (e) {\n // don't let a bad callback break everything else\n }\n });\n\n return _theme;\n}\n\n/**\n * Loads font variables into a JSON object.\n * @param theme - The theme object\n */\nfunction _loadFonts(theme: ITheme): { [name: string]: string } {\n const lines: { [key: string]: string } = {};\n\n for (const fontName of Object.keys(theme.fonts)) {\n const font: IRawStyle = theme.fonts[fontName as keyof IFontStyles];\n\n for (const propName of Object.keys(font)) {\n const name: string = fontName + propName.charAt(0).toUpperCase() + propName.slice(1);\n let value = font[propName as keyof IRawStyle] as string;\n\n if (propName === 'fontSize' && typeof value === 'number') {\n // if it's a number, convert it to px by default like our theming system does\n value = value + 'px';\n }\n lines[name] = value;\n }\n }\n return lines;\n}\n","import * as React from 'react';\nimport { ICustomizations } from './Customizations';\n\nexport interface ICustomizerContext {\n customizations: ICustomizations;\n}\n\nexport const CustomizerContext = React.createContext({\n customizations: {\n inCustomizerContext: false,\n settings: {},\n scopedSettings: {},\n },\n});\n","import * as React from 'react';\nimport { ISettings, Customizations } from './Customizations';\nimport { CustomizerContext } from './CustomizerContext';\n\n/**\n * Hook to get Customizations settings from Customizations singleton or CustomizerContext.\n * It will trigger component state update on settings change observed.\n */\nexport function useCustomizationSettings(properties: string[], scopeName?: string): ISettings {\n const forceUpdate = useForceUpdate();\n const { customizations } = React.useContext(CustomizerContext);\n const { inCustomizerContext } = customizations;\n React.useEffect(() => {\n if (!inCustomizerContext) {\n Customizations.observe(forceUpdate);\n }\n return () => {\n if (!inCustomizerContext) {\n Customizations.unobserve(forceUpdate);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- exclude forceUpdate\n }, [inCustomizerContext]);\n\n return Customizations.getSettings(properties, scopeName, customizations);\n}\n\nfunction useForceUpdate() {\n const [, setValue] = React.useState(0);\n return () => setValue(value => ++value);\n}\n","import * as React from 'react';\nimport { IStyleSet, IStyleFunctionOrObject, concatStyleSetsWithProps } from '@uifabric/merge-styles';\nimport { useCustomizationSettings } from './customizations/useCustomizationSettings';\n\nexport interface IPropsWithStyles> {\n styles?: IStyleFunctionOrObject;\n}\n\nexport interface ICustomizableProps {\n /**\n * Name of scope, which can be targeted using the Customizer.\n */\n scope: string;\n\n /**\n * List of fields which can be customized.\n * @defaultvalue [ 'theme', 'styles' ]\n */\n fields?: string[];\n}\n\nconst DefaultFields = ['theme', 'styles'];\n\nexport type StyleFunction = IStyleFunctionOrObject & {\n /** Cache for all style functions. */\n __cachedInputs__: (IStyleFunctionOrObject | undefined)[];\n\n /** True if no styles prop or styles from Customizer is passed to wrapped component. */\n __noStyleOverride__: boolean;\n};\n\n/**\n * The styled HOC wrapper allows you to create a functional wrapper around a given component which will resolve\n * getStyles functional props, and mix customized props passed in using concatStyleSets.\n *\n * @example\n * ```tsx\n * export const Toggle = styled(\n * ToggleBase,\n * props => ({ root: { background: 'red' }})\n * );\n * ```\n * @param Component - The unstyled base component to render, which receives styles.\n * @param baseStyles - The styles which should be curried with the component.\n * @param getProps - A helper which provides default props.\n * @param customizable - An object which defines which props can be customized using the Customizer.\n * @param pure - A boolean indicating if the component should avoid re-rendering when props haven't changed.\n * Note that pure should not be used on components which allow children, or take in complex objects or\n * arrays as props which could mutate on every render.\n */\nexport function styled<\n TComponentProps extends IPropsWithStyles,\n TStyleProps,\n TStyleSet extends IStyleSet\n>(\n Component: React.ComponentClass | React.FunctionComponent,\n baseStyles: IStyleFunctionOrObject,\n getProps?: (props: TComponentProps) => Partial,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.FunctionComponent;\nexport function styled<\n TComponentProps extends IPropsWithStyles & React.RefAttributes,\n TStyleProps,\n TStyleSet extends IStyleSet,\n TRef = unknown\n>(\n Component: React.ComponentClass | React.FunctionComponent,\n baseStyles: IStyleFunctionOrObject,\n getProps?: (props: TComponentProps) => Partial,\n customizable?: ICustomizableProps,\n pure?: boolean,\n): React.ForwardRefExoticComponent & React.RefAttributes>;\nexport function styled<\n TComponentProps extends IPropsWithStyles & React.RefAttributes,\n TStyleProps,\n TStyleSet extends IStyleSet,\n TRef = unknown\n>(\n Component: React.ComponentClass | React.FunctionComponent,\n baseStyles: IStyleFunctionOrObject,\n getProps?: (props: TComponentProps) => Partial,\n customizable?: ICustomizableProps,\n pure?: boolean,\n) {\n customizable = customizable || { scope: '', fields: undefined };\n\n const { scope, fields = DefaultFields } = customizable;\n\n const Wrapped = React.forwardRef((props: TComponentProps, forwardedRef: React.Ref) => {\n const styles = React.useRef>();\n\n const settings = useCustomizationSettings(fields, scope);\n const { styles: customizedStyles, dir, ...rest } = settings;\n const additionalProps = getProps ? getProps(props) : undefined;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cache = (styles.current && (styles.current as any).__cachedInputs__) || [];\n if (!styles.current || customizedStyles !== cache[1] || props.styles !== cache[2]) {\n // Using styled components as the Component arg will result in nested styling arrays.\n const concatenatedStyles: IStyleFunctionOrObject = (styleProps: TStyleProps) =>\n concatStyleSetsWithProps(styleProps, baseStyles, customizedStyles, props.styles);\n\n // The __cachedInputs__ array is attached to the function and consumed by the\n // classNamesFunction as a list of keys to include for memoizing classnames.\n (concatenatedStyles as StyleFunction).__cachedInputs__ = [\n baseStyles,\n customizedStyles,\n props.styles,\n ];\n\n (concatenatedStyles as StyleFunction).__noStyleOverride__ =\n !customizedStyles && !props.styles;\n\n styles.current = concatenatedStyles as StyleFunction;\n }\n\n return ;\n });\n // Function.prototype.name is an ES6 feature, so the cast to any is required until we're\n // able to drop IE 11 support and compile with ES6 libs\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Wrapped.displayName = `Styled${Component.displayName || (Component as any).name}`;\n\n // This preserves backwards compatibility.\n const pureComponent = pure ? React.memo(Wrapped) : Wrapped;\n // Check if the wrapper has a displayName after it has been memoized. Then assign it to the pure component.\n if (Wrapped.displayName) {\n pureComponent.displayName = Wrapped.displayName;\n }\n\n return pureComponent;\n}\n","import { concatStyleSets } from './concatStyleSets';\nimport { IStyleSet } from './IStyleSet';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { DeepPartial } from './DeepPartial';\n\n/**\n * Concatenates style sets into one, but resolves functional sets using the given props.\n * @param styleProps - Props used to resolve functional sets.\n * @param allStyles - Style sets, which can be functions or objects.\n */\nexport function concatStyleSetsWithProps>(\n styleProps: TStyleProps,\n ...allStyles: (IStyleFunctionOrObject | undefined)[]\n): DeepPartial {\n const result: DeepPartial[] = [];\n for (const styles of allStyles) {\n if (styles) {\n result.push(typeof styles === 'function' ? styles(styleProps) : styles);\n }\n }\n if (result.length === 1) {\n return result[0] as DeepPartial;\n } else if (result.length) {\n // cliffkoh: I cannot figure out how to avoid the cast to any here.\n // It is something to do with the use of Omit in IStyleSet.\n // It might not be necessary once Omit becomes part of lib.d.ts (when we remove our own Omit and rely on\n // the official version).\n return concatStyleSets(...(result as any)) as any;\n }\n\n return {};\n}\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","/** @license React v0.17.0\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout,A=window.requestAnimationFrame,B=window.cancelAnimationFrame;\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));if(\"object\"===typeof w&&\n\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var C=x.now();exports.unstable_now=function(){return x.now()-C}}var D=!1,E=null,F=-1,G=5,H=0;k=function(){return exports.unstable_now()>=H};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125L(n,c))void 0!==r&&0>L(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>L(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function L(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var O=[],P=[],Q=1,R=null,S=3,T=!1,U=!1,V=!1;\nfunction W(a){for(var b=M(P);null!==b;){if(null===b.callback)N(P);else if(b.startTime<=a)N(P),b.sortIndex=b.expirationTime,K(O,b);else break;b=M(P)}}function X(a){V=!1;W(a);if(!U)if(null!==M(O))U=!0,f(Y);else{var b=M(P);null!==b&&g(X,b.startTime-a)}}\nfunction Y(a,b){U=!1;V&&(V=!1,h());T=!0;var c=S;try{W(b);for(R=M(O);null!==R&&(!(R.expirationTime>b)||a&&!k());){var d=R.callback;if(null!==d){R.callback=null;S=R.priorityLevel;var e=d(R.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?R.callback=e:R===M(O)&&N(O);W(b)}else N(O);R=M(O)}if(null!==R)var m=!0;else{var n=M(P);null!==n&&g(X,n.startTime-b);m=!1}return m}finally{R=null,S=c,T=!1}}\nfunction Z(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var aa=l;exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=S;S=a;try{return b()}finally{S=c}};\nexports.unstable_next=function(a){switch(S){case 1:case 2:case 3:var b=3;break;default:b=S}var c=S;S=b;try{return a()}finally{S=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,K(P,a),null===M(O)&&a===M(P)&&(V?h():V=!0,g(X,e-d))):(a.sortIndex=c,K(O,a),U||T||(U=!0,f(Y)));return a};exports.unstable_cancelCallback=function(a){a.callback=null};\nexports.unstable_wrapCallback=function(a){var b=S;return function(){var c=S;S=b;try{return a.apply(this,arguments)}finally{S=c}}};exports.unstable_getCurrentPriorityLevel=function(){return S};exports.unstable_shouldYield=function(){var a=exports.unstable_now();W(a);var b=M(O);return b!==R&&null!==R&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport wrapAssembly from '../wrapAssembly';\nimport type {Yoga} from '../wrapAssembly';\n\nexport * from '../generated/YGEnums';\nexport type {\n Config,\n DirtiedFunction,\n MeasureFunction,\n Node,\n Yoga,\n} from '../wrapAssembly';\n\nconst loadAssembly = require('../../binaries/wasm-async-web');\n\nexport async function loadYoga(): Promise {\n return wrapAssembly(await loadAssembly());\n}\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\n\n// Number of index-1 entries for the BMP. 32=0x20\n// This part of the index-1 table is omitted from the serialized form.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\n\n// Shift size for shifting left the index array values.\n// Increases possible data size with 16-bit index values at the cost\n// of compactability.\n// This requires data blocks to be aligned by DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\n\n// The part of the index-2 table for U+D800..U+DBFF stores values for\n// lead surrogate code _units_ not code _points_.\n// Values for lead surrogate code _points_ are indexed with this portion of the table.\n// Length=32=0x20=0x400>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;\n\n// The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n// Length 32=0x20 for lead bytes C0..DF, regardless of SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; // U+0800 is the first code point after 2-byte UTF-8\n\n// The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n// Variable length, for code points up to highStart, where the last single-value range starts.\n// Maximum length 512=0x200=0x100000>>SHIFT_1.\n// (For 0x100000 supplementary code points U+10000..U+10ffff.)\n//\n// The part of the index-2 table for supplementary code points starts\n// after this index-1 table.\n//\n// Both the index-1 table and the following part of the index-2 table\n// are omitted completely if there is only BMP data.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n constructor(data) {\n const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n let uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n const view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n\n this.data = new Uint32Array(data.buffer);\n\n } else {\n // pre-parsed data\n ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n }\n }\n\n get(codePoint) {\n let index;\n if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n return this.errorValue;\n }\n\n if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n return this.data[this.data.length - DATA_GRANULARITY];\n }\n}\n\nmodule.exports = UnicodeTrie;","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","var map = require(\"./map\");\n\nvar getCountryCode = function(localeString) {\n var components = localeString.split(\"_\");\n if (components.length == 2) {\n return components.pop();\n }\n components = localeString.split(\"-\");\n if (components.length == 2) {\n return components.pop();\n }\n return localeString;\n}\n\nexports.getCurrency = function(locale) {\n var countryCode = getCountryCode(locale).toUpperCase();\n if (countryCode in map) {\n return map[countryCode];\n }\n return null;\n}\n\nexports.getLocales = function(currencyCode) {\n currencyCode = currencyCode.toUpperCase();\n var locales = [];\n for (countryCode in map) {\n if (map[countryCode] === currencyCode) {\n locales.push(countryCode);\n }\n }\n return locales;\n}","// Generated using ShowCurrencies.java\nvar map = {\nAD: 'EUR',\nAE: 'AED',\nAF: 'AFN',\nAG: 'XCD',\nAI: 'XCD',\nAL: 'ALL',\nAM: 'AMD',\nAN: 'ANG',\nAO: 'AOA',\nAR: 'ARS',\nAS: 'USD',\nAT: 'EUR',\nAU: 'AUD',\nAW: 'AWG',\nAX: 'EUR',\nAZ: 'AZN',\nBA: 'BAM',\nBB: 'BBD',\nBD: 'BDT',\nBE: 'EUR',\nBF: 'XOF',\nBG: 'BGN',\nBH: 'BHD',\nBI: 'BIF',\nBJ: 'XOF',\nBL: 'EUR',\nBM: 'BMD',\nBN: 'BND',\nBO: 'BOB',\nBQ: 'USD',\nBR: 'BRL',\nBS: 'BSD',\nBT: 'BTN',\nBV: 'NOK',\nBW: 'BWP',\nBY: 'BYR',\nBZ: 'BZD',\nCA: 'CAD',\nCC: 'AUD',\nCD: 'CDF',\nCF: 'XAF',\nCG: 'XAF',\nCH: 'CHF',\nCI: 'XOF',\nCK: 'NZD',\nCL: 'CLP',\nCM: 'XAF',\nCN: 'CNY',\nCO: 'COP',\nCR: 'CRC',\nCU: 'CUP',\nCV: 'CVE',\nCW: 'ANG',\nCX: 'AUD',\nCY: 'EUR',\nCZ: 'CZK',\nDE: 'EUR',\nDJ: 'DJF',\nDK: 'DKK',\nDM: 'XCD',\nDO: 'DOP',\nDZ: 'DZD',\nEC: 'USD',\nEE: 'EUR',\nEG: 'EGP',\nEH: 'MAD',\nER: 'ERN',\nES: 'EUR',\nET: 'ETB',\nFI: 'EUR',\nFJ: 'FJD',\nFK: 'FKP',\nFM: 'USD',\nFO: 'DKK',\nFR: 'EUR',\nGA: 'XAF',\nGB: 'GBP',\nGD: 'XCD',\nGE: 'GEL',\nGF: 'EUR',\nGG: 'GBP',\nGH: 'GHS',\nGI: 'GIP',\nGL: 'DKK',\nGM: 'GMD',\nGN: 'GNF',\nGP: 'EUR',\nGQ: 'XAF',\nGR: 'EUR',\nGS: 'GBP',\nGT: 'GTQ',\nGU: 'USD',\nGW: 'XOF',\nGY: 'GYD',\nHK: 'HKD',\nHM: 'AUD',\nHN: 'HNL',\nHR: 'HRK',\nHT: 'HTG',\nHU: 'HUF',\nID: 'IDR',\nIE: 'EUR',\nIL: 'ILS',\nIM: 'GBP',\nIN: 'INR',\nIO: 'USD',\nIQ: 'IQD',\nIR: 'IRR',\nIS: 'ISK',\nIT: 'EUR',\nJE: 'GBP',\nJM: 'JMD',\nJO: 'JOD',\nJP: 'JPY',\nKE: 'KES',\nKG: 'KGS',\nKH: 'KHR',\nKI: 'AUD',\nKM: 'KMF',\nKN: 'XCD',\nKP: 'KPW',\nKR: 'KRW',\nKW: 'KWD',\nKY: 'KYD',\nKZ: 'KZT',\nLA: 'LAK',\nLB: 'LBP',\nLC: 'XCD',\nLI: 'CHF',\nLK: 'LKR',\nLR: 'LRD',\nLS: 'LSL',\nLT: 'LTL',\nLU: 'EUR',\nLV: 'LVL',\nLY: 'LYD',\nMA: 'MAD',\nMC: 'EUR',\nMD: 'MDL',\nME: 'EUR',\nMF: 'EUR',\nMG: 'MGA',\nMH: 'USD',\nMK: 'MKD',\nML: 'XOF',\nMM: 'MMK',\nMN: 'MNT',\nMO: 'MOP',\nMP: 'USD',\nMQ: 'EUR',\nMR: 'MRO',\nMS: 'XCD',\nMT: 'EUR',\nMU: 'MUR',\nMV: 'MVR',\nMW: 'MWK',\nMX: 'MXN',\nMY: 'MYR',\nMZ: 'MZN',\nNA: 'NAD',\nNC: 'XPF',\nNE: 'XOF',\nNF: 'AUD',\nNG: 'NGN',\nNI: 'NIO',\nNL: 'EUR',\nNO: 'NOK',\nNP: 'NPR',\nNR: 'AUD',\nNU: 'NZD',\nNZ: 'NZD',\nOM: 'OMR',\nPA: 'PAB',\nPE: 'PEN',\nPF: 'XPF',\nPG: 'PGK',\nPH: 'PHP',\nPK: 'PKR',\nPL: 'PLN',\nPM: 'EUR',\nPN: 'NZD',\nPR: 'USD',\nPS: 'ILS',\nPT: 'EUR',\nPW: 'USD',\nPY: 'PYG',\nQA: 'QAR',\nRE: 'EUR',\nRO: 'RON',\nRS: 'RSD',\nRU: 'RUB',\nRW: 'RWF',\nSA: 'SAR',\nSB: 'SBD',\nSC: 'SCR',\nSD: 'SDG',\nSE: 'SEK',\nSG: 'SGD',\nSH: 'SHP',\nSI: 'EUR',\nSJ: 'NOK',\nSK: 'EUR',\nSL: 'SLL',\nSM: 'EUR',\nSN: 'XOF',\nSO: 'SOS',\nSR: 'SRD',\nST: 'STD',\nSV: 'SVC',\nSX: 'ANG',\nSY: 'SYP',\nSZ: 'SZL',\nTC: 'USD',\nTD: 'XAF',\nTF: 'EUR',\nTG: 'XOF',\nTH: 'THB',\nTJ: 'TJS',\nTK: 'NZD',\nTL: 'USD',\nTM: 'TMT',\nTN: 'TND',\nTO: 'TOP',\nTR: 'TRY',\nTT: 'TTD',\nTV: 'AUD',\nTW: 'TWD',\nTZ: 'TZS',\nUA: 'UAH',\nUG: 'UGX',\nUM: 'USD',\nUS: 'USD',\nUY: 'UYU',\nUZ: 'UZS',\nVA: 'EUR',\nVC: 'XCD',\nVE: 'VEF',\nVG: 'USD',\nVI: 'USD',\nVN: 'VND',\nVU: 'VUV',\nWF: 'XPF',\nWS: 'WST',\nYE: 'YER',\nYT: 'EUR',\nZA: 'ZAR',\nZM: 'ZMK',\nZW: 'ZWL'\n};\n\nmodule.exports = map;","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","// Expose `IntlPolyfill` as global to add locale data into runtime later on.\nglobal.IntlPolyfill = require('./lib/core.js');\n\n// Require all locale data for `Intl`. This module will be\n// ignored when bundling for the browser with Browserify/Webpack.\nrequire('./locale-data/complete.js');\n\n// hack to export the polyfill as global Intl if needed\nif (!global.Intl) {\n global.Intl = global.IntlPolyfill;\n global.IntlPolyfill.__applyLocaleSensitivePrototypes();\n}\n\n// providing an idiomatic api for the nodejs version of this module\nmodule.exports = global.IntlPolyfill;\n","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n};\n\nvar jsx = function () {\n var REACT_ELEMENT_TYPE = typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\") || 0xeac7;\n return function createRawReactElement(type, props, key, children) {\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {};\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n };\n}();\n\nvar asyncToGenerator = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n return step(\"next\", value);\n }, function (err) {\n return step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineEnumerableProperties = function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n return obj;\n};\n\nvar defaults = function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n};\n\nvar defineProperty$1 = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar _instanceof = function (left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n};\n\nvar interopRequireDefault = function (obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n};\n\nvar interopRequireWildcard = function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n};\n\nvar newArrowCheck = function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n};\n\nvar objectDestructuringEmpty = function (obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar selfGlobal = typeof global === \"undefined\" ? self : global;\n\nvar set = function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if (\"value\" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar slicedToArrayLoose = function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n};\n\nvar taggedTemplateLiteral = function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n};\n\nvar taggedTemplateLiteralLoose = function (strings, raw) {\n strings.raw = raw;\n return strings;\n};\n\nvar temporalRef = function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n } else {\n return val;\n }\n};\n\nvar temporalUndefined = {};\n\nvar toArray = function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n};\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n\n\nvar babelHelpers$1 = Object.freeze({\n jsx: jsx,\n asyncToGenerator: asyncToGenerator,\n classCallCheck: classCallCheck,\n createClass: createClass,\n defineEnumerableProperties: defineEnumerableProperties,\n defaults: defaults,\n defineProperty: defineProperty$1,\n get: get,\n inherits: inherits,\n interopRequireDefault: interopRequireDefault,\n interopRequireWildcard: interopRequireWildcard,\n newArrowCheck: newArrowCheck,\n objectDestructuringEmpty: objectDestructuringEmpty,\n objectWithoutProperties: objectWithoutProperties,\n possibleConstructorReturn: possibleConstructorReturn,\n selfGlobal: selfGlobal,\n set: set,\n slicedToArray: slicedToArray,\n slicedToArrayLoose: slicedToArrayLoose,\n taggedTemplateLiteral: taggedTemplateLiteral,\n taggedTemplateLiteralLoose: taggedTemplateLiteralLoose,\n temporalRef: temporalRef,\n temporalUndefined: temporalUndefined,\n toArray: toArray,\n toConsumableArray: toConsumableArray,\n typeof: _typeof,\n extends: _extends,\n instanceof: _instanceof\n});\n\nvar realDefineProp = function () {\n var sentinel = function sentinel() {};\n try {\n Object.defineProperty(sentinel, 'a', {\n get: function get() {\n return 1;\n }\n });\n Object.defineProperty(sentinel, 'prototype', { writable: false });\n return sentinel.a === 1 && sentinel.prototype instanceof Object;\n } catch (e) {\n return false;\n }\n}();\n\n// Need a workaround for getters in ES3\nvar es3 = !realDefineProp && !Object.prototype.__defineGetter__;\n\n// We use this a lot (and need it for proto-less objects)\nvar hop = Object.prototype.hasOwnProperty;\n\n// Naive defineProperty for compatibility\nvar defineProperty = realDefineProp ? Object.defineProperty : function (obj, name, desc) {\n if ('get' in desc && obj.__defineGetter__) obj.__defineGetter__(name, desc.get);else if (!hop.call(obj, name) || 'value' in desc) obj[name] = desc.value;\n};\n\n// Array.prototype.indexOf, as good as we need it to be\nvar arrIndexOf = Array.prototype.indexOf || function (search) {\n /*jshint validthis:true */\n var t = this;\n if (!t.length) return -1;\n\n for (var i = arguments[1] || 0, max = t.length; i < max; i++) {\n if (t[i] === search) return i;\n }\n\n return -1;\n};\n\n// Create an object with the specified prototype (2nd arg required for Record)\nvar objCreate = Object.create || function (proto, props) {\n var obj = void 0;\n\n function F() {}\n F.prototype = proto;\n obj = new F();\n\n for (var k in props) {\n if (hop.call(props, k)) defineProperty(obj, k, props[k]);\n }\n\n return obj;\n};\n\n// Snapshot some (hopefully still) native built-ins\nvar arrSlice = Array.prototype.slice;\nvar arrConcat = Array.prototype.concat;\nvar arrPush = Array.prototype.push;\nvar arrJoin = Array.prototype.join;\nvar arrShift = Array.prototype.shift;\n\n// Naive Function.prototype.bind for compatibility\nvar fnBind = Function.prototype.bind || function (thisObj) {\n var fn = this,\n args = arrSlice.call(arguments, 1);\n\n // All our (presently) bound functions have either 1 or 0 arguments. By returning\n // different function signatures, we can pass some tests in ES3 environments\n if (fn.length === 1) {\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n }\n return function () {\n return fn.apply(thisObj, arrConcat.call(args, arrSlice.call(arguments)));\n };\n};\n\n// Object housing internal properties for constructors\nvar internals = objCreate(null);\n\n// Keep internal properties internal\nvar secret = Math.random();\n\n// Helper functions\n// ================\n\n/**\n * A function to deal with the inaccuracy of calculating log10 in pre-ES6\n * JavaScript environments. Math.log(num) / Math.LN10 was responsible for\n * causing issue #62.\n */\nfunction log10Floor(n) {\n // ES6 provides the more accurate Math.log10\n if (typeof Math.log10 === 'function') return Math.floor(Math.log10(n));\n\n var x = Math.round(Math.log(n) * Math.LOG10E);\n return x - (Number('1e' + x) > n);\n}\n\n/**\n * A map that doesn't contain Object in its prototype chain\n */\nfunction Record(obj) {\n // Copy only own properties over unless this object is already a Record instance\n for (var k in obj) {\n if (obj instanceof Record || hop.call(obj, k)) defineProperty(this, k, { value: obj[k], enumerable: true, writable: true, configurable: true });\n }\n}\nRecord.prototype = objCreate(null);\n\n/**\n * An ordered list\n */\nfunction List() {\n defineProperty(this, 'length', { writable: true, value: 0 });\n\n if (arguments.length) arrPush.apply(this, arrSlice.call(arguments));\n}\nList.prototype = objCreate(null);\n\n/**\n * Constructs a regular expression to restore tainted RegExp properties\n */\nfunction createRegExpRestore() {\n if (internals.disableRegExpRestore) {\n return function () {/* no-op */};\n }\n\n var regExpCache = {\n lastMatch: RegExp.lastMatch || '',\n leftContext: RegExp.leftContext,\n multiline: RegExp.multiline,\n input: RegExp.input\n },\n has = false;\n\n // Create a snapshot of all the 'captured' properties\n for (var i = 1; i <= 9; i++) {\n has = (regExpCache['$' + i] = RegExp['$' + i]) || has;\n }return function () {\n // Now we've snapshotted some properties, escape the lastMatch string\n var esc = /[.?*+^$[\\]\\\\(){}|-]/g,\n lm = regExpCache.lastMatch.replace(esc, '\\\\$&'),\n reg = new List();\n\n // If any of the captured strings were non-empty, iterate over them all\n if (has) {\n for (var _i = 1; _i <= 9; _i++) {\n var m = regExpCache['$' + _i];\n\n // If it's empty, add an empty capturing group\n if (!m) lm = '()' + lm;\n\n // Else find the string in lm and escape & wrap it to capture it\n else {\n m = m.replace(esc, '\\\\$&');\n lm = lm.replace(m, '(' + m + ')');\n }\n\n // Push it to the reg and chop lm to make sure further groups come after\n arrPush.call(reg, lm.slice(0, lm.indexOf('(') + 1));\n lm = lm.slice(lm.indexOf('(') + 1);\n }\n }\n\n var exprStr = arrJoin.call(reg, '') + lm;\n\n // Shorten the regex by replacing each part of the expression with a match\n // for a string of that exact length. This is safe for the type of\n // expressions generated above, because the expression matches the whole\n // match string, so we know each group and each segment between capturing\n // groups can be matched by its length alone.\n exprStr = exprStr.replace(/(\\\\\\(|\\\\\\)|[^()])+/g, function (match) {\n return '[\\\\s\\\\S]{' + match.replace('\\\\', '').length + '}';\n });\n\n // Create the regular expression that will reconstruct the RegExp properties\n var expr = new RegExp(exprStr, regExpCache.multiline ? 'gm' : 'g');\n\n // Set the lastIndex of the generated expression to ensure that the match\n // is found in the correct index.\n expr.lastIndex = regExpCache.leftContext.length;\n\n expr.exec(regExpCache.input);\n };\n}\n\n/**\n * Mimics ES5's abstract ToObject() function\n */\nfunction toObject(arg) {\n if (arg === null) throw new TypeError('Cannot convert null or undefined to object');\n\n if ((typeof arg === 'undefined' ? 'undefined' : babelHelpers$1['typeof'](arg)) === 'object') return arg;\n return Object(arg);\n}\n\nfunction toNumber(arg) {\n if (typeof arg === 'number') return arg;\n return Number(arg);\n}\n\nfunction toInteger(arg) {\n var number = toNumber(arg);\n if (isNaN(number)) return 0;\n if (number === +0 || number === -0 || number === +Infinity || number === -Infinity) return number;\n if (number < 0) return Math.floor(Math.abs(number)) * -1;\n return Math.floor(Math.abs(number));\n}\n\nfunction toLength(arg) {\n var len = toInteger(arg);\n if (len <= 0) return 0;\n if (len === Infinity) return Math.pow(2, 53) - 1;\n return Math.min(len, Math.pow(2, 53) - 1);\n}\n\n/**\n * Returns \"internal\" properties for an object\n */\nfunction getInternalProperties(obj) {\n if (hop.call(obj, '__getInternalProperties')) return obj.__getInternalProperties(secret);\n\n return objCreate(null);\n}\n\n/**\n* Defines regular expressions for various operations related to the BCP 47 syntax,\n* as defined at http://tools.ietf.org/html/bcp47#section-2.1\n*/\n\n// extlang = 3ALPHA ; selected ISO 639 codes\n// *2(\"-\" 3ALPHA) ; permanently reserved\nvar extlang = '[a-z]{3}(?:-[a-z]{3}){0,2}';\n\n// language = 2*3ALPHA ; shortest ISO 639 code\n// [\"-\" extlang] ; sometimes followed by\n// ; extended language subtags\n// / 4ALPHA ; or reserved for future use\n// / 5*8ALPHA ; or registered language subtag\nvar language = '(?:[a-z]{2,3}(?:-' + extlang + ')?|[a-z]{4}|[a-z]{5,8})';\n\n// script = 4ALPHA ; ISO 15924 code\nvar script = '[a-z]{4}';\n\n// region = 2ALPHA ; ISO 3166-1 code\n// / 3DIGIT ; UN M.49 code\nvar region = '(?:[a-z]{2}|\\\\d{3})';\n\n// variant = 5*8alphanum ; registered variants\n// / (DIGIT 3alphanum)\nvar variant = '(?:[a-z0-9]{5,8}|\\\\d[a-z0-9]{3})';\n\n// ; Single alphanumerics\n// ; \"x\" reserved for private use\n// singleton = DIGIT ; 0 - 9\n// / %x41-57 ; A - W\n// / %x59-5A ; Y - Z\n// / %x61-77 ; a - w\n// / %x79-7A ; y - z\nvar singleton = '[0-9a-wy-z]';\n\n// extension = singleton 1*(\"-\" (2*8alphanum))\nvar extension = singleton + '(?:-[a-z0-9]{2,8})+';\n\n// privateuse = \"x\" 1*(\"-\" (1*8alphanum))\nvar privateuse = 'x(?:-[a-z0-9]{1,8})+';\n\n// irregular = \"en-GB-oed\" ; irregular tags do not match\n// / \"i-ami\" ; the 'langtag' production and\n// / \"i-bnn\" ; would not otherwise be\n// / \"i-default\" ; considered 'well-formed'\n// / \"i-enochian\" ; These tags are all valid,\n// / \"i-hak\" ; but most are deprecated\n// / \"i-klingon\" ; in favor of more modern\n// / \"i-lux\" ; subtags or subtag\n// / \"i-mingo\" ; combination\n// / \"i-navajo\"\n// / \"i-pwn\"\n// / \"i-tao\"\n// / \"i-tay\"\n// / \"i-tsu\"\n// / \"sgn-BE-FR\"\n// / \"sgn-BE-NL\"\n// / \"sgn-CH-DE\"\nvar irregular = '(?:en-GB-oed' + '|i-(?:ami|bnn|default|enochian|hak|klingon|lux|mingo|navajo|pwn|tao|tay|tsu)' + '|sgn-(?:BE-FR|BE-NL|CH-DE))';\n\n// regular = \"art-lojban\" ; these tags match the 'langtag'\n// / \"cel-gaulish\" ; production, but their subtags\n// / \"no-bok\" ; are not extended language\n// / \"no-nyn\" ; or variant subtags: their meaning\n// / \"zh-guoyu\" ; is defined by their registration\n// / \"zh-hakka\" ; and all of these are deprecated\n// / \"zh-min\" ; in favor of a more modern\n// / \"zh-min-nan\" ; subtag or sequence of subtags\n// / \"zh-xiang\"\nvar regular = '(?:art-lojban|cel-gaulish|no-bok|no-nyn' + '|zh-(?:guoyu|hakka|min|min-nan|xiang))';\n\n// grandfathered = irregular ; non-redundant tags registered\n// / regular ; during the RFC 3066 era\nvar grandfathered = '(?:' + irregular + '|' + regular + ')';\n\n// langtag = language\n// [\"-\" script]\n// [\"-\" region]\n// *(\"-\" variant)\n// *(\"-\" extension)\n// [\"-\" privateuse]\nvar langtag = language + '(?:-' + script + ')?(?:-' + region + ')?(?:-' + variant + ')*(?:-' + extension + ')*(?:-' + privateuse + ')?';\n\n// Language-Tag = langtag ; normal language tags\n// / privateuse ; private use tag\n// / grandfathered ; grandfathered tags\nvar expBCP47Syntax = RegExp('^(?:' + langtag + '|' + privateuse + '|' + grandfathered + ')$', 'i');\n\n// Match duplicate variants in a language tag\nvar expVariantDupes = RegExp('^(?!x).*?-(' + variant + ')-(?:\\\\w{4,8}-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match duplicate singletons in a language tag (except in private use)\nvar expSingletonDupes = RegExp('^(?!x).*?-(' + singleton + ')-(?:\\\\w+-(?!x-))*\\\\1\\\\b', 'i');\n\n// Match all extension sequences\nvar expExtSequences = RegExp('-' + extension, 'ig');\n\n// Default locale is the first-added locale data for us\nvar defaultLocale = void 0;\nfunction setDefaultLocale(locale) {\n defaultLocale = locale;\n}\n\n// IANA Subtag Registry redundant tag and subtag maps\nvar redundantTags = {\n tags: {\n \"art-lojban\": \"jbo\",\n \"i-ami\": \"ami\",\n \"i-bnn\": \"bnn\",\n \"i-hak\": \"hak\",\n \"i-klingon\": \"tlh\",\n \"i-lux\": \"lb\",\n \"i-navajo\": \"nv\",\n \"i-pwn\": \"pwn\",\n \"i-tao\": \"tao\",\n \"i-tay\": \"tay\",\n \"i-tsu\": \"tsu\",\n \"no-bok\": \"nb\",\n \"no-nyn\": \"nn\",\n \"sgn-BE-FR\": \"sfb\",\n \"sgn-BE-NL\": \"vgt\",\n \"sgn-CH-DE\": \"sgg\",\n \"zh-guoyu\": \"cmn\",\n \"zh-hakka\": \"hak\",\n \"zh-min-nan\": \"nan\",\n \"zh-xiang\": \"hsn\",\n \"sgn-BR\": \"bzs\",\n \"sgn-CO\": \"csn\",\n \"sgn-DE\": \"gsg\",\n \"sgn-DK\": \"dsl\",\n \"sgn-ES\": \"ssp\",\n \"sgn-FR\": \"fsl\",\n \"sgn-GB\": \"bfi\",\n \"sgn-GR\": \"gss\",\n \"sgn-IE\": \"isg\",\n \"sgn-IT\": \"ise\",\n \"sgn-JP\": \"jsl\",\n \"sgn-MX\": \"mfs\",\n \"sgn-NI\": \"ncs\",\n \"sgn-NL\": \"dse\",\n \"sgn-NO\": \"nsl\",\n \"sgn-PT\": \"psr\",\n \"sgn-SE\": \"swl\",\n \"sgn-US\": \"ase\",\n \"sgn-ZA\": \"sfs\",\n \"zh-cmn\": \"cmn\",\n \"zh-cmn-Hans\": \"cmn-Hans\",\n \"zh-cmn-Hant\": \"cmn-Hant\",\n \"zh-gan\": \"gan\",\n \"zh-wuu\": \"wuu\",\n \"zh-yue\": \"yue\"\n },\n subtags: {\n BU: \"MM\",\n DD: \"DE\",\n FX: \"FR\",\n TP: \"TL\",\n YD: \"YE\",\n ZR: \"CD\",\n heploc: \"alalc97\",\n 'in': \"id\",\n iw: \"he\",\n ji: \"yi\",\n jw: \"jv\",\n mo: \"ro\",\n ayx: \"nun\",\n bjd: \"drl\",\n ccq: \"rki\",\n cjr: \"mom\",\n cka: \"cmr\",\n cmk: \"xch\",\n drh: \"khk\",\n drw: \"prs\",\n gav: \"dev\",\n hrr: \"jal\",\n ibi: \"opa\",\n kgh: \"kml\",\n lcq: \"ppr\",\n mst: \"mry\",\n myt: \"mry\",\n sca: \"hle\",\n tie: \"ras\",\n tkk: \"twm\",\n tlw: \"weo\",\n tnf: \"prs\",\n ybd: \"rki\",\n yma: \"lrr\"\n },\n extLang: {\n aao: [\"aao\", \"ar\"],\n abh: [\"abh\", \"ar\"],\n abv: [\"abv\", \"ar\"],\n acm: [\"acm\", \"ar\"],\n acq: [\"acq\", \"ar\"],\n acw: [\"acw\", \"ar\"],\n acx: [\"acx\", \"ar\"],\n acy: [\"acy\", \"ar\"],\n adf: [\"adf\", \"ar\"],\n ads: [\"ads\", \"sgn\"],\n aeb: [\"aeb\", \"ar\"],\n aec: [\"aec\", \"ar\"],\n aed: [\"aed\", \"sgn\"],\n aen: [\"aen\", \"sgn\"],\n afb: [\"afb\", \"ar\"],\n afg: [\"afg\", \"sgn\"],\n ajp: [\"ajp\", \"ar\"],\n apc: [\"apc\", \"ar\"],\n apd: [\"apd\", \"ar\"],\n arb: [\"arb\", \"ar\"],\n arq: [\"arq\", \"ar\"],\n ars: [\"ars\", \"ar\"],\n ary: [\"ary\", \"ar\"],\n arz: [\"arz\", \"ar\"],\n ase: [\"ase\", \"sgn\"],\n asf: [\"asf\", \"sgn\"],\n asp: [\"asp\", \"sgn\"],\n asq: [\"asq\", \"sgn\"],\n asw: [\"asw\", \"sgn\"],\n auz: [\"auz\", \"ar\"],\n avl: [\"avl\", \"ar\"],\n ayh: [\"ayh\", \"ar\"],\n ayl: [\"ayl\", \"ar\"],\n ayn: [\"ayn\", \"ar\"],\n ayp: [\"ayp\", \"ar\"],\n bbz: [\"bbz\", \"ar\"],\n bfi: [\"bfi\", \"sgn\"],\n bfk: [\"bfk\", \"sgn\"],\n bjn: [\"bjn\", \"ms\"],\n bog: [\"bog\", \"sgn\"],\n bqn: [\"bqn\", \"sgn\"],\n bqy: [\"bqy\", \"sgn\"],\n btj: [\"btj\", \"ms\"],\n bve: [\"bve\", \"ms\"],\n bvl: [\"bvl\", \"sgn\"],\n bvu: [\"bvu\", \"ms\"],\n bzs: [\"bzs\", \"sgn\"],\n cdo: [\"cdo\", \"zh\"],\n cds: [\"cds\", \"sgn\"],\n cjy: [\"cjy\", \"zh\"],\n cmn: [\"cmn\", \"zh\"],\n coa: [\"coa\", \"ms\"],\n cpx: [\"cpx\", \"zh\"],\n csc: [\"csc\", \"sgn\"],\n csd: [\"csd\", \"sgn\"],\n cse: [\"cse\", \"sgn\"],\n csf: [\"csf\", \"sgn\"],\n csg: [\"csg\", \"sgn\"],\n csl: [\"csl\", \"sgn\"],\n csn: [\"csn\", \"sgn\"],\n csq: [\"csq\", \"sgn\"],\n csr: [\"csr\", \"sgn\"],\n czh: [\"czh\", \"zh\"],\n czo: [\"czo\", \"zh\"],\n doq: [\"doq\", \"sgn\"],\n dse: [\"dse\", \"sgn\"],\n dsl: [\"dsl\", \"sgn\"],\n dup: [\"dup\", \"ms\"],\n ecs: [\"ecs\", \"sgn\"],\n esl: [\"esl\", \"sgn\"],\n esn: [\"esn\", \"sgn\"],\n eso: [\"eso\", \"sgn\"],\n eth: [\"eth\", \"sgn\"],\n fcs: [\"fcs\", \"sgn\"],\n fse: [\"fse\", \"sgn\"],\n fsl: [\"fsl\", \"sgn\"],\n fss: [\"fss\", \"sgn\"],\n gan: [\"gan\", \"zh\"],\n gds: [\"gds\", \"sgn\"],\n gom: [\"gom\", \"kok\"],\n gse: [\"gse\", \"sgn\"],\n gsg: [\"gsg\", \"sgn\"],\n gsm: [\"gsm\", \"sgn\"],\n gss: [\"gss\", \"sgn\"],\n gus: [\"gus\", \"sgn\"],\n hab: [\"hab\", \"sgn\"],\n haf: [\"haf\", \"sgn\"],\n hak: [\"hak\", \"zh\"],\n hds: [\"hds\", \"sgn\"],\n hji: [\"hji\", \"ms\"],\n hks: [\"hks\", \"sgn\"],\n hos: [\"hos\", \"sgn\"],\n hps: [\"hps\", \"sgn\"],\n hsh: [\"hsh\", \"sgn\"],\n hsl: [\"hsl\", \"sgn\"],\n hsn: [\"hsn\", \"zh\"],\n icl: [\"icl\", \"sgn\"],\n ils: [\"ils\", \"sgn\"],\n inl: [\"inl\", \"sgn\"],\n ins: [\"ins\", \"sgn\"],\n ise: [\"ise\", \"sgn\"],\n isg: [\"isg\", \"sgn\"],\n isr: [\"isr\", \"sgn\"],\n jak: [\"jak\", \"ms\"],\n jax: [\"jax\", \"ms\"],\n jcs: [\"jcs\", \"sgn\"],\n jhs: [\"jhs\", \"sgn\"],\n jls: [\"jls\", \"sgn\"],\n jos: [\"jos\", \"sgn\"],\n jsl: [\"jsl\", \"sgn\"],\n jus: [\"jus\", \"sgn\"],\n kgi: [\"kgi\", \"sgn\"],\n knn: [\"knn\", \"kok\"],\n kvb: [\"kvb\", \"ms\"],\n kvk: [\"kvk\", \"sgn\"],\n kvr: [\"kvr\", \"ms\"],\n kxd: [\"kxd\", \"ms\"],\n lbs: [\"lbs\", \"sgn\"],\n lce: [\"lce\", \"ms\"],\n lcf: [\"lcf\", \"ms\"],\n liw: [\"liw\", \"ms\"],\n lls: [\"lls\", \"sgn\"],\n lsg: [\"lsg\", \"sgn\"],\n lsl: [\"lsl\", \"sgn\"],\n lso: [\"lso\", \"sgn\"],\n lsp: [\"lsp\", \"sgn\"],\n lst: [\"lst\", \"sgn\"],\n lsy: [\"lsy\", \"sgn\"],\n ltg: [\"ltg\", \"lv\"],\n lvs: [\"lvs\", \"lv\"],\n lzh: [\"lzh\", \"zh\"],\n max: [\"max\", \"ms\"],\n mdl: [\"mdl\", \"sgn\"],\n meo: [\"meo\", \"ms\"],\n mfa: [\"mfa\", \"ms\"],\n mfb: [\"mfb\", \"ms\"],\n mfs: [\"mfs\", \"sgn\"],\n min: [\"min\", \"ms\"],\n mnp: [\"mnp\", \"zh\"],\n mqg: [\"mqg\", \"ms\"],\n mre: [\"mre\", \"sgn\"],\n msd: [\"msd\", \"sgn\"],\n msi: [\"msi\", \"ms\"],\n msr: [\"msr\", \"sgn\"],\n mui: [\"mui\", \"ms\"],\n mzc: [\"mzc\", \"sgn\"],\n mzg: [\"mzg\", \"sgn\"],\n mzy: [\"mzy\", \"sgn\"],\n nan: [\"nan\", \"zh\"],\n nbs: [\"nbs\", \"sgn\"],\n ncs: [\"ncs\", \"sgn\"],\n nsi: [\"nsi\", \"sgn\"],\n nsl: [\"nsl\", \"sgn\"],\n nsp: [\"nsp\", \"sgn\"],\n nsr: [\"nsr\", \"sgn\"],\n nzs: [\"nzs\", \"sgn\"],\n okl: [\"okl\", \"sgn\"],\n orn: [\"orn\", \"ms\"],\n ors: [\"ors\", \"ms\"],\n pel: [\"pel\", \"ms\"],\n pga: [\"pga\", \"ar\"],\n pks: [\"pks\", \"sgn\"],\n prl: [\"prl\", \"sgn\"],\n prz: [\"prz\", \"sgn\"],\n psc: [\"psc\", \"sgn\"],\n psd: [\"psd\", \"sgn\"],\n pse: [\"pse\", \"ms\"],\n psg: [\"psg\", \"sgn\"],\n psl: [\"psl\", \"sgn\"],\n pso: [\"pso\", \"sgn\"],\n psp: [\"psp\", \"sgn\"],\n psr: [\"psr\", \"sgn\"],\n pys: [\"pys\", \"sgn\"],\n rms: [\"rms\", \"sgn\"],\n rsi: [\"rsi\", \"sgn\"],\n rsl: [\"rsl\", \"sgn\"],\n sdl: [\"sdl\", \"sgn\"],\n sfb: [\"sfb\", \"sgn\"],\n sfs: [\"sfs\", \"sgn\"],\n sgg: [\"sgg\", \"sgn\"],\n sgx: [\"sgx\", \"sgn\"],\n shu: [\"shu\", \"ar\"],\n slf: [\"slf\", \"sgn\"],\n sls: [\"sls\", \"sgn\"],\n sqk: [\"sqk\", \"sgn\"],\n sqs: [\"sqs\", \"sgn\"],\n ssh: [\"ssh\", \"ar\"],\n ssp: [\"ssp\", \"sgn\"],\n ssr: [\"ssr\", \"sgn\"],\n svk: [\"svk\", \"sgn\"],\n swc: [\"swc\", \"sw\"],\n swh: [\"swh\", \"sw\"],\n swl: [\"swl\", \"sgn\"],\n syy: [\"syy\", \"sgn\"],\n tmw: [\"tmw\", \"ms\"],\n tse: [\"tse\", \"sgn\"],\n tsm: [\"tsm\", \"sgn\"],\n tsq: [\"tsq\", \"sgn\"],\n tss: [\"tss\", \"sgn\"],\n tsy: [\"tsy\", \"sgn\"],\n tza: [\"tza\", \"sgn\"],\n ugn: [\"ugn\", \"sgn\"],\n ugy: [\"ugy\", \"sgn\"],\n ukl: [\"ukl\", \"sgn\"],\n uks: [\"uks\", \"sgn\"],\n urk: [\"urk\", \"ms\"],\n uzn: [\"uzn\", \"uz\"],\n uzs: [\"uzs\", \"uz\"],\n vgt: [\"vgt\", \"sgn\"],\n vkk: [\"vkk\", \"ms\"],\n vkt: [\"vkt\", \"ms\"],\n vsi: [\"vsi\", \"sgn\"],\n vsl: [\"vsl\", \"sgn\"],\n vsv: [\"vsv\", \"sgn\"],\n wuu: [\"wuu\", \"zh\"],\n xki: [\"xki\", \"sgn\"],\n xml: [\"xml\", \"sgn\"],\n xmm: [\"xmm\", \"ms\"],\n xms: [\"xms\", \"sgn\"],\n yds: [\"yds\", \"sgn\"],\n ysl: [\"ysl\", \"sgn\"],\n yue: [\"yue\", \"zh\"],\n zib: [\"zib\", \"sgn\"],\n zlm: [\"zlm\", \"ms\"],\n zmi: [\"zmi\", \"ms\"],\n zsl: [\"zsl\", \"sgn\"],\n zsm: [\"zsm\", \"ms\"]\n }\n};\n\n/**\n * Convert only a-z to uppercase as per section 6.1 of the spec\n */\nfunction toLatinUpperCase(str) {\n var i = str.length;\n\n while (i--) {\n var ch = str.charAt(i);\n\n if (ch >= \"a\" && ch <= \"z\") str = str.slice(0, i) + ch.toUpperCase() + str.slice(i + 1);\n }\n\n return str;\n}\n\n/**\n * The IsStructurallyValidLanguageTag abstract operation verifies that the locale\n * argument (which must be a String value)\n *\n * - represents a well-formed BCP 47 language tag as specified in RFC 5646 section\n * 2.1, or successor,\n * - does not include duplicate variant subtags, and\n * - does not include duplicate singleton subtags.\n *\n * The abstract operation returns true if locale can be generated from the ABNF\n * grammar in section 2.1 of the RFC, starting with Language-Tag, and does not\n * contain duplicate variant or singleton subtags (other than as a private use\n * subtag). It returns false otherwise. Terminal value characters in the grammar are\n * interpreted as the Unicode equivalents of the ASCII octet values given.\n */\nfunction /* 6.2.2 */IsStructurallyValidLanguageTag(locale) {\n // represents a well-formed BCP 47 language tag as specified in RFC 5646\n if (!expBCP47Syntax.test(locale)) return false;\n\n // does not include duplicate variant subtags, and\n if (expVariantDupes.test(locale)) return false;\n\n // does not include duplicate singleton subtags.\n if (expSingletonDupes.test(locale)) return false;\n\n return true;\n}\n\n/**\n * The CanonicalizeLanguageTag abstract operation returns the canonical and case-\n * regularized form of the locale argument (which must be a String value that is\n * a structurally valid BCP 47 language tag as verified by the\n * IsStructurallyValidLanguageTag abstract operation). It takes the steps\n * specified in RFC 5646 section 4.5, or successor, to bring the language tag\n * into canonical form, and to regularize the case of the subtags, but does not\n * take the steps to bring a language tag into “extlang form” and to reorder\n * variant subtags.\n\n * The specifications for extensions to BCP 47 language tags, such as RFC 6067,\n * may include canonicalization rules for the extension subtag sequences they\n * define that go beyond the canonicalization rules of RFC 5646 section 4.5.\n * Implementations are allowed, but not required, to apply these additional rules.\n */\nfunction /* 6.2.3 */CanonicalizeLanguageTag(locale) {\n var match = void 0,\n parts = void 0;\n\n // A language tag is in 'canonical form' when the tag is well-formed\n // according to the rules in Sections 2.1 and 2.2\n\n // Section 2.1 says all subtags use lowercase...\n locale = locale.toLowerCase();\n\n // ...with 2 exceptions: 'two-letter and four-letter subtags that neither\n // appear at the start of the tag nor occur after singletons. Such two-letter\n // subtags are all uppercase (as in the tags \"en-CA-x-ca\" or \"sgn-BE-FR\") and\n // four-letter subtags are titlecase (as in the tag \"az-Latn-x-latn\").\n parts = locale.split('-');\n for (var i = 1, max = parts.length; i < max; i++) {\n // Two-letter subtags are all uppercase\n if (parts[i].length === 2) parts[i] = parts[i].toUpperCase();\n\n // Four-letter subtags are titlecase\n else if (parts[i].length === 4) parts[i] = parts[i].charAt(0).toUpperCase() + parts[i].slice(1);\n\n // Is it a singleton?\n else if (parts[i].length === 1 && parts[i] !== 'x') break;\n }\n locale = arrJoin.call(parts, '-');\n\n // The steps laid out in RFC 5646 section 4.5 are as follows:\n\n // 1. Extension sequences are ordered into case-insensitive ASCII order\n // by singleton subtag.\n if ((match = locale.match(expExtSequences)) && match.length > 1) {\n // The built-in sort() sorts by ASCII order, so use that\n match.sort();\n\n // Replace all extensions with the joined, sorted array\n locale = locale.replace(RegExp('(?:' + expExtSequences.source + ')+', 'i'), arrJoin.call(match, ''));\n }\n\n // 2. Redundant or grandfathered tags are replaced by their 'Preferred-\n // Value', if there is one.\n if (hop.call(redundantTags.tags, locale)) locale = redundantTags.tags[locale];\n\n // 3. Subtags are replaced by their 'Preferred-Value', if there is one.\n // For extlangs, the original primary language subtag is also\n // replaced if there is a primary language subtag in the 'Preferred-\n // Value'.\n parts = locale.split('-');\n\n for (var _i = 1, _max = parts.length; _i < _max; _i++) {\n if (hop.call(redundantTags.subtags, parts[_i])) parts[_i] = redundantTags.subtags[parts[_i]];else if (hop.call(redundantTags.extLang, parts[_i])) {\n parts[_i] = redundantTags.extLang[parts[_i]][0];\n\n // For extlang tags, the prefix needs to be removed if it is redundant\n if (_i === 1 && redundantTags.extLang[parts[1]][1] === parts[0]) {\n parts = arrSlice.call(parts, _i++);\n _max -= 1;\n }\n }\n }\n\n return arrJoin.call(parts, '-');\n}\n\n/**\n * The DefaultLocale abstract operation returns a String value representing the\n * structurally valid (6.2.2) and canonicalized (6.2.3) BCP 47 language tag for the\n * host environment’s current locale.\n */\nfunction /* 6.2.4 */DefaultLocale() {\n return defaultLocale;\n}\n\n// Sect 6.3 Currency Codes\n// =======================\n\nvar expCurrencyCode = /^[A-Z]{3}$/;\n\n/**\n * The IsWellFormedCurrencyCode abstract operation verifies that the currency argument\n * (after conversion to a String value) represents a well-formed 3-letter ISO currency\n * code. The following steps are taken:\n */\nfunction /* 6.3.1 */IsWellFormedCurrencyCode(currency) {\n // 1. Let `c` be ToString(currency)\n var c = String(currency);\n\n // 2. Let `normalized` be the result of mapping c to upper case as described\n // in 6.1.\n var normalized = toLatinUpperCase(c);\n\n // 3. If the string length of normalized is not 3, return false.\n // 4. If normalized contains any character that is not in the range \"A\" to \"Z\"\n // (U+0041 to U+005A), return false.\n if (expCurrencyCode.test(normalized) === false) return false;\n\n // 5. Return true\n return true;\n}\n\nvar expUnicodeExSeq = /-u(?:-[0-9a-z]{2,8})+/gi; // See `extension` below\n\nfunction /* 9.2.1 */CanonicalizeLocaleList(locales) {\n // The abstract operation CanonicalizeLocaleList takes the following steps:\n\n // 1. If locales is undefined, then a. Return a new empty List\n if (locales === undefined) return new List();\n\n // 2. Let seen be a new empty List.\n var seen = new List();\n\n // 3. If locales is a String value, then\n // a. Let locales be a new array created as if by the expression new\n // Array(locales) where Array is the standard built-in constructor with\n // that name and locales is the value of locales.\n locales = typeof locales === 'string' ? [locales] : locales;\n\n // 4. Let O be ToObject(locales).\n var O = toObject(locales);\n\n // 5. Let lenValue be the result of calling the [[Get]] internal method of\n // O with the argument \"length\".\n // 6. Let len be ToUint32(lenValue).\n var len = toLength(O.length);\n\n // 7. Let k be 0.\n var k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n var Pk = String(k);\n\n // b. Let kPresent be the result of calling the [[HasProperty]] internal\n // method of O with argument Pk.\n var kPresent = Pk in O;\n\n // c. If kPresent is true, then\n if (kPresent) {\n // i. Let kValue be the result of calling the [[Get]] internal\n // method of O with argument Pk.\n var kValue = O[Pk];\n\n // ii. If the type of kValue is not String or Object, then throw a\n // TypeError exception.\n if (kValue === null || typeof kValue !== 'string' && (typeof kValue === \"undefined\" ? \"undefined\" : babelHelpers$1[\"typeof\"](kValue)) !== 'object') throw new TypeError('String or Object type expected');\n\n // iii. Let tag be ToString(kValue).\n var tag = String(kValue);\n\n // iv. If the result of calling the abstract operation\n // IsStructurallyValidLanguageTag (defined in 6.2.2), passing tag as\n // the argument, is false, then throw a RangeError exception.\n if (!IsStructurallyValidLanguageTag(tag)) throw new RangeError(\"'\" + tag + \"' is not a structurally valid language tag\");\n\n // v. Let tag be the result of calling the abstract operation\n // CanonicalizeLanguageTag (defined in 6.2.3), passing tag as the\n // argument.\n tag = CanonicalizeLanguageTag(tag);\n\n // vi. If tag is not an element of seen, then append tag as the last\n // element of seen.\n if (arrIndexOf.call(seen, tag) === -1) arrPush.call(seen, tag);\n }\n\n // d. Increase k by 1.\n k++;\n }\n\n // 9. Return seen.\n return seen;\n}\n\n/**\n * The BestAvailableLocale abstract operation compares the provided argument\n * locale, which must be a String value with a structurally valid and\n * canonicalized BCP 47 language tag, against the locales in availableLocales and\n * returns either the longest non-empty prefix of locale that is an element of\n * availableLocales, or undefined if there is no such element. It uses the\n * fallback mechanism of RFC 4647, section 3.4. The following steps are taken:\n */\nfunction /* 9.2.2 */BestAvailableLocale(availableLocales, locale) {\n // 1. Let candidate be locale\n var candidate = locale;\n\n // 2. Repeat\n while (candidate) {\n // a. If availableLocales contains an element equal to candidate, then return\n // candidate.\n if (arrIndexOf.call(availableLocales, candidate) > -1) return candidate;\n\n // b. Let pos be the character index of the last occurrence of \"-\"\n // (U+002D) within candidate. If that character does not occur, return\n // undefined.\n var pos = candidate.lastIndexOf('-');\n\n if (pos < 0) return;\n\n // c. If pos ≥ 2 and the character \"-\" occurs at index pos-2 of candidate,\n // then decrease pos by 2.\n if (pos >= 2 && candidate.charAt(pos - 2) === '-') pos -= 2;\n\n // d. Let candidate be the substring of candidate from position 0, inclusive,\n // to position pos, exclusive.\n candidate = candidate.substring(0, pos);\n }\n}\n\n/**\n * The LookupMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The following steps are taken:\n */\nfunction /* 9.2.3 */LookupMatcher(availableLocales, requestedLocales) {\n // 1. Let i be 0.\n var i = 0;\n\n // 2. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n\n // 3. Let availableLocale be undefined.\n var availableLocale = void 0;\n\n var locale = void 0,\n noExtensionsLocale = void 0;\n\n // 4. Repeat while i < len and availableLocale is undefined:\n while (i < len && !availableLocale) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position i.\n locale = requestedLocales[i];\n\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. Increase i by 1.\n i++;\n }\n\n // 5. Let result be a new Record.\n var result = new Record();\n\n // 6. If availableLocale is not undefined, then\n if (availableLocale !== undefined) {\n // a. Set result.[[locale]] to availableLocale.\n result['[[locale]]'] = availableLocale;\n\n // b. If locale and noExtensionsLocale are not the same String value, then\n if (String(locale) !== String(noExtensionsLocale)) {\n // i. Let extension be the String value consisting of the first\n // substring of locale that is a Unicode locale extension sequence.\n var extension = locale.match(expUnicodeExSeq)[0];\n\n // ii. Let extensionIndex be the character position of the initial\n // \"-\" of the first Unicode locale extension sequence within locale.\n var extensionIndex = locale.indexOf('-u-');\n\n // iii. Set result.[[extension]] to extension.\n result['[[extension]]'] = extension;\n\n // iv. Set result.[[extensionIndex]] to extensionIndex.\n result['[[extensionIndex]]'] = extensionIndex;\n }\n }\n // 7. Else\n else\n // a. Set result.[[locale]] to the value returned by the DefaultLocale abstract\n // operation (defined in 6.2.4).\n result['[[locale]]'] = DefaultLocale();\n\n // 8. Return result\n return result;\n}\n\n/**\n * The BestFitMatcher abstract operation compares requestedLocales, which must be\n * a List as returned by CanonicalizeLocaleList, against the locales in\n * availableLocales and determines the best available language to meet the\n * request. The algorithm is implementation dependent, but should produce results\n * that a typical user of the requested locales would perceive as at least as\n * good as those produced by the LookupMatcher abstract operation. Options\n * specified through Unicode locale extension sequences must be ignored by the\n * algorithm. Information about such subsequences is returned separately.\n * The abstract operation returns a record with a [[locale]] field, whose value\n * is the language tag of the selected locale, which must be an element of\n * availableLocales. If the language tag of the request locale that led to the\n * selected locale contained a Unicode locale extension sequence, then the\n * returned record also contains an [[extension]] field whose value is the first\n * Unicode locale extension sequence, and an [[extensionIndex]] field whose value\n * is the index of the first Unicode locale extension sequence within the request\n * locale language tag.\n */\nfunction /* 9.2.4 */BestFitMatcher(availableLocales, requestedLocales) {\n return LookupMatcher(availableLocales, requestedLocales);\n}\n\n/**\n * The ResolveLocale abstract operation compares a BCP 47 language priority list\n * requestedLocales against the locales in availableLocales and determines the\n * best available language to meet the request. availableLocales and\n * requestedLocales must be provided as List values, options as a Record.\n */\nfunction /* 9.2.5 */ResolveLocale(availableLocales, requestedLocales, options, relevantExtensionKeys, localeData) {\n if (availableLocales.length === 0) {\n throw new ReferenceError('No locale data has been provided for this object yet.');\n }\n\n // The following steps are taken:\n // 1. Let matcher be the value of options.[[localeMatcher]].\n var matcher = options['[[localeMatcher]]'];\n\n var r = void 0;\n\n // 2. If matcher is \"lookup\", then\n if (matcher === 'lookup')\n // a. Let r be the result of calling the LookupMatcher abstract operation\n // (defined in 9.2.3) with arguments availableLocales and\n // requestedLocales.\n r = LookupMatcher(availableLocales, requestedLocales);\n\n // 3. Else\n else\n // a. Let r be the result of calling the BestFitMatcher abstract\n // operation (defined in 9.2.4) with arguments availableLocales and\n // requestedLocales.\n r = BestFitMatcher(availableLocales, requestedLocales);\n\n // 4. Let foundLocale be the value of r.[[locale]].\n var foundLocale = r['[[locale]]'];\n\n var extensionSubtags = void 0,\n extensionSubtagsLength = void 0;\n\n // 5. If r has an [[extension]] field, then\n if (hop.call(r, '[[extension]]')) {\n // a. Let extension be the value of r.[[extension]].\n var extension = r['[[extension]]'];\n // b. Let split be the standard built-in function object defined in ES5,\n // 15.5.4.14.\n var split = String.prototype.split;\n // c. Let extensionSubtags be the result of calling the [[Call]] internal\n // method of split with extension as the this value and an argument\n // list containing the single item \"-\".\n extensionSubtags = split.call(extension, '-');\n // d. Let extensionSubtagsLength be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument \"length\".\n extensionSubtagsLength = extensionSubtags.length;\n }\n\n // 6. Let result be a new Record.\n var result = new Record();\n\n // 7. Set result.[[dataLocale]] to foundLocale.\n result['[[dataLocale]]'] = foundLocale;\n\n // 8. Let supportedExtension be \"-u\".\n var supportedExtension = '-u';\n // 9. Let i be 0.\n var i = 0;\n // 10. Let len be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument \"length\".\n var len = relevantExtensionKeys.length;\n\n // 11 Repeat while i < len:\n while (i < len) {\n // a. Let key be the result of calling the [[Get]] internal method of\n // relevantExtensionKeys with argument ToString(i).\n var key = relevantExtensionKeys[i];\n // b. Let foundLocaleData be the result of calling the [[Get]] internal\n // method of localeData with the argument foundLocale.\n var foundLocaleData = localeData[foundLocale];\n // c. Let keyLocaleData be the result of calling the [[Get]] internal\n // method of foundLocaleData with the argument key.\n var keyLocaleData = foundLocaleData[key];\n // d. Let value be the result of calling the [[Get]] internal method of\n // keyLocaleData with argument \"0\".\n var value = keyLocaleData['0'];\n // e. Let supportedExtensionAddition be \"\".\n var supportedExtensionAddition = '';\n // f. Let indexOf be the standard built-in function object defined in\n // ES5, 15.4.4.14.\n var indexOf = arrIndexOf;\n\n // g. If extensionSubtags is not undefined, then\n if (extensionSubtags !== undefined) {\n // i. Let keyPos be the result of calling the [[Call]] internal\n // method of indexOf with extensionSubtags as the this value and\n // an argument list containing the single item key.\n var keyPos = indexOf.call(extensionSubtags, key);\n\n // ii. If keyPos ≠ -1, then\n if (keyPos !== -1) {\n // 1. If keyPos + 1 < extensionSubtagsLength and the length of the\n // result of calling the [[Get]] internal method of\n // extensionSubtags with argument ToString(keyPos +1) is greater\n // than 2, then\n if (keyPos + 1 < extensionSubtagsLength && extensionSubtags[keyPos + 1].length > 2) {\n // a. Let requestedValue be the result of calling the [[Get]]\n // internal method of extensionSubtags with argument\n // ToString(keyPos + 1).\n var requestedValue = extensionSubtags[keyPos + 1];\n // b. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the\n // this value and an argument list containing the single\n // item requestedValue.\n var valuePos = indexOf.call(keyLocaleData, requestedValue);\n\n // c. If valuePos ≠ -1, then\n if (valuePos !== -1) {\n // i. Let value be requestedValue.\n value = requestedValue,\n // ii. Let supportedExtensionAddition be the\n // concatenation of \"-\", key, \"-\", and value.\n supportedExtensionAddition = '-' + key + '-' + value;\n }\n }\n // 2. Else\n else {\n // a. Let valuePos be the result of calling the [[Call]]\n // internal method of indexOf with keyLocaleData as the this\n // value and an argument list containing the single item\n // \"true\".\n var _valuePos = indexOf(keyLocaleData, 'true');\n\n // b. If valuePos ≠ -1, then\n if (_valuePos !== -1)\n // i. Let value be \"true\".\n value = 'true';\n }\n }\n }\n // h. If options has a field [[]], then\n if (hop.call(options, '[[' + key + ']]')) {\n // i. Let optionsValue be the value of options.[[]].\n var optionsValue = options['[[' + key + ']]'];\n\n // ii. If the result of calling the [[Call]] internal method of indexOf\n // with keyLocaleData as the this value and an argument list\n // containing the single item optionsValue is not -1, then\n if (indexOf.call(keyLocaleData, optionsValue) !== -1) {\n // 1. If optionsValue is not equal to value, then\n if (optionsValue !== value) {\n // a. Let value be optionsValue.\n value = optionsValue;\n // b. Let supportedExtensionAddition be \"\".\n supportedExtensionAddition = '';\n }\n }\n }\n // i. Set result.[[]] to value.\n result['[[' + key + ']]'] = value;\n\n // j. Append supportedExtensionAddition to supportedExtension.\n supportedExtension += supportedExtensionAddition;\n\n // k. Increase i by 1.\n i++;\n }\n // 12. If the length of supportedExtension is greater than 2, then\n if (supportedExtension.length > 2) {\n // a.\n var privateIndex = foundLocale.indexOf(\"-x-\");\n // b.\n if (privateIndex === -1) {\n // i.\n foundLocale = foundLocale + supportedExtension;\n }\n // c.\n else {\n // i.\n var preExtension = foundLocale.substring(0, privateIndex);\n // ii.\n var postExtension = foundLocale.substring(privateIndex);\n // iii.\n foundLocale = preExtension + supportedExtension + postExtension;\n }\n // d. asserting - skipping\n // e.\n foundLocale = CanonicalizeLanguageTag(foundLocale);\n }\n // 13. Set result.[[locale]] to foundLocale.\n result['[[locale]]'] = foundLocale;\n\n // 14. Return result.\n return result;\n}\n\n/**\n * The LookupSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the BCP 47 Lookup algorithm.\n * Locales appear in the same order in the returned list as in requestedLocales.\n * The following steps are taken:\n */\nfunction /* 9.2.6 */LookupSupportedLocales(availableLocales, requestedLocales) {\n // 1. Let len be the number of elements in requestedLocales.\n var len = requestedLocales.length;\n // 2. Let subset be a new empty List.\n var subset = new List();\n // 3. Let k be 0.\n var k = 0;\n\n // 4. Repeat while k < len\n while (k < len) {\n // a. Let locale be the element of requestedLocales at 0-origined list\n // position k.\n var locale = requestedLocales[k];\n // b. Let noExtensionsLocale be the String value that is locale with all\n // Unicode locale extension sequences removed.\n var noExtensionsLocale = String(locale).replace(expUnicodeExSeq, '');\n // c. Let availableLocale be the result of calling the\n // BestAvailableLocale abstract operation (defined in 9.2.2) with\n // arguments availableLocales and noExtensionsLocale.\n var availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale);\n\n // d. If availableLocale is not undefined, then append locale to the end of\n // subset.\n if (availableLocale !== undefined) arrPush.call(subset, locale);\n\n // e. Increment k by 1.\n k++;\n }\n\n // 5. Let subsetArray be a new Array object whose elements are the same\n // values in the same order as the elements of subset.\n var subsetArray = arrSlice.call(subset);\n\n // 6. Return subsetArray.\n return subsetArray;\n}\n\n/**\n * The BestFitSupportedLocales abstract operation returns the subset of the\n * provided BCP 47 language priority list requestedLocales for which\n * availableLocales has a matching locale when using the Best Fit Matcher\n * algorithm. Locales appear in the same order in the returned list as in\n * requestedLocales. The steps taken are implementation dependent.\n */\nfunction /*9.2.7 */BestFitSupportedLocales(availableLocales, requestedLocales) {\n // ###TODO: implement this function as described by the specification###\n return LookupSupportedLocales(availableLocales, requestedLocales);\n}\n\n/**\n * The SupportedLocales abstract operation returns the subset of the provided BCP\n * 47 language priority list requestedLocales for which availableLocales has a\n * matching locale. Two algorithms are available to match the locales: the Lookup\n * algorithm described in RFC 4647 section 3.4, and an implementation dependent\n * best-fit algorithm. Locales appear in the same order in the returned list as\n * in requestedLocales. The following steps are taken:\n */\nfunction /*9.2.8 */SupportedLocales(availableLocales, requestedLocales, options) {\n var matcher = void 0,\n subset = void 0;\n\n // 1. If options is not undefined, then\n if (options !== undefined) {\n // a. Let options be ToObject(options).\n options = new Record(toObject(options));\n // b. Let matcher be the result of calling the [[Get]] internal method of\n // options with argument \"localeMatcher\".\n matcher = options.localeMatcher;\n\n // c. If matcher is not undefined, then\n if (matcher !== undefined) {\n // i. Let matcher be ToString(matcher).\n matcher = String(matcher);\n\n // ii. If matcher is not \"lookup\" or \"best fit\", then throw a RangeError\n // exception.\n if (matcher !== 'lookup' && matcher !== 'best fit') throw new RangeError('matcher should be \"lookup\" or \"best fit\"');\n }\n }\n // 2. If matcher is undefined or \"best fit\", then\n if (matcher === undefined || matcher === 'best fit')\n // a. Let subset be the result of calling the BestFitSupportedLocales\n // abstract operation (defined in 9.2.7) with arguments\n // availableLocales and requestedLocales.\n subset = BestFitSupportedLocales(availableLocales, requestedLocales);\n // 3. Else\n else\n // a. Let subset be the result of calling the LookupSupportedLocales\n // abstract operation (defined in 9.2.6) with arguments\n // availableLocales and requestedLocales.\n subset = LookupSupportedLocales(availableLocales, requestedLocales);\n\n // 4. For each named own property name P of subset,\n for (var P in subset) {\n if (!hop.call(subset, P)) continue;\n\n // a. Let desc be the result of calling the [[GetOwnProperty]] internal\n // method of subset with P.\n // b. Set desc.[[Writable]] to false.\n // c. Set desc.[[Configurable]] to false.\n // d. Call the [[DefineOwnProperty]] internal method of subset with P, desc,\n // and true as arguments.\n defineProperty(subset, P, {\n writable: false, configurable: false, value: subset[P]\n });\n }\n // \"Freeze\" the array so no new elements can be added\n defineProperty(subset, 'length', { writable: false });\n\n // 5. Return subset\n return subset;\n}\n\n/**\n * The GetOption abstract operation extracts the value of the property named\n * property from the provided options object, converts it to the required type,\n * checks whether it is one of a List of allowed values, and fills in a fallback\n * value if necessary.\n */\nfunction /*9.2.9 */GetOption(options, property, type, values, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Assert: type is \"boolean\" or \"string\".\n // b. If type is \"boolean\", then let value be ToBoolean(value).\n // c. If type is \"string\", then let value be ToString(value).\n value = type === 'boolean' ? Boolean(value) : type === 'string' ? String(value) : value;\n\n // d. If values is not undefined, then\n if (values !== undefined) {\n // i. If values does not contain an element equal to value, then throw a\n // RangeError exception.\n if (arrIndexOf.call(values, value) === -1) throw new RangeError(\"'\" + value + \"' is not an allowed value for `\" + property + '`');\n }\n\n // e. Return value.\n return value;\n }\n // Else return fallback.\n return fallback;\n}\n\n/**\n * The GetNumberOption abstract operation extracts a property value from the\n * provided options object, converts it to a Number value, checks whether it is\n * in the allowed range, and fills in a fallback value if necessary.\n */\nfunction /* 9.2.10 */GetNumberOption(options, property, minimum, maximum, fallback) {\n // 1. Let value be the result of calling the [[Get]] internal method of\n // options with argument property.\n var value = options[property];\n\n // 2. If value is not undefined, then\n if (value !== undefined) {\n // a. Let value be ToNumber(value).\n value = Number(value);\n\n // b. If value is NaN or less than minimum or greater than maximum, throw a\n // RangeError exception.\n if (isNaN(value) || value < minimum || value > maximum) throw new RangeError('Value is not a number or outside accepted range');\n\n // c. Return floor(value).\n return Math.floor(value);\n }\n // 3. Else return fallback.\n return fallback;\n}\n\n// 8 The Intl Object\nvar Intl = {};\n\n// 8.2 Function Properties of the Intl Object\n\n// 8.2.1\n// @spec[tc39/ecma402/master/spec/intl.html]\n// @clause[sec-intl.getcanonicallocales]\nfunction getCanonicalLocales(locales) {\n // 1. Let ll be ? CanonicalizeLocaleList(locales).\n var ll = CanonicalizeLocaleList(locales);\n // 2. Return CreateArrayFromList(ll).\n {\n var result = [];\n\n var len = ll.length;\n var k = 0;\n\n while (k < len) {\n result[k] = ll[k];\n k++;\n }\n return result;\n }\n}\n\nObject.defineProperty(Intl, 'getCanonicalLocales', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: getCanonicalLocales\n});\n\n// Currency minor units output from get-4217 grunt task, formatted\nvar currencyMinorUnits = {\n BHD: 3, BYR: 0, XOF: 0, BIF: 0, XAF: 0, CLF: 4, CLP: 0, KMF: 0, DJF: 0,\n XPF: 0, GNF: 0, ISK: 0, IQD: 3, JPY: 0, JOD: 3, KRW: 0, KWD: 3, LYD: 3,\n OMR: 3, PYG: 0, RWF: 0, TND: 3, UGX: 0, UYI: 0, VUV: 0, VND: 0\n};\n\n// Define the NumberFormat constructor internally so it cannot be tainted\nfunction NumberFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.NumberFormat(locales, options);\n }\n\n return InitializeNumberFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'NumberFormat', {\n configurable: true,\n writable: true,\n value: NumberFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(Intl.NumberFormat, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeNumberFormat accepts the arguments\n * numberFormat (which must be an object), locales, and options. It initializes\n * numberFormat as a NumberFormat object.\n */\nfunction /*11.1.1.1 */InitializeNumberFormat(numberFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(numberFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If numberFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(numberFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. If options is undefined, then\n if (options === undefined)\n // a. Let options be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in constructor\n // with that name.\n options = {};\n\n // 5. Else\n else\n // a. Let options be ToObject(options).\n options = toObject(options);\n\n // 6. Let opt be a new Record.\n var opt = new Record(),\n\n\n // 7. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with the arguments options, \"localeMatcher\", \"string\",\n // a List containing the two String values \"lookup\" and \"best fit\", and\n // \"best fit\".\n matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 8. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 9. Let NumberFormat be the standard built-in object that is the initial value\n // of Intl.NumberFormat.\n // 10. Let localeData be the value of the [[localeData]] internal property of\n // NumberFormat.\n var localeData = internals.NumberFormat['[[localeData]]'];\n\n // 11. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // NumberFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of NumberFormat, and localeData.\n var r = ResolveLocale(internals.NumberFormat['[[availableLocales]]'], requestedLocales, opt, internals.NumberFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 12. Set the [[locale]] internal property of numberFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 13. Set the [[numberingSystem]] internal property of numberFormat to the value\n // of r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let s be the result of calling the GetOption abstract operation with the\n // arguments options, \"style\", \"string\", a List containing the three String\n // values \"decimal\", \"percent\", and \"currency\", and \"decimal\".\n var s = GetOption(options, 'style', 'string', new List('decimal', 'percent', 'currency'), 'decimal');\n\n // 16. Set the [[style]] internal property of numberFormat to s.\n internal['[[style]]'] = s;\n\n // 17. Let c be the result of calling the GetOption abstract operation with the\n // arguments options, \"currency\", \"string\", undefined, and undefined.\n var c = GetOption(options, 'currency', 'string');\n\n // 18. If c is not undefined and the result of calling the\n // IsWellFormedCurrencyCode abstract operation (defined in 6.3.1) with\n // argument c is false, then throw a RangeError exception.\n if (c !== undefined && !IsWellFormedCurrencyCode(c)) throw new RangeError(\"'\" + c + \"' is not a valid currency code\");\n\n // 19. If s is \"currency\" and c is undefined, throw a TypeError exception.\n if (s === 'currency' && c === undefined) throw new TypeError('Currency code is required when style is currency');\n\n var cDigits = void 0;\n\n // 20. If s is \"currency\", then\n if (s === 'currency') {\n // a. Let c be the result of converting c to upper case as specified in 6.1.\n c = c.toUpperCase();\n\n // b. Set the [[currency]] internal property of numberFormat to c.\n internal['[[currency]]'] = c;\n\n // c. Let cDigits be the result of calling the CurrencyDigits abstract\n // operation (defined below) with argument c.\n cDigits = CurrencyDigits(c);\n }\n\n // 21. Let cd be the result of calling the GetOption abstract operation with the\n // arguments options, \"currencyDisplay\", \"string\", a List containing the\n // three String values \"code\", \"symbol\", and \"name\", and \"symbol\".\n var cd = GetOption(options, 'currencyDisplay', 'string', new List('code', 'symbol', 'name'), 'symbol');\n\n // 22. If s is \"currency\", then set the [[currencyDisplay]] internal property of\n // numberFormat to cd.\n if (s === 'currency') internal['[[currencyDisplay]]'] = cd;\n\n // 23. Let mnid be the result of calling the GetNumberOption abstract operation\n // (defined in 9.2.10) with arguments options, \"minimumIntegerDigits\", 1, 21,\n // and 1.\n var mnid = GetNumberOption(options, 'minimumIntegerDigits', 1, 21, 1);\n\n // 24. Set the [[minimumIntegerDigits]] internal property of numberFormat to mnid.\n internal['[[minimumIntegerDigits]]'] = mnid;\n\n // 25. If s is \"currency\", then let mnfdDefault be cDigits; else let mnfdDefault\n // be 0.\n var mnfdDefault = s === 'currency' ? cDigits : 0;\n\n // 26. Let mnfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"minimumFractionDigits\", 0, 20, and mnfdDefault.\n var mnfd = GetNumberOption(options, 'minimumFractionDigits', 0, 20, mnfdDefault);\n\n // 27. Set the [[minimumFractionDigits]] internal property of numberFormat to mnfd.\n internal['[[minimumFractionDigits]]'] = mnfd;\n\n // 28. If s is \"currency\", then let mxfdDefault be max(mnfd, cDigits); else if s\n // is \"percent\", then let mxfdDefault be max(mnfd, 0); else let mxfdDefault\n // be max(mnfd, 3).\n var mxfdDefault = s === 'currency' ? Math.max(mnfd, cDigits) : s === 'percent' ? Math.max(mnfd, 0) : Math.max(mnfd, 3);\n\n // 29. Let mxfd be the result of calling the GetNumberOption abstract operation\n // with arguments options, \"maximumFractionDigits\", mnfd, 20, and mxfdDefault.\n var mxfd = GetNumberOption(options, 'maximumFractionDigits', mnfd, 20, mxfdDefault);\n\n // 30. Set the [[maximumFractionDigits]] internal property of numberFormat to mxfd.\n internal['[[maximumFractionDigits]]'] = mxfd;\n\n // 31. Let mnsd be the result of calling the [[Get]] internal method of options\n // with argument \"minimumSignificantDigits\".\n var mnsd = options.minimumSignificantDigits;\n\n // 32. Let mxsd be the result of calling the [[Get]] internal method of options\n // with argument \"maximumSignificantDigits\".\n var mxsd = options.maximumSignificantDigits;\n\n // 33. If mnsd is not undefined or mxsd is not undefined, then:\n if (mnsd !== undefined || mxsd !== undefined) {\n // a. Let mnsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"minimumSignificantDigits\", 1, 21,\n // and 1.\n mnsd = GetNumberOption(options, 'minimumSignificantDigits', 1, 21, 1);\n\n // b. Let mxsd be the result of calling the GetNumberOption abstract\n // operation with arguments options, \"maximumSignificantDigits\", mnsd,\n // 21, and 21.\n mxsd = GetNumberOption(options, 'maximumSignificantDigits', mnsd, 21, 21);\n\n // c. Set the [[minimumSignificantDigits]] internal property of numberFormat\n // to mnsd, and the [[maximumSignificantDigits]] internal property of\n // numberFormat to mxsd.\n internal['[[minimumSignificantDigits]]'] = mnsd;\n internal['[[maximumSignificantDigits]]'] = mxsd;\n }\n // 34. Let g be the result of calling the GetOption abstract operation with the\n // arguments options, \"useGrouping\", \"boolean\", undefined, and true.\n var g = GetOption(options, 'useGrouping', 'boolean', undefined, true);\n\n // 35. Set the [[useGrouping]] internal property of numberFormat to g.\n internal['[[useGrouping]]'] = g;\n\n // 36. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 37. Let patterns be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"patterns\".\n var patterns = dataLocaleData.patterns;\n\n // 38. Assert: patterns is an object (see 11.2.3)\n\n // 39. Let stylePatterns be the result of calling the [[Get]] internal method of\n // patterns with argument s.\n var stylePatterns = patterns[s];\n\n // 40. Set the [[positivePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"positivePattern\".\n internal['[[positivePattern]]'] = stylePatterns.positivePattern;\n\n // 41. Set the [[negativePattern]] internal property of numberFormat to the\n // result of calling the [[Get]] internal method of stylePatterns with the\n // argument \"negativePattern\".\n internal['[[negativePattern]]'] = stylePatterns.negativePattern;\n\n // 42. Set the [[boundFormat]] internal property of numberFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 43. Set the [[initializedNumberFormat]] internal property of numberFormat to\n // true.\n internal['[[initializedNumberFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) numberFormat.format = GetFormatNumber.call(numberFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return numberFormat;\n}\n\nfunction CurrencyDigits(currency) {\n // When the CurrencyDigits abstract operation is called with an argument currency\n // (which must be an upper case String value), the following steps are taken:\n\n // 1. If the ISO 4217 currency and funds code list contains currency as an\n // alphabetic code, then return the minor unit value corresponding to the\n // currency from the list; else return 2.\n return currencyMinorUnits[currency] !== undefined ? currencyMinorUnits[currency] : 2;\n}\n\n/* 11.2.3 */internals.NumberFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.NumberFormat is called, the\n * following steps are taken:\n */\n/* 11.2.2 */\ndefineProperty(Intl.NumberFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * NumberFormat object.\n */\n/* 11.3.2 */defineProperty(Intl.NumberFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatNumber\n});\n\nfunction GetFormatNumber() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.NumberFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this NumberFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 1, that takes the argument value and\n // performs the following steps:\n var F = function F(value) {\n // i. If value is not provided, then let value be undefined.\n // ii. Let x be ToNumber(value).\n // iii. Return the result of calling the FormatNumber abstract\n // operation (defined below) with arguments this and x.\n return FormatNumber(this, /* x = */Number(value));\n };\n\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts() {\n var value = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.NumberFormat object.');\n\n var x = Number(value);\n return FormatNumberToParts(this, x);\n}\n\nObject.defineProperty(Intl.NumberFormat.prototype, 'formatToParts', {\n configurable: true,\n enumerable: false,\n writable: true,\n value: formatToParts\n});\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumbertoparts]\n */\nfunction FormatNumberToParts(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be ArrayCreate(0).\n var result = [];\n // 3. Let n be 0.\n var n = 0;\n // 4. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Let O be ObjectCreate(%ObjectPrototype%).\n var O = {};\n // a. Perform ? CreateDataPropertyOrThrow(O, \"type\", part.[[type]]).\n O.type = part['[[type]]'];\n // a. Perform ? CreateDataPropertyOrThrow(O, \"value\", part.[[value]]).\n O.value = part['[[value]]'];\n // a. Perform ? CreateDataPropertyOrThrow(result, ? ToString(n), O).\n result[n] = O;\n // a. Increment n by 1.\n n += 1;\n }\n // 5. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-partitionnumberpattern]\n */\nfunction PartitionNumberPattern(numberFormat, x) {\n\n var internal = getInternalProperties(numberFormat),\n locale = internal['[[dataLocale]]'],\n nums = internal['[[numberingSystem]]'],\n data = internals.NumberFormat['[[localeData]]'][locale],\n ild = data.symbols[nums] || data.symbols.latn,\n pattern = void 0;\n\n // 1. If x is not NaN and x < 0, then:\n if (!isNaN(x) && x < 0) {\n // a. Let x be -x.\n x = -x;\n // a. Let pattern be the value of numberFormat.[[negativePattern]].\n pattern = internal['[[negativePattern]]'];\n }\n // 2. Else,\n else {\n // a. Let pattern be the value of numberFormat.[[positivePattern]].\n pattern = internal['[[positivePattern]]'];\n }\n // 3. Let result be a new empty List.\n var result = new List();\n // 4. Let beginIndex be Call(%StringProto_indexOf%, pattern, \"{\", 0).\n var beginIndex = pattern.indexOf('{', 0);\n // 5. Let endIndex be 0.\n var endIndex = 0;\n // 6. Let nextIndex be 0.\n var nextIndex = 0;\n // 7. Let length be the number of code units in pattern.\n var length = pattern.length;\n // 8. Repeat while beginIndex is an integer index into pattern:\n while (beginIndex > -1 && beginIndex < length) {\n // a. Set endIndex to Call(%StringProto_indexOf%, pattern, \"}\", beginIndex)\n endIndex = pattern.indexOf('}', beginIndex);\n // a. If endIndex = -1, throw new Error exception.\n if (endIndex === -1) throw new Error();\n // a. If beginIndex is greater than nextIndex, then:\n if (beginIndex > nextIndex) {\n // i. Let literal be a substring of pattern from position nextIndex, inclusive, to position beginIndex, exclusive.\n var literal = pattern.substring(nextIndex, beginIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': literal });\n }\n // a. Let p be the substring of pattern from position beginIndex, exclusive, to position endIndex, exclusive.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // a. If p is equal \"number\", then:\n if (p === \"number\") {\n // i. If x is NaN,\n if (isNaN(x)) {\n // 1. Let n be an ILD String value indicating the NaN value.\n var n = ild.nan;\n // 2. Add new part record { [[type]]: \"nan\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'nan', '[[value]]': n });\n }\n // ii. Else if isFinite(x) is false,\n else if (!isFinite(x)) {\n // 1. Let n be an ILD String value indicating infinity.\n var _n = ild.infinity;\n // 2. Add new part record { [[type]]: \"infinity\", [[value]]: n } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'infinity', '[[value]]': _n });\n }\n // iii. Else,\n else {\n // 1. If the value of numberFormat.[[style]] is \"percent\" and isFinite(x), let x be 100 × x.\n if (internal['[[style]]'] === 'percent' && isFinite(x)) x *= 100;\n\n var _n2 = void 0;\n // 2. If the numberFormat.[[minimumSignificantDigits]] and numberFormat.[[maximumSignificantDigits]] are present, then\n if (hop.call(internal, '[[minimumSignificantDigits]]') && hop.call(internal, '[[maximumSignificantDigits]]')) {\n // a. Let n be ToRawPrecision(x, numberFormat.[[minimumSignificantDigits]], numberFormat.[[maximumSignificantDigits]]).\n _n2 = ToRawPrecision(x, internal['[[minimumSignificantDigits]]'], internal['[[maximumSignificantDigits]]']);\n }\n // 3. Else,\n else {\n // a. Let n be ToRawFixed(x, numberFormat.[[minimumIntegerDigits]], numberFormat.[[minimumFractionDigits]], numberFormat.[[maximumFractionDigits]]).\n _n2 = ToRawFixed(x, internal['[[minimumIntegerDigits]]'], internal['[[minimumFractionDigits]]'], internal['[[maximumFractionDigits]]']);\n }\n // 4. If the value of the numberFormat.[[numberingSystem]] matches one of the values in the \"Numbering System\" column of Table 2 below, then\n if (numSys[nums]) {\n (function () {\n // a. Let digits be an array whose 10 String valued elements are the UTF-16 string representations of the 10 digits specified in the \"Digits\" column of the matching row in Table 2.\n var digits = numSys[nums];\n // a. Replace each digit in n with the value of digits[digit].\n _n2 = String(_n2).replace(/\\d/g, function (digit) {\n return digits[digit];\n });\n })();\n }\n // 5. Else use an implementation dependent algorithm to map n to the appropriate representation of n in the given numbering system.\n else _n2 = String(_n2); // ###TODO###\n\n var integer = void 0;\n var fraction = void 0;\n // 6. Let decimalSepIndex be Call(%StringProto_indexOf%, n, \".\", 0).\n var decimalSepIndex = _n2.indexOf('.', 0);\n // 7. If decimalSepIndex > 0, then:\n if (decimalSepIndex > 0) {\n // a. Let integer be the substring of n from position 0, inclusive, to position decimalSepIndex, exclusive.\n integer = _n2.substring(0, decimalSepIndex);\n // a. Let fraction be the substring of n from position decimalSepIndex, exclusive, to the end of n.\n fraction = _n2.substring(decimalSepIndex + 1, decimalSepIndex.length);\n }\n // 8. Else:\n else {\n // a. Let integer be n.\n integer = _n2;\n // a. Let fraction be undefined.\n fraction = undefined;\n }\n // 9. If the value of the numberFormat.[[useGrouping]] is true,\n if (internal['[[useGrouping]]'] === true) {\n // a. Let groupSepSymbol be the ILND String representing the grouping separator.\n var groupSepSymbol = ild.group;\n // a. Let groups be a List whose elements are, in left to right order, the substrings defined by ILND set of locations within the integer.\n var groups = [];\n // ----> implementation:\n // Primary group represents the group closest to the decimal\n var pgSize = data.patterns.primaryGroupSize || 3;\n // Secondary group is every other group\n var sgSize = data.patterns.secondaryGroupSize || pgSize;\n // Group only if necessary\n if (integer.length > pgSize) {\n // Index of the primary grouping separator\n var end = integer.length - pgSize;\n // Starting index for our loop\n var idx = end % sgSize;\n var start = integer.slice(0, idx);\n if (start.length) arrPush.call(groups, start);\n // Loop to separate into secondary grouping digits\n while (idx < end) {\n arrPush.call(groups, integer.slice(idx, idx + sgSize));\n idx += sgSize;\n }\n // Add the primary grouping digits\n arrPush.call(groups, integer.slice(end));\n } else {\n arrPush.call(groups, integer);\n }\n // a. Assert: The number of elements in groups List is greater than 0.\n if (groups.length === 0) throw new Error();\n // a. Repeat, while groups List is not empty:\n while (groups.length) {\n // i. Remove the first element from groups and let integerGroup be the value of that element.\n var integerGroup = arrShift.call(groups);\n // ii. Add new part record { [[type]]: \"integer\", [[value]]: integerGroup } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integerGroup });\n // iii. If groups List is not empty, then:\n if (groups.length) {\n // 1. Add new part record { [[type]]: \"group\", [[value]]: groupSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'group', '[[value]]': groupSepSymbol });\n }\n }\n }\n // 10. Else,\n else {\n // a. Add new part record { [[type]]: \"integer\", [[value]]: integer } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'integer', '[[value]]': integer });\n }\n // 11. If fraction is not undefined, then:\n if (fraction !== undefined) {\n // a. Let decimalSepSymbol be the ILND String representing the decimal separator.\n var decimalSepSymbol = ild.decimal;\n // a. Add new part record { [[type]]: \"decimal\", [[value]]: decimalSepSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'decimal', '[[value]]': decimalSepSymbol });\n // a. Add new part record { [[type]]: \"fraction\", [[value]]: fraction } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'fraction', '[[value]]': fraction });\n }\n }\n }\n // a. Else if p is equal \"plusSign\", then:\n else if (p === \"plusSign\") {\n // i. Let plusSignSymbol be the ILND String representing the plus sign.\n var plusSignSymbol = ild.plusSign;\n // ii. Add new part record { [[type]]: \"plusSign\", [[value]]: plusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'plusSign', '[[value]]': plusSignSymbol });\n }\n // a. Else if p is equal \"minusSign\", then:\n else if (p === \"minusSign\") {\n // i. Let minusSignSymbol be the ILND String representing the minus sign.\n var minusSignSymbol = ild.minusSign;\n // ii. Add new part record { [[type]]: \"minusSign\", [[value]]: minusSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'minusSign', '[[value]]': minusSignSymbol });\n }\n // a. Else if p is equal \"percentSign\" and numberFormat.[[style]] is \"percent\", then:\n else if (p === \"percentSign\" && internal['[[style]]'] === \"percent\") {\n // i. Let percentSignSymbol be the ILND String representing the percent sign.\n var percentSignSymbol = ild.percentSign;\n // ii. Add new part record { [[type]]: \"percentSign\", [[value]]: percentSignSymbol } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': percentSignSymbol });\n }\n // a. Else if p is equal \"currency\" and numberFormat.[[style]] is \"currency\", then:\n else if (p === \"currency\" && internal['[[style]]'] === \"currency\") {\n // i. Let currency be the value of numberFormat.[[currency]].\n var currency = internal['[[currency]]'];\n\n var cd = void 0;\n\n // ii. If numberFormat.[[currencyDisplay]] is \"code\", then\n if (internal['[[currencyDisplay]]'] === \"code\") {\n // 1. Let cd be currency.\n cd = currency;\n }\n // iii. Else if numberFormat.[[currencyDisplay]] is \"symbol\", then\n else if (internal['[[currencyDisplay]]'] === \"symbol\") {\n // 1. Let cd be an ILD string representing currency in short form. If the implementation does not have such a representation of currency, use currency itself.\n cd = data.currencies[currency] || currency;\n }\n // iv. Else if numberFormat.[[currencyDisplay]] is \"name\", then\n else if (internal['[[currencyDisplay]]'] === \"name\") {\n // 1. Let cd be an ILD string representing currency in long form. If the implementation does not have such a representation of currency, then use currency itself.\n cd = currency;\n }\n // v. Add new part record { [[type]]: \"currency\", [[value]]: cd } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'currency', '[[value]]': cd });\n }\n // a. Else,\n else {\n // i. Let literal be the substring of pattern from position beginIndex, inclusive, to position endIndex, inclusive.\n var _literal = pattern.substring(beginIndex, endIndex);\n // ii. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal });\n }\n // a. Set nextIndex to endIndex + 1.\n nextIndex = endIndex + 1;\n // a. Set beginIndex to Call(%StringProto_indexOf%, pattern, \"{\", nextIndex)\n beginIndex = pattern.indexOf('{', nextIndex);\n }\n // 9. If nextIndex is less than length, then:\n if (nextIndex < length) {\n // a. Let literal be the substring of pattern from position nextIndex, inclusive, to position length, exclusive.\n var _literal2 = pattern.substring(nextIndex, length);\n // a. Add new part record { [[type]]: \"literal\", [[value]]: literal } as a new element of the list result.\n arrPush.call(result, { '[[type]]': 'literal', '[[value]]': _literal2 });\n }\n // 10. Return result.\n return result;\n}\n\n/*\n * @spec[stasm/ecma402/number-format-to-parts/spec/numberformat.html]\n * @clause[sec-formatnumber]\n */\nfunction FormatNumber(numberFormat, x) {\n // 1. Let parts be ? PartitionNumberPattern(numberFormat, x).\n var parts = PartitionNumberPattern(numberFormat, x);\n // 2. Let result be an empty String.\n var result = '';\n // 3. For each part in parts, do:\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n // a. Set result to a String value produced by concatenating result and part.[[value]].\n result += part['[[value]]'];\n }\n // 4. Return result.\n return result;\n}\n\n/**\n * When the ToRawPrecision abstract operation is called with arguments x (which\n * must be a finite non-negative number), minPrecision, and maxPrecision (both\n * must be integers between 1 and 21) the following steps are taken:\n */\nfunction ToRawPrecision(x, minPrecision, maxPrecision) {\n // 1. Let p be maxPrecision.\n var p = maxPrecision;\n\n var m = void 0,\n e = void 0;\n\n // 2. If x = 0, then\n if (x === 0) {\n // a. Let m be the String consisting of p occurrences of the character \"0\".\n m = arrJoin.call(Array(p + 1), '0');\n // b. Let e be 0.\n e = 0;\n }\n // 3. Else\n else {\n // a. Let e and n be integers such that 10ᵖ⁻¹ ≤ n < 10ᵖ and for which the\n // exact mathematical value of n × 10ᵉ⁻ᵖ⁺¹ – x is as close to zero as\n // possible. If there are two such sets of e and n, pick the e and n for\n // which n × 10ᵉ⁻ᵖ⁺¹ is larger.\n e = log10Floor(Math.abs(x));\n\n // Easier to get to m from here\n var f = Math.round(Math.exp(Math.abs(e - p + 1) * Math.LN10));\n\n // b. Let m be the String consisting of the digits of the decimal\n // representation of n (in order, with no leading zeroes)\n m = String(Math.round(e - p + 1 < 0 ? x * f : x / f));\n }\n\n // 4. If e ≥ p, then\n if (e >= p)\n // a. Return the concatenation of m and e-p+1 occurrences of the character \"0\".\n return m + arrJoin.call(Array(e - p + 1 + 1), '0');\n\n // 5. If e = p-1, then\n else if (e === p - 1)\n // a. Return m.\n return m;\n\n // 6. If e ≥ 0, then\n else if (e >= 0)\n // a. Let m be the concatenation of the first e+1 characters of m, the character\n // \".\", and the remaining p–(e+1) characters of m.\n m = m.slice(0, e + 1) + '.' + m.slice(e + 1);\n\n // 7. If e < 0, then\n else if (e < 0)\n // a. Let m be the concatenation of the String \"0.\", –(e+1) occurrences of the\n // character \"0\", and the string m.\n m = '0.' + arrJoin.call(Array(-(e + 1) + 1), '0') + m;\n\n // 8. If m contains the character \".\", and maxPrecision > minPrecision, then\n if (m.indexOf(\".\") >= 0 && maxPrecision > minPrecision) {\n // a. Let cut be maxPrecision – minPrecision.\n var cut = maxPrecision - minPrecision;\n\n // b. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.charAt(m.length - 1) === '0') {\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n\n // ii. Decrease cut by 1.\n cut--;\n }\n\n // c. If the last character of m is \".\", then\n if (m.charAt(m.length - 1) === '.')\n // i. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. Return m.\n return m;\n}\n\n/**\n * @spec[tc39/ecma402/master/spec/numberformat.html]\n * @clause[sec-torawfixed]\n * When the ToRawFixed abstract operation is called with arguments x (which must\n * be a finite non-negative number), minInteger (which must be an integer between\n * 1 and 21), minFraction, and maxFraction (which must be integers between 0 and\n * 20) the following steps are taken:\n */\nfunction ToRawFixed(x, minInteger, minFraction, maxFraction) {\n // 1. Let f be maxFraction.\n var f = maxFraction;\n // 2. Let n be an integer for which the exact mathematical value of n ÷ 10f – x is as close to zero as possible. If there are two such n, pick the larger n.\n var n = Math.pow(10, f) * x; // diverging...\n // 3. If n = 0, let m be the String \"0\". Otherwise, let m be the String consisting of the digits of the decimal representation of n (in order, with no leading zeroes).\n var m = n === 0 ? \"0\" : n.toFixed(0); // divering...\n\n {\n // this diversion is needed to take into consideration big numbers, e.g.:\n // 1.2344501e+37 -> 12344501000000000000000000000000000000\n var idx = void 0;\n var exp = (idx = m.indexOf('e')) > -1 ? m.slice(idx + 1) : 0;\n if (exp) {\n m = m.slice(0, idx).replace('.', '');\n m += arrJoin.call(Array(exp - (m.length - 1) + 1), '0');\n }\n }\n\n var int = void 0;\n // 4. If f ≠ 0, then\n if (f !== 0) {\n // a. Let k be the number of characters in m.\n var k = m.length;\n // a. If k ≤ f, then\n if (k <= f) {\n // i. Let z be the String consisting of f+1–k occurrences of the character \"0\".\n var z = arrJoin.call(Array(f + 1 - k + 1), '0');\n // ii. Let m be the concatenation of Strings z and m.\n m = z + m;\n // iii. Let k be f+1.\n k = f + 1;\n }\n // a. Let a be the first k–f characters of m, and let b be the remaining f characters of m.\n var a = m.substring(0, k - f),\n b = m.substring(k - f, m.length);\n // a. Let m be the concatenation of the three Strings a, \".\", and b.\n m = a + \".\" + b;\n // a. Let int be the number of characters in a.\n int = a.length;\n }\n // 5. Else, let int be the number of characters in m.\n else int = m.length;\n // 6. Let cut be maxFraction – minFraction.\n var cut = maxFraction - minFraction;\n // 7. Repeat while cut > 0 and the last character of m is \"0\":\n while (cut > 0 && m.slice(-1) === \"0\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n // a. Decrease cut by 1.\n cut--;\n }\n // 8. If the last character of m is \".\", then\n if (m.slice(-1) === \".\") {\n // a. Remove the last character from m.\n m = m.slice(0, -1);\n }\n // 9. If int < minInteger, then\n if (int < minInteger) {\n // a. Let z be the String consisting of minInteger–int occurrences of the character \"0\".\n var _z = arrJoin.call(Array(minInteger - int + 1), '0');\n // a. Let m be the concatenation of Strings z and m.\n m = _z + m;\n }\n // 10. Return m.\n return m;\n}\n\n// Sect 11.3.2 Table 2, Numbering systems\n// ======================================\nvar numSys = {\n arab: [\"٠\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"],\n arabext: [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"],\n bali: [\"᭐\", \"᭑\", \"᭒\", \"᭓\", \"᭔\", \"᭕\", \"᭖\", \"᭗\", \"᭘\", \"᭙\"],\n beng: [\"০\", \"১\", \"২\", \"৩\", \"৪\", \"৫\", \"৬\", \"৭\", \"৮\", \"৯\"],\n deva: [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"],\n fullwide: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n gujr: [\"૦\", \"૧\", \"૨\", \"૩\", \"૪\", \"૫\", \"૬\", \"૭\", \"૮\", \"૯\"],\n guru: [\"੦\", \"੧\", \"੨\", \"੩\", \"੪\", \"੫\", \"੬\", \"੭\", \"੮\", \"੯\"],\n hanidec: [\"〇\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"七\", \"八\", \"九\"],\n khmr: [\"០\", \"១\", \"២\", \"៣\", \"៤\", \"៥\", \"៦\", \"៧\", \"៨\", \"៩\"],\n knda: [\"೦\", \"೧\", \"೨\", \"೩\", \"೪\", \"೫\", \"೬\", \"೭\", \"೮\", \"೯\"],\n laoo: [\"໐\", \"໑\", \"໒\", \"໓\", \"໔\", \"໕\", \"໖\", \"໗\", \"໘\", \"໙\"],\n latn: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n limb: [\"᥆\", \"᥇\", \"᥈\", \"᥉\", \"᥊\", \"᥋\", \"᥌\", \"᥍\", \"᥎\", \"᥏\"],\n mlym: [\"൦\", \"൧\", \"൨\", \"൩\", \"൪\", \"൫\", \"൬\", \"൭\", \"൮\", \"൯\"],\n mong: [\"᠐\", \"᠑\", \"᠒\", \"᠓\", \"᠔\", \"᠕\", \"᠖\", \"᠗\", \"᠘\", \"᠙\"],\n mymr: [\"၀\", \"၁\", \"၂\", \"၃\", \"၄\", \"၅\", \"၆\", \"၇\", \"၈\", \"၉\"],\n orya: [\"୦\", \"୧\", \"୨\", \"୩\", \"୪\", \"୫\", \"୬\", \"୭\", \"୮\", \"୯\"],\n tamldec: [\"௦\", \"௧\", \"௨\", \"௩\", \"௪\", \"௫\", \"௬\", \"௭\", \"௮\", \"௯\"],\n telu: [\"౦\", \"౧\", \"౨\", \"౩\", \"౪\", \"౫\", \"౬\", \"౭\", \"౮\", \"౯\"],\n thai: [\"๐\", \"๑\", \"๒\", \"๓\", \"๔\", \"๕\", \"๖\", \"๗\", \"๘\", \"๙\"],\n tibt: [\"༠\", \"༡\", \"༢\", \"༣\", \"༤\", \"༥\", \"༦\", \"༧\", \"༨\", \"༩\"]\n};\n\n/**\n * This function provides access to the locale and formatting options computed\n * during initialization of the object.\n *\n * The function returns a new object whose properties and attributes are set as\n * if constructed by an object literal assigning to each of the following\n * properties the value of the corresponding internal property of this\n * NumberFormat object (see 11.4): locale, numberingSystem, style, currency,\n * currencyDisplay, minimumIntegerDigits, minimumFractionDigits,\n * maximumFractionDigits, minimumSignificantDigits, maximumSignificantDigits, and\n * useGrouping. Properties whose corresponding internal properties are not present\n * are not assigned.\n */\n/* 11.3.3 */defineProperty(Intl.NumberFormat.prototype, 'resolvedOptions', {\n configurable: true,\n writable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'numberingSystem', 'style', 'currency', 'currencyDisplay', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits', 'useGrouping'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 11.3_b\n if (!internal || !internal['[[initializedNumberFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.NumberFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\n/* jslint esnext: true */\n\n// Match these datetime components in a CLDR pattern, except those in single quotes\nvar expDTComponents = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n// trim patterns after transformations\nvar expPatternTrimmer = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n// Skip over patterns with these datetime components because we don't have data\n// to back them up:\n// timezone, weekday, amoung others\nvar unwantedDTCs = /[rqQASjJgwWIQq]/; // xXVO were removed from this list in favor of computing matches with timeZoneName values but printing as empty string\n\nvar dtKeys = [\"era\", \"year\", \"month\", \"day\", \"weekday\", \"quarter\"];\nvar tmKeys = [\"hour\", \"minute\", \"second\", \"hour12\", \"timeZoneName\"];\n\nfunction isDateFormatOnly(obj) {\n for (var i = 0; i < tmKeys.length; i += 1) {\n if (obj.hasOwnProperty(tmKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction isTimeFormatOnly(obj) {\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (obj.hasOwnProperty(dtKeys[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction joinDateAndTimeFormats(dateFormatObj, timeFormatObj) {\n var o = { _: {} };\n for (var i = 0; i < dtKeys.length; i += 1) {\n if (dateFormatObj[dtKeys[i]]) {\n o[dtKeys[i]] = dateFormatObj[dtKeys[i]];\n }\n if (dateFormatObj._[dtKeys[i]]) {\n o._[dtKeys[i]] = dateFormatObj._[dtKeys[i]];\n }\n }\n for (var j = 0; j < tmKeys.length; j += 1) {\n if (timeFormatObj[tmKeys[j]]) {\n o[tmKeys[j]] = timeFormatObj[tmKeys[j]];\n }\n if (timeFormatObj._[tmKeys[j]]) {\n o._[tmKeys[j]] = timeFormatObj._[tmKeys[j]];\n }\n }\n return o;\n}\n\nfunction computeFinalPatterns(formatObj) {\n // From http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns:\n // 'In patterns, two single quotes represents a literal single quote, either\n // inside or outside single quotes. Text within single quotes is not\n // interpreted in any way (except for two adjacent single quotes).'\n formatObj.pattern12 = formatObj.extendedPattern.replace(/'([^']*)'/g, function ($0, literal) {\n return literal ? literal : \"'\";\n });\n\n // pattern 12 is always the default. we can produce the 24 by removing {ampm}\n formatObj.pattern = formatObj.pattern12.replace('{ampm}', '').replace(expPatternTrimmer, '');\n return formatObj;\n}\n\nfunction expDTComponentsMeta($0, formatObj) {\n switch ($0.charAt(0)) {\n // --- Era\n case 'G':\n formatObj.era = ['short', 'short', 'short', 'long', 'narrow'][$0.length - 1];\n return '{era}';\n\n // --- Year\n case 'y':\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n formatObj.year = $0.length === 2 ? '2-digit' : 'numeric';\n return '{year}';\n\n // --- Quarter (not supported in this polyfill)\n case 'Q':\n case 'q':\n formatObj.quarter = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{quarter}';\n\n // --- Month\n case 'M':\n case 'L':\n formatObj.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][$0.length - 1];\n return '{month}';\n\n // --- Week (not supported in this polyfill)\n case 'w':\n // week of the year\n formatObj.week = $0.length === 2 ? '2-digit' : 'numeric';\n return '{weekday}';\n case 'W':\n // week of the month\n formatObj.week = 'numeric';\n return '{weekday}';\n\n // --- Day\n case 'd':\n // day of the month\n formatObj.day = $0.length === 2 ? '2-digit' : 'numeric';\n return '{day}';\n case 'D': // day of the year\n case 'F': // day of the week\n case 'g':\n // 1..n: Modified Julian day\n formatObj.day = 'numeric';\n return '{day}';\n\n // --- Week Day\n case 'E':\n // day of the week\n formatObj.weekday = ['short', 'short', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'e':\n // local day of the week\n formatObj.weekday = ['numeric', '2-digit', 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n case 'c':\n // stand alone local day of the week\n formatObj.weekday = ['numeric', undefined, 'short', 'long', 'narrow', 'short'][$0.length - 1];\n return '{weekday}';\n\n // --- Period\n case 'a': // AM, PM\n case 'b': // am, pm, noon, midnight\n case 'B':\n // flexible day periods\n formatObj.hour12 = true;\n return '{ampm}';\n\n // --- Hour\n case 'h':\n case 'H':\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n case 'k':\n case 'K':\n formatObj.hour12 = true; // 12-hour-cycle time formats (using h or K)\n formatObj.hour = $0.length === 2 ? '2-digit' : 'numeric';\n return '{hour}';\n\n // --- Minute\n case 'm':\n formatObj.minute = $0.length === 2 ? '2-digit' : 'numeric';\n return '{minute}';\n\n // --- Second\n case 's':\n formatObj.second = $0.length === 2 ? '2-digit' : 'numeric';\n return '{second}';\n case 'S':\n case 'A':\n formatObj.second = 'numeric';\n return '{second}';\n\n // --- Timezone\n case 'z': // 1..3, 4: specific non-location format\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x':\n // 1, 2, 3, 4: The ISO8601 varios formats\n // this polyfill only supports much, for now, we are just doing something dummy\n formatObj.timeZoneName = $0.length < 4 ? 'short' : 'long';\n return '{timeZoneName}';\n }\n}\n\n/**\n * Converts the CLDR availableFormats into the objects and patterns required by\n * the ECMAScript Internationalization API specification.\n */\nfunction createDateTimeFormat(skeleton, pattern) {\n // we ignore certain patterns that are unsupported to avoid this expensive op.\n if (unwantedDTCs.test(pattern)) return undefined;\n\n var formatObj = {\n originalPattern: pattern,\n _: {}\n };\n\n // Replace the pattern string with the one required by the specification, whilst\n // at the same time evaluating it for the subsets and formats\n formatObj.extendedPattern = pattern.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj._);\n });\n\n // Match the skeleton string with the one required by the specification\n // this implementation is based on the Date Field Symbol Table:\n // http://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n // Note: we are adding extra data to the formatObject even though this polyfill\n // might not support it.\n skeleton.replace(expDTComponents, function ($0) {\n // See which symbol we're dealing with\n return expDTComponentsMeta($0, formatObj);\n });\n\n return computeFinalPatterns(formatObj);\n}\n\n/**\n * Processes DateTime formats from CLDR to an easier-to-parse format.\n * the result of this operation should be cached the first time a particular\n * calendar is analyzed.\n *\n * The specification requires we support at least the following subsets of\n * date/time components:\n *\n * - 'weekday', 'year', 'month', 'day', 'hour', 'minute', 'second'\n * - 'weekday', 'year', 'month', 'day'\n * - 'year', 'month', 'day'\n * - 'year', 'month'\n * - 'month', 'day'\n * - 'hour', 'minute', 'second'\n * - 'hour', 'minute'\n *\n * We need to cherry pick at least these subsets from the CLDR data and convert\n * them into the pattern objects used in the ECMA-402 API.\n */\nfunction createDateTimeFormats(formats) {\n var availableFormats = formats.availableFormats;\n var timeFormats = formats.timeFormats;\n var dateFormats = formats.dateFormats;\n var result = [];\n var skeleton = void 0,\n pattern = void 0,\n computed = void 0,\n i = void 0,\n j = void 0;\n var timeRelatedFormats = [];\n var dateRelatedFormats = [];\n\n // Map available (custom) formats into a pattern for createDateTimeFormats\n for (skeleton in availableFormats) {\n if (availableFormats.hasOwnProperty(skeleton)) {\n pattern = availableFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n // in some cases, the format is only displaying date specific props\n // or time specific props, in which case we need to also produce the\n // combined formats.\n if (isDateFormatOnly(computed)) {\n dateRelatedFormats.push(computed);\n } else if (isTimeFormatOnly(computed)) {\n timeRelatedFormats.push(computed);\n }\n }\n }\n }\n\n // Map time formats into a pattern for createDateTimeFormats\n for (skeleton in timeFormats) {\n if (timeFormats.hasOwnProperty(skeleton)) {\n pattern = timeFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n timeRelatedFormats.push(computed);\n }\n }\n }\n\n // Map date formats into a pattern for createDateTimeFormats\n for (skeleton in dateFormats) {\n if (dateFormats.hasOwnProperty(skeleton)) {\n pattern = dateFormats[skeleton];\n computed = createDateTimeFormat(skeleton, pattern);\n if (computed) {\n result.push(computed);\n dateRelatedFormats.push(computed);\n }\n }\n }\n\n // combine custom time and custom date formats when they are orthogonals to complete the\n // formats supported by CLDR.\n // This Algo is based on section \"Missing Skeleton Fields\" from:\n // http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems\n for (i = 0; i < timeRelatedFormats.length; i += 1) {\n for (j = 0; j < dateRelatedFormats.length; j += 1) {\n if (dateRelatedFormats[j].month === 'long') {\n pattern = dateRelatedFormats[j].weekday ? formats.full : formats.long;\n } else if (dateRelatedFormats[j].month === 'short') {\n pattern = formats.medium;\n } else {\n pattern = formats.short;\n }\n computed = joinDateAndTimeFormats(dateRelatedFormats[j], timeRelatedFormats[i]);\n computed.originalPattern = pattern;\n computed.extendedPattern = pattern.replace('{0}', timeRelatedFormats[i].extendedPattern).replace('{1}', dateRelatedFormats[j].extendedPattern).replace(/^[,\\s]+|[,\\s]+$/gi, '');\n result.push(computeFinalPatterns(computed));\n }\n }\n\n return result;\n}\n\n// this represents the exceptions of the rule that are not covered by CLDR availableFormats\n// for single property configurations, they play no role when using multiple properties, and\n// those that are not in this table, are not exceptions or are not covered by the data we\n// provide.\nvar validSyntheticProps = {\n second: {\n numeric: 's',\n '2-digit': 'ss'\n },\n minute: {\n numeric: 'm',\n '2-digit': 'mm'\n },\n year: {\n numeric: 'y',\n '2-digit': 'yy'\n },\n day: {\n numeric: 'd',\n '2-digit': 'dd'\n },\n month: {\n numeric: 'L',\n '2-digit': 'LL',\n narrow: 'LLLLL',\n short: 'LLL',\n long: 'LLLL'\n },\n weekday: {\n narrow: 'ccccc',\n short: 'ccc',\n long: 'cccc'\n }\n};\n\nfunction generateSyntheticFormat(propName, propValue) {\n if (validSyntheticProps[propName] && validSyntheticProps[propName][propValue]) {\n var _ref2;\n\n return _ref2 = {\n originalPattern: validSyntheticProps[propName][propValue],\n _: defineProperty$1({}, propName, propValue),\n extendedPattern: \"{\" + propName + \"}\"\n }, defineProperty$1(_ref2, propName, propValue), defineProperty$1(_ref2, \"pattern12\", \"{\" + propName + \"}\"), defineProperty$1(_ref2, \"pattern\", \"{\" + propName + \"}\"), _ref2;\n }\n}\n\n// An object map of date component keys, saves using a regex later\nvar dateWidths = objCreate(null, { narrow: {}, short: {}, long: {} });\n\n/**\n * Returns a string for a date component, resolved using multiple inheritance as specified\n * as specified in the Unicode Technical Standard 35.\n */\nfunction resolveDateString(data, ca, component, width, key) {\n // From http://www.unicode.org/reports/tr35/tr35.html#Multiple_Inheritance:\n // 'In clearly specified instances, resources may inherit from within the same locale.\n // For example, ... the Buddhist calendar inherits from the Gregorian calendar.'\n var obj = data[ca] && data[ca][component] ? data[ca][component] : data.gregory[component],\n\n\n // \"sideways\" inheritance resolves strings when a key doesn't exist\n alts = {\n narrow: ['short', 'long'],\n short: ['long', 'narrow'],\n long: ['short', 'narrow']\n },\n\n\n //\n resolved = hop.call(obj, width) ? obj[width] : hop.call(obj, alts[width][0]) ? obj[alts[width][0]] : obj[alts[width][1]];\n\n // `key` wouldn't be specified for components 'dayPeriods'\n return key !== null ? resolved[key] : resolved;\n}\n\n// Define the DateTimeFormat constructor internally so it cannot be tainted\nfunction DateTimeFormatConstructor() {\n var locales = arguments[0];\n var options = arguments[1];\n\n if (!this || this === Intl) {\n return new Intl.DateTimeFormat(locales, options);\n }\n return InitializeDateTimeFormat(toObject(this), locales, options);\n}\n\ndefineProperty(Intl, 'DateTimeFormat', {\n configurable: true,\n writable: true,\n value: DateTimeFormatConstructor\n});\n\n// Must explicitly set prototypes as unwritable\ndefineProperty(DateTimeFormatConstructor, 'prototype', {\n writable: false\n});\n\n/**\n * The abstract operation InitializeDateTimeFormat accepts the arguments dateTimeFormat\n * (which must be an object), locales, and options. It initializes dateTimeFormat as a\n * DateTimeFormat object.\n */\nfunction /* 12.1.1.1 */InitializeDateTimeFormat(dateTimeFormat, locales, options) {\n // This will be a internal properties object if we're not already initialized\n var internal = getInternalProperties(dateTimeFormat);\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore();\n\n // 1. If dateTimeFormat has an [[initializedIntlObject]] internal property with\n // value true, throw a TypeError exception.\n if (internal['[[initializedIntlObject]]'] === true) throw new TypeError('`this` object has already been initialized as an Intl object');\n\n // Need this to access the `internal` object\n defineProperty(dateTimeFormat, '__getInternalProperties', {\n value: function value() {\n // NOTE: Non-standard, for internal use only\n if (arguments[0] === secret) return internal;\n }\n });\n\n // 2. Set the [[initializedIntlObject]] internal property of numberFormat to true.\n internal['[[initializedIntlObject]]'] = true;\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n var requestedLocales = CanonicalizeLocaleList(locales);\n\n // 4. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined below) with arguments options, \"any\", and \"date\".\n options = ToDateTimeOptions(options, 'any', 'date');\n\n // 5. Let opt be a new Record.\n var opt = new Record();\n\n // 6. Let matcher be the result of calling the GetOption abstract operation\n // (defined in 9.2.9) with arguments options, \"localeMatcher\", \"string\", a List\n // containing the two String values \"lookup\" and \"best fit\", and \"best fit\".\n var matcher = GetOption(options, 'localeMatcher', 'string', new List('lookup', 'best fit'), 'best fit');\n\n // 7. Set opt.[[localeMatcher]] to matcher.\n opt['[[localeMatcher]]'] = matcher;\n\n // 8. Let DateTimeFormat be the standard built-in object that is the initial\n // value of Intl.DateTimeFormat.\n var DateTimeFormat = internals.DateTimeFormat; // This is what we *really* need\n\n // 9. Let localeData be the value of the [[localeData]] internal property of\n // DateTimeFormat.\n var localeData = DateTimeFormat['[[localeData]]'];\n\n // 10. Let r be the result of calling the ResolveLocale abstract operation\n // (defined in 9.2.5) with the [[availableLocales]] internal property of\n // DateTimeFormat, requestedLocales, opt, the [[relevantExtensionKeys]]\n // internal property of DateTimeFormat, and localeData.\n var r = ResolveLocale(DateTimeFormat['[[availableLocales]]'], requestedLocales, opt, DateTimeFormat['[[relevantExtensionKeys]]'], localeData);\n\n // 11. Set the [[locale]] internal property of dateTimeFormat to the value of\n // r.[[locale]].\n internal['[[locale]]'] = r['[[locale]]'];\n\n // 12. Set the [[calendar]] internal property of dateTimeFormat to the value of\n // r.[[ca]].\n internal['[[calendar]]'] = r['[[ca]]'];\n\n // 13. Set the [[numberingSystem]] internal property of dateTimeFormat to the value of\n // r.[[nu]].\n internal['[[numberingSystem]]'] = r['[[nu]]'];\n\n // The specification doesn't tell us to do this, but it's helpful later on\n internal['[[dataLocale]]'] = r['[[dataLocale]]'];\n\n // 14. Let dataLocale be the value of r.[[dataLocale]].\n var dataLocale = r['[[dataLocale]]'];\n\n // 15. Let tz be the result of calling the [[Get]] internal method of options with\n // argument \"timeZone\".\n var tz = options.timeZone;\n\n // 16. If tz is not undefined, then\n if (tz !== undefined) {\n // a. Let tz be ToString(tz).\n // b. Convert tz to upper case as described in 6.1.\n // NOTE: If an implementation accepts additional time zone values, as permitted\n // under certain conditions by the Conformance clause, different casing\n // rules apply.\n tz = toLatinUpperCase(tz);\n\n // c. If tz is not \"UTC\", then throw a RangeError exception.\n // ###TODO: accept more time zones###\n if (tz !== 'UTC') throw new RangeError('timeZone is not supported.');\n }\n\n // 17. Set the [[timeZone]] internal property of dateTimeFormat to tz.\n internal['[[timeZone]]'] = tz;\n\n // 18. Let opt be a new Record.\n opt = new Record();\n\n // 19. For each row of Table 3, except the header row, do:\n for (var prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, prop)) continue;\n\n // 20. Let prop be the name given in the Property column of the row.\n // 21. Let value be the result of calling the GetOption abstract operation,\n // passing as argument options, the name given in the Property column of the\n // row, \"string\", a List containing the strings given in the Values column of\n // the row, and undefined.\n var value = GetOption(options, prop, 'string', dateTimeComponents[prop]);\n\n // 22. Set opt.[[]] to value.\n opt['[[' + prop + ']]'] = value;\n }\n\n // Assigned a value below\n var bestFormat = void 0;\n\n // 23. Let dataLocaleData be the result of calling the [[Get]] internal method of\n // localeData with argument dataLocale.\n var dataLocaleData = localeData[dataLocale];\n\n // 24. Let formats be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"formats\".\n // Note: we process the CLDR formats into the spec'd structure\n var formats = ToDateTimeFormats(dataLocaleData.formats);\n\n // 25. Let matcher be the result of calling the GetOption abstract operation with\n // arguments options, \"formatMatcher\", \"string\", a List containing the two String\n // values \"basic\" and \"best fit\", and \"best fit\".\n matcher = GetOption(options, 'formatMatcher', 'string', new List('basic', 'best fit'), 'best fit');\n\n // Optimization: caching the processed formats as a one time operation by\n // replacing the initial structure from localeData\n dataLocaleData.formats = formats;\n\n // 26. If matcher is \"basic\", then\n if (matcher === 'basic') {\n // 27. Let bestFormat be the result of calling the BasicFormatMatcher abstract\n // operation (defined below) with opt and formats.\n bestFormat = BasicFormatMatcher(opt, formats);\n\n // 28. Else\n } else {\n {\n // diverging\n var _hr = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n opt.hour12 = _hr === undefined ? dataLocaleData.hour12 : _hr;\n }\n // 29. Let bestFormat be the result of calling the BestFitFormatMatcher\n // abstract operation (defined below) with opt and formats.\n bestFormat = BestFitFormatMatcher(opt, formats);\n }\n\n // 30. For each row in Table 3, except the header row, do\n for (var _prop in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _prop)) continue;\n\n // a. Let prop be the name given in the Property column of the row.\n // b. Let pDesc be the result of calling the [[GetOwnProperty]] internal method of\n // bestFormat with argument prop.\n // c. If pDesc is not undefined, then\n if (hop.call(bestFormat, _prop)) {\n // i. Let p be the result of calling the [[Get]] internal method of bestFormat\n // with argument prop.\n var p = bestFormat[_prop];\n {\n // diverging\n p = bestFormat._ && hop.call(bestFormat._, _prop) ? bestFormat._[_prop] : p;\n }\n\n // ii. Set the [[]] internal property of dateTimeFormat to p.\n internal['[[' + _prop + ']]'] = p;\n }\n }\n\n var pattern = void 0; // Assigned a value below\n\n // 31. Let hr12 be the result of calling the GetOption abstract operation with\n // arguments options, \"hour12\", \"boolean\", undefined, and undefined.\n var hr12 = GetOption(options, 'hour12', 'boolean' /*, undefined, undefined*/);\n\n // 32. If dateTimeFormat has an internal property [[hour]], then\n if (internal['[[hour]]']) {\n // a. If hr12 is undefined, then let hr12 be the result of calling the [[Get]]\n // internal method of dataLocaleData with argument \"hour12\".\n hr12 = hr12 === undefined ? dataLocaleData.hour12 : hr12;\n\n // b. Set the [[hour12]] internal property of dateTimeFormat to hr12.\n internal['[[hour12]]'] = hr12;\n\n // c. If hr12 is true, then\n if (hr12 === true) {\n // i. Let hourNo0 be the result of calling the [[Get]] internal method of\n // dataLocaleData with argument \"hourNo0\".\n var hourNo0 = dataLocaleData.hourNo0;\n\n // ii. Set the [[hourNo0]] internal property of dateTimeFormat to hourNo0.\n internal['[[hourNo0]]'] = hourNo0;\n\n // iii. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern12\".\n pattern = bestFormat.pattern12;\n }\n\n // d. Else\n else\n // i. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n }\n\n // 33. Else\n else\n // a. Let pattern be the result of calling the [[Get]] internal method of\n // bestFormat with argument \"pattern\".\n pattern = bestFormat.pattern;\n\n // 34. Set the [[pattern]] internal property of dateTimeFormat to pattern.\n internal['[[pattern]]'] = pattern;\n\n // 35. Set the [[boundFormat]] internal property of dateTimeFormat to undefined.\n internal['[[boundFormat]]'] = undefined;\n\n // 36. Set the [[initializedDateTimeFormat]] internal property of dateTimeFormat to\n // true.\n internal['[[initializedDateTimeFormat]]'] = true;\n\n // In ES3, we need to pre-bind the format() function\n if (es3) dateTimeFormat.format = GetFormatDateTime.call(dateTimeFormat);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // Return the newly initialised object\n return dateTimeFormat;\n}\n\n/**\n * Several DateTimeFormat algorithms use values from the following table, which provides\n * property names and allowable values for the components of date and time formats:\n */\nvar dateTimeComponents = {\n weekday: [\"narrow\", \"short\", \"long\"],\n era: [\"narrow\", \"short\", \"long\"],\n year: [\"2-digit\", \"numeric\"],\n month: [\"2-digit\", \"numeric\", \"narrow\", \"short\", \"long\"],\n day: [\"2-digit\", \"numeric\"],\n hour: [\"2-digit\", \"numeric\"],\n minute: [\"2-digit\", \"numeric\"],\n second: [\"2-digit\", \"numeric\"],\n timeZoneName: [\"short\", \"long\"]\n};\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeFormats(formats) {\n if (Object.prototype.toString.call(formats) === '[object Array]') {\n return formats;\n }\n return createDateTimeFormats(formats);\n}\n\n/**\n * When the ToDateTimeOptions abstract operation is called with arguments options,\n * required, and defaults, the following steps are taken:\n */\nfunction ToDateTimeOptions(options, required, defaults) {\n // 1. If options is undefined, then let options be null, else let options be\n // ToObject(options).\n if (options === undefined) options = null;else {\n // (#12) options needs to be a Record, but it also needs to inherit properties\n var opt2 = toObject(options);\n options = new Record();\n\n for (var k in opt2) {\n options[k] = opt2[k];\n }\n }\n\n // 2. Let create be the standard built-in function object defined in ES5, 15.2.3.5.\n var create = objCreate;\n\n // 3. Let options be the result of calling the [[Call]] internal method of create with\n // undefined as the this value and an argument list containing the single item\n // options.\n options = create(options);\n\n // 4. Let needDefaults be true.\n var needDefaults = true;\n\n // 5. If required is \"date\" or \"any\", then\n if (required === 'date' || required === 'any') {\n // a. For each of the property names \"weekday\", \"year\", \"month\", \"day\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.weekday !== undefined || options.year !== undefined || options.month !== undefined || options.day !== undefined) needDefaults = false;\n }\n\n // 6. If required is \"time\" or \"any\", then\n if (required === 'time' || required === 'any') {\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. If the result of calling the [[Get]] internal method of options with the\n // property name is not undefined, then let needDefaults be false.\n if (options.hour !== undefined || options.minute !== undefined || options.second !== undefined) needDefaults = false;\n }\n\n // 7. If needDefaults is true and defaults is either \"date\" or \"all\", then\n if (needDefaults && (defaults === 'date' || defaults === 'all'))\n // a. For each of the property names \"year\", \"month\", \"day\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.year = options.month = options.day = 'numeric';\n\n // 8. If needDefaults is true and defaults is either \"time\" or \"all\", then\n if (needDefaults && (defaults === 'time' || defaults === 'all'))\n // a. For each of the property names \"hour\", \"minute\", \"second\":\n // i. Call the [[DefineOwnProperty]] internal method of options with the\n // property name, Property Descriptor {[[Value]]: \"numeric\", [[Writable]]:\n // true, [[Enumerable]]: true, [[Configurable]]: true}, and false.\n options.hour = options.minute = options.second = 'numeric';\n\n // 9. Return options.\n return options;\n}\n\n/**\n * When the BasicFormatMatcher abstract operation is called with two arguments options and\n * formats, the following steps are taken:\n */\nfunction BasicFormatMatcher(options, formats) {\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, property) ? format[property] : undefined;\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta === 2) score -= longMorePenalty;\n\n // 6. Else if delta = 1, decrease score by shortMorePenalty.\n else if (delta === 1) score -= shortMorePenalty;\n\n // 7. Else if delta = -1, decrease score by shortLessPenalty.\n else if (delta === -1) score -= shortLessPenalty;\n\n // 8. Else if delta = -2, decrease score by longLessPenalty.\n else if (delta === -2) score -= longLessPenalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/**\n * When the BestFitFormatMatcher abstract operation is called with two arguments options\n * and formats, it performs implementation dependent steps, which should return a set of\n * component representations that a typical user of the selected locale would perceive as\n * at least as good as the one returned by BasicFormatMatcher.\n *\n * This polyfill defines the algorithm to be the same as BasicFormatMatcher,\n * with the addition of bonus points awarded where the requested format is of\n * the same data type as the potentially matching format.\n *\n * This algo relies on the concept of closest distance matching described here:\n * http://unicode.org/reports/tr35/tr35-dates.html#Matching_Skeletons\n * Typically a “best match” is found using a closest distance match, such as:\n *\n * Symbols requesting a best choice for the locale are replaced.\n * j → one of {H, k, h, K}; C → one of {a, b, B}\n * -> Covered by cldr.js matching process\n *\n * For fields with symbols representing the same type (year, month, day, etc):\n * Most symbols have a small distance from each other.\n * M ≅ L; E ≅ c; a ≅ b ≅ B; H ≅ k ≅ h ≅ K; ...\n * -> Covered by cldr.js matching process\n *\n * Width differences among fields, other than those marking text vs numeric, are given small distance from each other.\n * MMM ≅ MMMM\n * MM ≅ M\n * Numeric and text fields are given a larger distance from each other.\n * MMM ≈ MM\n * Symbols representing substantial differences (week of year vs week of month) are given much larger a distances from each other.\n * d ≋ D; ...\n * Missing or extra fields cause a match to fail. (But see Missing Skeleton Fields).\n *\n *\n * For example,\n *\n * { month: 'numeric', day: 'numeric' }\n *\n * should match\n *\n * { month: '2-digit', day: '2-digit' }\n *\n * rather than\n *\n * { month: 'short', day: 'numeric' }\n *\n * This makes sense because a user requesting a formatted date with numeric parts would\n * not expect to see the returned format containing narrow, short or long part names\n */\nfunction BestFitFormatMatcher(options, formats) {\n /** Diverging: this block implements the hack for single property configuration, eg.:\n *\n * `new Intl.DateTimeFormat('en', {day: 'numeric'})`\n *\n * should produce a single digit with the day of the month. This is needed because\n * CLDR `availableFormats` data structure doesn't cover these cases.\n */\n {\n var optionsPropNames = [];\n for (var property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, property)) continue;\n\n if (options['[[' + property + ']]'] !== undefined) {\n optionsPropNames.push(property);\n }\n }\n if (optionsPropNames.length === 1) {\n var _bestFormat = generateSyntheticFormat(optionsPropNames[0], options['[[' + optionsPropNames[0] + ']]']);\n if (_bestFormat) {\n return _bestFormat;\n }\n }\n }\n\n // 1. Let removalPenalty be 120.\n var removalPenalty = 120;\n\n // 2. Let additionPenalty be 20.\n var additionPenalty = 20;\n\n // 3. Let longLessPenalty be 8.\n var longLessPenalty = 8;\n\n // 4. Let longMorePenalty be 6.\n var longMorePenalty = 6;\n\n // 5. Let shortLessPenalty be 6.\n var shortLessPenalty = 6;\n\n // 6. Let shortMorePenalty be 3.\n var shortMorePenalty = 3;\n\n var patternPenalty = 2;\n\n var hour12Penalty = 1;\n\n // 7. Let bestScore be -Infinity.\n var bestScore = -Infinity;\n\n // 8. Let bestFormat be undefined.\n var bestFormat = void 0;\n\n // 9. Let i be 0.\n var i = 0;\n\n // 10. Assert: formats is an Array object.\n\n // 11. Let len be the result of calling the [[Get]] internal method of formats with argument \"length\".\n var len = formats.length;\n\n // 12. Repeat while i < len:\n while (i < len) {\n // a. Let format be the result of calling the [[Get]] internal method of formats with argument ToString(i).\n var format = formats[i];\n\n // b. Let score be 0.\n var score = 0;\n\n // c. For each property shown in Table 3:\n for (var _property in dateTimeComponents) {\n if (!hop.call(dateTimeComponents, _property)) continue;\n\n // i. Let optionsProp be options.[[]].\n var optionsProp = options['[[' + _property + ']]'];\n\n // ii. Let formatPropDesc be the result of calling the [[GetOwnProperty]] internal method of format\n // with argument property.\n // iii. If formatPropDesc is not undefined, then\n // 1. Let formatProp be the result of calling the [[Get]] internal method of format with argument property.\n var formatProp = hop.call(format, _property) ? format[_property] : undefined;\n\n // Diverging: using the default properties produced by the pattern/skeleton\n // to match it with user options, and apply a penalty\n var patternProp = hop.call(format._, _property) ? format._[_property] : undefined;\n if (optionsProp !== patternProp) {\n score -= patternPenalty;\n }\n\n // iv. If optionsProp is undefined and formatProp is not undefined, then decrease score by\n // additionPenalty.\n if (optionsProp === undefined && formatProp !== undefined) score -= additionPenalty;\n\n // v. Else if optionsProp is not undefined and formatProp is undefined, then decrease score by\n // removalPenalty.\n else if (optionsProp !== undefined && formatProp === undefined) score -= removalPenalty;\n\n // vi. Else\n else {\n // 1. Let values be the array [\"2-digit\", \"numeric\", \"narrow\", \"short\",\n // \"long\"].\n var values = ['2-digit', 'numeric', 'narrow', 'short', 'long'];\n\n // 2. Let optionsPropIndex be the index of optionsProp within values.\n var optionsPropIndex = arrIndexOf.call(values, optionsProp);\n\n // 3. Let formatPropIndex be the index of formatProp within values.\n var formatPropIndex = arrIndexOf.call(values, formatProp);\n\n // 4. Let delta be max(min(formatPropIndex - optionsPropIndex, 2), -2).\n var delta = Math.max(Math.min(formatPropIndex - optionsPropIndex, 2), -2);\n\n {\n // diverging from spec\n // When the bestFit argument is true, subtract additional penalty where data types are not the same\n if (formatPropIndex <= 1 && optionsPropIndex >= 2 || formatPropIndex >= 2 && optionsPropIndex <= 1) {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 0) score -= longMorePenalty;else if (delta < 0) score -= longLessPenalty;\n } else {\n // 5. If delta = 2, decrease score by longMorePenalty.\n if (delta > 1) score -= shortMorePenalty;else if (delta < -1) score -= shortLessPenalty;\n }\n }\n }\n }\n\n {\n // diverging to also take into consideration differences between 12 or 24 hours\n // which is special for the best fit only.\n if (format._.hour12 !== options.hour12) {\n score -= hour12Penalty;\n }\n }\n\n // d. If score > bestScore, then\n if (score > bestScore) {\n // i. Let bestScore be score.\n bestScore = score;\n // ii. Let bestFormat be format.\n bestFormat = format;\n }\n\n // e. Increase i by 1.\n i++;\n }\n\n // 13. Return bestFormat.\n return bestFormat;\n}\n\n/* 12.2.3 */internals.DateTimeFormat = {\n '[[availableLocales]]': [],\n '[[relevantExtensionKeys]]': ['ca', 'nu'],\n '[[localeData]]': {}\n};\n\n/**\n * When the supportedLocalesOf method of Intl.DateTimeFormat is called, the\n * following steps are taken:\n */\n/* 12.2.2 */\ndefineProperty(Intl.DateTimeFormat, 'supportedLocalesOf', {\n configurable: true,\n writable: true,\n value: fnBind.call(function (locales) {\n // Bound functions only have the `this` value altered if being used as a constructor,\n // this lets us imitate a native function that has no constructor\n if (!hop.call(this, '[[availableLocales]]')) throw new TypeError('supportedLocalesOf() is not a constructor');\n\n // Create an object whose props can be used to restore the values of RegExp props\n var regexpRestore = createRegExpRestore(),\n\n\n // 1. If options is not provided, then let options be undefined.\n options = arguments[1],\n\n\n // 2. Let availableLocales be the value of the [[availableLocales]] internal\n // property of the standard built-in object that is the initial value of\n // Intl.NumberFormat.\n\n availableLocales = this['[[availableLocales]]'],\n\n\n // 3. Let requestedLocales be the result of calling the CanonicalizeLocaleList\n // abstract operation (defined in 9.2.1) with argument locales.\n requestedLocales = CanonicalizeLocaleList(locales);\n\n // Restore the RegExp properties\n regexpRestore();\n\n // 4. Return the result of calling the SupportedLocales abstract operation\n // (defined in 9.2.8) with arguments availableLocales, requestedLocales,\n // and options.\n return SupportedLocales(availableLocales, requestedLocales, options);\n }, internals.NumberFormat)\n});\n\n/**\n * This named accessor property returns a function that formats a number\n * according to the effective locale and the formatting options of this\n * DateTimeFormat object.\n */\n/* 12.3.2 */defineProperty(Intl.DateTimeFormat.prototype, 'format', {\n configurable: true,\n get: GetFormatDateTime\n});\n\nfunction GetFormatDateTime() {\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for format() is not an initialized Intl.DateTimeFormat object.');\n\n // The value of the [[Get]] attribute is a function that takes the following\n // steps:\n\n // 1. If the [[boundFormat]] internal property of this DateTimeFormat object\n // is undefined, then:\n if (internal['[[boundFormat]]'] === undefined) {\n // a. Let F be a Function object, with internal properties set as\n // specified for built-in functions in ES5, 15, or successor, and the\n // length property set to 0, that takes the argument date and\n // performs the following steps:\n var F = function F() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n // i. If date is not provided or is undefined, then let x be the\n // result as if by the expression Date.now() where Date.now is\n // the standard built-in function defined in ES5, 15.9.4.4.\n // ii. Else let x be ToNumber(date).\n // iii. Return the result of calling the FormatDateTime abstract\n // operation (defined below) with arguments this and x.\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatDateTime(this, x);\n };\n // b. Let bind be the standard built-in function object defined in ES5,\n // 15.3.4.5.\n // c. Let bf be the result of calling the [[Call]] internal method of\n // bind with F as the this value and an argument list containing\n // the single item this.\n var bf = fnBind.call(F, this);\n // d. Set the [[boundFormat]] internal property of this NumberFormat\n // object to bf.\n internal['[[boundFormat]]'] = bf;\n }\n // Return the value of the [[boundFormat]] internal property of this\n // NumberFormat object.\n return internal['[[boundFormat]]'];\n}\n\nfunction formatToParts$1() {\n var date = arguments.length <= 0 || arguments[0] === undefined ? undefined : arguments[0];\n\n var internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for formatToParts() is not an initialized Intl.DateTimeFormat object.');\n\n var x = date === undefined ? Date.now() : toNumber(date);\n return FormatToPartsDateTime(this, x);\n}\n\nObject.defineProperty(Intl.DateTimeFormat.prototype, 'formatToParts', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: formatToParts$1\n});\n\nfunction CreateDateTimeParts(dateTimeFormat, x) {\n // 1. If x is not a finite Number, then throw a RangeError exception.\n if (!isFinite(x)) throw new RangeError('Invalid valid date passed to format');\n\n var internal = dateTimeFormat.__getInternalProperties(secret);\n\n // Creating restore point for properties on the RegExp object... please wait\n /* let regexpRestore = */createRegExpRestore(); // ###TODO: review this\n\n // 2. Let locale be the value of the [[locale]] internal property of dateTimeFormat.\n var locale = internal['[[locale]]'];\n\n // 3. Let nf be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {useGrouping: false}) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n var nf = new Intl.NumberFormat([locale], { useGrouping: false });\n\n // 4. Let nf2 be the result of creating a new NumberFormat object as if by the\n // expression new Intl.NumberFormat([locale], {minimumIntegerDigits: 2, useGrouping:\n // false}) where Intl.NumberFormat is the standard built-in constructor defined in\n // 11.1.3.\n var nf2 = new Intl.NumberFormat([locale], { minimumIntegerDigits: 2, useGrouping: false });\n\n // 5. Let tm be the result of calling the ToLocalTime abstract operation (defined\n // below) with x, the value of the [[calendar]] internal property of dateTimeFormat,\n // and the value of the [[timeZone]] internal property of dateTimeFormat.\n var tm = ToLocalTime(x, internal['[[calendar]]'], internal['[[timeZone]]']);\n\n // 6. Let result be the value of the [[pattern]] internal property of dateTimeFormat.\n var pattern = internal['[[pattern]]'];\n\n // 7.\n var result = new List();\n\n // 8.\n var index = 0;\n\n // 9.\n var beginIndex = pattern.indexOf('{');\n\n // 10.\n var endIndex = 0;\n\n // Need the locale minus any extensions\n var dataLocale = internal['[[dataLocale]]'];\n\n // Need the calendar data from CLDR\n var localeData = internals.DateTimeFormat['[[localeData]]'][dataLocale].calendars;\n var ca = internal['[[calendar]]'];\n\n // 11.\n while (beginIndex !== -1) {\n var fv = void 0;\n // a.\n endIndex = pattern.indexOf('}', beginIndex);\n // b.\n if (endIndex === -1) {\n throw new Error('Unclosed pattern');\n }\n // c.\n if (beginIndex > index) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(index, beginIndex)\n });\n }\n // d.\n var p = pattern.substring(beginIndex + 1, endIndex);\n // e.\n if (dateTimeComponents.hasOwnProperty(p)) {\n // i. Let f be the value of the [[

]] internal property of dateTimeFormat.\n var f = internal['[[' + p + ']]'];\n // ii. Let v be the value of tm.[[

]].\n var v = tm['[[' + p + ']]'];\n // iii. If p is \"year\" and v ≤ 0, then let v be 1 - v.\n if (p === 'year' && v <= 0) {\n v = 1 - v;\n }\n // iv. If p is \"month\", then increase v by 1.\n else if (p === 'month') {\n v++;\n }\n // v. If p is \"hour\" and the value of the [[hour12]] internal property of\n // dateTimeFormat is true, then\n else if (p === 'hour' && internal['[[hour12]]'] === true) {\n // 1. Let v be v modulo 12.\n v = v % 12;\n // 2. If v is 0 and the value of the [[hourNo0]] internal property of\n // dateTimeFormat is true, then let v be 12.\n if (v === 0 && internal['[[hourNo0]]'] === true) {\n v = 12;\n }\n }\n\n // vi. If f is \"numeric\", then\n if (f === 'numeric') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments nf and v.\n fv = FormatNumber(nf, v);\n }\n // vii. Else if f is \"2-digit\", then\n else if (f === '2-digit') {\n // 1. Let fv be the result of calling the FormatNumber abstract operation\n // with arguments nf2 and v.\n fv = FormatNumber(nf2, v);\n // 2. If the length of fv is greater than 2, let fv be the substring of fv\n // containing the last two characters.\n if (fv.length > 2) {\n fv = fv.slice(-2);\n }\n }\n // viii. Else if f is \"narrow\", \"short\", or \"long\", then let fv be a String\n // value representing f in the desired form; the String value depends upon\n // the implementation and the effective locale and calendar of\n // dateTimeFormat. If p is \"month\", then the String value may also depend\n // on whether dateTimeFormat has a [[day]] internal property. If p is\n // \"timeZoneName\", then the String value may also depend on the value of\n // the [[inDST]] field of tm.\n else if (f in dateWidths) {\n switch (p) {\n case 'month':\n fv = resolveDateString(localeData, ca, 'months', f, tm['[[' + p + ']]']);\n break;\n\n case 'weekday':\n try {\n fv = resolveDateString(localeData, ca, 'days', f, tm['[[' + p + ']]']);\n // fv = resolveDateString(ca.days, f)[tm['[['+ p +']]']];\n } catch (e) {\n throw new Error('Could not find weekday data for locale ' + locale);\n }\n break;\n\n case 'timeZoneName':\n fv = ''; // ###TODO\n break;\n\n case 'era':\n try {\n fv = resolveDateString(localeData, ca, 'eras', f, tm['[[' + p + ']]']);\n } catch (e) {\n throw new Error('Could not find era data for locale ' + locale);\n }\n break;\n\n default:\n fv = tm['[[' + p + ']]'];\n }\n }\n // ix\n arrPush.call(result, {\n type: p,\n value: fv\n });\n // f.\n } else if (p === 'ampm') {\n // i.\n var _v = tm['[[hour]]'];\n // ii./iii.\n fv = resolveDateString(localeData, ca, 'dayPeriods', _v > 11 ? 'pm' : 'am', null);\n // iv.\n arrPush.call(result, {\n type: 'dayPeriod',\n value: fv\n });\n // g.\n } else {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substring(beginIndex, endIndex + 1)\n });\n }\n // h.\n index = endIndex + 1;\n // i.\n beginIndex = pattern.indexOf('{', index);\n }\n // 12.\n if (endIndex < pattern.length - 1) {\n arrPush.call(result, {\n type: 'literal',\n value: pattern.substr(endIndex + 1)\n });\n }\n // 13.\n return result;\n}\n\n/**\n * When the FormatDateTime abstract operation is called with arguments dateTimeFormat\n * (which must be an object initialized as a DateTimeFormat) and x (which must be a Number\n * value), it returns a String value representing x (interpreted as a time value as\n * specified in ES5, 15.9.1.1) according to the effective locale and the formatting\n * options of dateTimeFormat.\n */\nfunction FormatDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = '';\n\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result += part.value;\n }\n return result;\n}\n\nfunction FormatToPartsDateTime(dateTimeFormat, x) {\n var parts = CreateDateTimeParts(dateTimeFormat, x);\n var result = [];\n for (var i = 0; parts.length > i; i++) {\n var part = parts[i];\n result.push({\n type: part.type,\n value: part.value\n });\n }\n return result;\n}\n\n/**\n * When the ToLocalTime abstract operation is called with arguments date, calendar, and\n * timeZone, the following steps are taken:\n */\nfunction ToLocalTime(date, calendar, timeZone) {\n // 1. Apply calendrical calculations on date for the given calendar and time zone to\n // produce weekday, era, year, month, day, hour, minute, second, and inDST values.\n // The calculations should use best available information about the specified\n // calendar and time zone. If the calendar is \"gregory\", then the calculations must\n // match the algorithms specified in ES5, 15.9.1, except that calculations are not\n // bound by the restrictions on the use of best available information on time zones\n // for local time zone adjustment and daylight saving time adjustment imposed by\n // ES5, 15.9.1.7 and 15.9.1.8.\n // ###TODO###\n var d = new Date(date),\n m = 'get' + (timeZone || '');\n\n // 2. Return a Record with fields [[weekday]], [[era]], [[year]], [[month]], [[day]],\n // [[hour]], [[minute]], [[second]], and [[inDST]], each with the corresponding\n // calculated value.\n return new Record({\n '[[weekday]]': d[m + 'Day'](),\n '[[era]]': +(d[m + 'FullYear']() >= 0),\n '[[year]]': d[m + 'FullYear'](),\n '[[month]]': d[m + 'Month'](),\n '[[day]]': d[m + 'Date'](),\n '[[hour]]': d[m + 'Hours'](),\n '[[minute]]': d[m + 'Minutes'](),\n '[[second]]': d[m + 'Seconds'](),\n '[[inDST]]': false // ###TODO###\n });\n}\n\n/**\n * The function returns a new object whose properties and attributes are set as if\n * constructed by an object literal assigning to each of the following properties the\n * value of the corresponding internal property of this DateTimeFormat object (see 12.4):\n * locale, calendar, numberingSystem, timeZone, hour12, weekday, era, year, month, day,\n * hour, minute, second, and timeZoneName. Properties whose corresponding internal\n * properties are not present are not assigned.\n */\n/* 12.3.3 */defineProperty(Intl.DateTimeFormat.prototype, 'resolvedOptions', {\n writable: true,\n configurable: true,\n value: function value() {\n var prop = void 0,\n descs = new Record(),\n props = ['locale', 'calendar', 'numberingSystem', 'timeZone', 'hour12', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName'],\n internal = this !== null && babelHelpers$1[\"typeof\"](this) === 'object' && getInternalProperties(this);\n\n // Satisfy test 12.3_b\n if (!internal || !internal['[[initializedDateTimeFormat]]']) throw new TypeError('`this` value for resolvedOptions() is not an initialized Intl.DateTimeFormat object.');\n\n for (var i = 0, max = props.length; i < max; i++) {\n if (hop.call(internal, prop = '[[' + props[i] + ']]')) descs[props[i]] = { value: internal[prop], writable: true, configurable: true, enumerable: true };\n }\n\n return objCreate({}, descs);\n }\n});\n\nvar ls = Intl.__localeSensitiveProtos = {\n Number: {},\n Date: {}\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.2.1 */ls.Number.toLocaleString = function () {\n // Satisfy test 13.2.1_1\n if (Object.prototype.toString.call(this) !== '[object Number]') throw new TypeError('`this` value must be a number for Number.prototype.toLocaleString()');\n\n // 1. Let x be this Number value (as defined in ES5, 15.7.4).\n // 2. If locales is not provided, then let locales be undefined.\n // 3. If options is not provided, then let options be undefined.\n // 4. Let numberFormat be the result of creating a new object as if by the\n // expression new Intl.NumberFormat(locales, options) where\n // Intl.NumberFormat is the standard built-in constructor defined in 11.1.3.\n // 5. Return the result of calling the FormatNumber abstract operation\n // (defined in 11.3.2) with arguments numberFormat and x.\n return FormatNumber(new NumberFormatConstructor(arguments[0], arguments[1]), this);\n};\n\n/**\n * When the toLocaleString method is called with optional arguments locales and options,\n * the following steps are taken:\n */\n/* 13.3.1 */ls.Date.toLocaleString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"any\", and \"all\".\n options = ToDateTimeOptions(options, 'any', 'all');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleDateString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.2 */ls.Date.toLocaleDateString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleDateString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0],\n\n\n // 4. If options is not provided, then let options be undefined.\n options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"date\", and \"date\".\n options = ToDateTimeOptions(options, 'date', 'date');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\n/**\n * When the toLocaleTimeString method is called with optional arguments locales and\n * options, the following steps are taken:\n */\n/* 13.3.3 */ls.Date.toLocaleTimeString = function () {\n // Satisfy test 13.3.0_1\n if (Object.prototype.toString.call(this) !== '[object Date]') throw new TypeError('`this` value must be a Date instance for Date.prototype.toLocaleTimeString()');\n\n // 1. Let x be this time value (as defined in ES5, 15.9.5).\n var x = +this;\n\n // 2. If x is NaN, then return \"Invalid Date\".\n if (isNaN(x)) return 'Invalid Date';\n\n // 3. If locales is not provided, then let locales be undefined.\n var locales = arguments[0];\n\n // 4. If options is not provided, then let options be undefined.\n var options = arguments[1];\n\n // 5. Let options be the result of calling the ToDateTimeOptions abstract\n // operation (defined in 12.1.1) with arguments options, \"time\", and \"time\".\n options = ToDateTimeOptions(options, 'time', 'time');\n\n // 6. Let dateTimeFormat be the result of creating a new object as if by the\n // expression new Intl.DateTimeFormat(locales, options) where\n // Intl.DateTimeFormat is the standard built-in constructor defined in 12.1.3.\n var dateTimeFormat = new DateTimeFormatConstructor(locales, options);\n\n // 7. Return the result of calling the FormatDateTime abstract operation (defined\n // in 12.3.2) with arguments dateTimeFormat and x.\n return FormatDateTime(dateTimeFormat, x);\n};\n\ndefineProperty(Intl, '__applyLocaleSensitivePrototypes', {\n writable: true,\n configurable: true,\n value: function value() {\n defineProperty(Number.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Number.toLocaleString });\n // Need this here for IE 8, to avoid the _DontEnum_ bug\n defineProperty(Date.prototype, 'toLocaleString', { writable: true, configurable: true, value: ls.Date.toLocaleString });\n\n for (var k in ls.Date) {\n if (hop.call(ls.Date, k)) defineProperty(Date.prototype, k, { writable: true, configurable: true, value: ls.Date[k] });\n }\n }\n});\n\n/**\n * Can't really ship a single script with data for hundreds of locales, so we provide\n * this __addLocaleData method as a means for the developer to add the data on an\n * as-needed basis\n */\ndefineProperty(Intl, '__addLocaleData', {\n value: function value(data) {\n if (!IsStructurallyValidLanguageTag(data.locale)) throw new Error(\"Object passed doesn't identify itself with a valid language tag\");\n\n addLocaleData(data, data.locale);\n }\n});\n\nfunction addLocaleData(data, tag) {\n // Both NumberFormat and DateTimeFormat require number data, so throw if it isn't present\n if (!data.number) throw new Error(\"Object passed doesn't contain locale data for Intl.NumberFormat\");\n\n var locale = void 0,\n locales = [tag],\n parts = tag.split('-');\n\n // Create fallbacks for locale data with scripts, e.g. Latn, Hans, Vaii, etc\n if (parts.length > 2 && parts[1].length === 4) arrPush.call(locales, parts[0] + '-' + parts[2]);\n\n while (locale = arrShift.call(locales)) {\n // Add to NumberFormat internal properties as per 11.2.3\n arrPush.call(internals.NumberFormat['[[availableLocales]]'], locale);\n internals.NumberFormat['[[localeData]]'][locale] = data.number;\n\n // ...and DateTimeFormat internal properties as per 12.2.3\n if (data.date) {\n data.date.nu = data.number.nu;\n arrPush.call(internals.DateTimeFormat['[[availableLocales]]'], locale);\n internals.DateTimeFormat['[[localeData]]'][locale] = data.date;\n }\n }\n\n // If this is the first set of locale data added, make it the default\n if (defaultLocale === undefined) setDefaultLocale(tag);\n}\n\ndefineProperty(Intl, '__disableRegExpRestore', {\n value: function value() {\n internals.disableRegExpRestore = true;\n }\n});\n\nmodule.exports = Intl;","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap} */ var $wm;\n\t/** @type {Map} */ var $m;\n\t/** @type {import('.').RootNode} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictDepth: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n ? []\n : [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, check strictDepth option for throw, else just add whatever is left\n\n if (segment) {\n if (options.strictDepth === true) {\n throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n }\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData');\n\n/**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\nfunction isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n}\n\nmodule.exports = isMatch;\n","var inherits = require('inherits')\nvar EventEmitter = require('events').EventEmitter\n\nmodule.exports = Queue\nmodule.exports.default = Queue\n\nfunction Queue (options) {\n if (!(this instanceof Queue)) {\n return new Queue(options)\n }\n\n EventEmitter.call(this)\n options = options || {}\n this.concurrency = options.concurrency || Infinity\n this.timeout = options.timeout || 0\n this.autostart = options.autostart || false\n this.results = options.results || null\n this.pending = 0\n this.session = 0\n this.running = false\n this.jobs = []\n this.timers = {}\n}\ninherits(Queue, EventEmitter)\n\nvar arrayMethods = [\n 'pop',\n 'shift',\n 'indexOf',\n 'lastIndexOf'\n]\n\narrayMethods.forEach(function (method) {\n Queue.prototype[method] = function () {\n return Array.prototype[method].apply(this.jobs, arguments)\n }\n})\n\nQueue.prototype.slice = function (begin, end) {\n this.jobs = this.jobs.slice(begin, end)\n return this\n}\n\nQueue.prototype.reverse = function () {\n this.jobs.reverse()\n return this\n}\n\nvar arrayAddMethods = [\n 'push',\n 'unshift',\n 'splice'\n]\n\narrayAddMethods.forEach(function (method) {\n Queue.prototype[method] = function () {\n var methodResult = Array.prototype[method].apply(this.jobs, arguments)\n if (this.autostart) {\n this.start()\n }\n return methodResult\n }\n})\n\nObject.defineProperty(Queue.prototype, 'length', {\n get: function () {\n return this.pending + this.jobs.length\n }\n})\n\nQueue.prototype.start = function (cb) {\n if (cb) {\n callOnErrorOrEnd.call(this, cb)\n }\n\n this.running = true\n\n if (this.pending >= this.concurrency) {\n return\n }\n\n if (this.jobs.length === 0) {\n if (this.pending === 0) {\n done.call(this)\n }\n return\n }\n\n var self = this\n var job = this.jobs.shift()\n var once = true\n var session = this.session\n var timeoutId = null\n var didTimeout = false\n var resultIndex = null\n var timeout = job.hasOwnProperty('timeout') ? job.timeout : this.timeout\n\n function next (err, result) {\n if (once && self.session === session) {\n once = false\n self.pending--\n if (timeoutId !== null) {\n delete self.timers[timeoutId]\n clearTimeout(timeoutId)\n }\n\n if (err) {\n self.emit('error', err, job)\n } else if (didTimeout === false) {\n if (resultIndex !== null) {\n self.results[resultIndex] = Array.prototype.slice.call(arguments, 1)\n }\n self.emit('success', result, job)\n }\n\n if (self.session === session) {\n if (self.pending === 0 && self.jobs.length === 0) {\n done.call(self)\n } else if (self.running) {\n self.start()\n }\n }\n }\n }\n\n if (timeout) {\n timeoutId = setTimeout(function () {\n didTimeout = true\n if (self.listeners('timeout').length > 0) {\n self.emit('timeout', next, job)\n } else {\n next()\n }\n }, timeout)\n this.timers[timeoutId] = timeoutId\n }\n\n if (this.results) {\n resultIndex = this.results.length\n this.results[resultIndex] = null\n }\n\n this.pending++\n self.emit('start', job)\n var promise = job(next)\n if (promise && promise.then && typeof promise.then === 'function') {\n promise.then(function (result) {\n return next(null, result)\n }).catch(function (err) {\n return next(err || true)\n })\n }\n\n if (this.running && this.jobs.length > 0) {\n this.start()\n }\n}\n\nQueue.prototype.stop = function () {\n this.running = false\n}\n\nQueue.prototype.end = function (err) {\n clearTimers.call(this)\n this.jobs.length = 0\n this.pending = 0\n done.call(this, err)\n}\n\nfunction clearTimers () {\n for (var key in this.timers) {\n var timeoutId = this.timers[key]\n delete this.timers[key]\n clearTimeout(timeoutId)\n }\n}\n\nfunction callOnErrorOrEnd (cb) {\n var self = this\n this.on('error', onerror)\n this.on('end', onend)\n\n function onerror (err) { self.end(err) }\n function onend (err) {\n self.removeListener('error', onerror)\n self.removeListener('end', onend)\n cb(err, this.results)\n }\n}\n\nfunction done (err) {\n this.session++\n this.running = false\n this.emit('end', err)\n}\n","\n/**\n * Expose `isUrl`.\n */\n\nmodule.exports = isUrl;\n\n/**\n * RegExps.\n * A URL must match #1 and then at least one of #2/#3.\n * Use two levels of REs to avoid REDOS.\n */\n\nvar protocolAndDomainRE = /^(?:\\w+:)?\\/\\/(\\S+)$/;\n\nvar localhostDomainRE = /^localhost[\\:?\\d]*(?:[^\\:?\\d]\\S*)?$/\nvar nonLocalhostDomainRE = /^[^\\s\\.]+\\.\\S{2,}$/;\n\n/**\n * Loosely validate a URL `string`.\n *\n * @param {String} string\n * @return {Boolean}\n */\n\nfunction isUrl(string){\n if (typeof string !== 'string') {\n return false;\n }\n\n var match = string.match(protocolAndDomainRE);\n if (!match) {\n return false;\n }\n\n var everythingAfterProtocol = match[1];\n if (!everythingAfterProtocol) {\n return false;\n }\n\n if (localhostDomainRE.test(everythingAfterProtocol) ||\n nonLocalhostDomainRE.test(everythingAfterProtocol)) {\n return true;\n }\n\n return false;\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n let i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\n\nconst swap32 = array => {\n const len = array.length;\n for (let i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\n\nconst swap32LE = array => {\n if (isBigEndian) {\n swap32(array);\n }\n};\n\nmodule.exports = {\n swap32LE: swap32LE\n};\n","const INITIAL_STATE = 1;\nconst FAIL_STATE = 0;\n\n/**\n * A StateMachine represents a deterministic finite automaton.\n * It can perform matches over a sequence of values, similar to a regular expression.\n */\nexport default class StateMachine {\n constructor(dfa) {\n this.stateTable = dfa.stateTable;\n this.accepting = dfa.accepting;\n this.tags = dfa.tags;\n }\n\n /**\n * Returns an iterable object that yields pattern matches over the input sequence.\n * Matches are of the form [startIndex, endIndex, tags].\n */\n match(str) {\n let self = this;\n return {\n *[Symbol.iterator]() {\n let state = INITIAL_STATE;\n let startRun = null;\n let lastAccepting = null;\n let lastState = null;\n\n for (let p = 0; p < str.length; p++) {\n let c = str[p];\n\n lastState = state;\n state = self.stateTable[state][c];\n\n if (state === FAIL_STATE) {\n // yield the last match if any\n if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n yield [startRun, lastAccepting, self.tags[lastState]];\n }\n\n // reset the state as if we started over from the initial state\n state = self.stateTable[INITIAL_STATE][c];\n startRun = null;\n }\n\n // start a run if not in the failure state\n if (state !== FAIL_STATE && startRun == null) {\n startRun = p;\n }\n\n // if accepting, mark the potential match end\n if (self.accepting[state]) {\n lastAccepting = p;\n }\n\n // reset the state to the initial state if we get into the failure state\n if (state === FAIL_STATE) {\n state = INITIAL_STATE;\n }\n }\n\n // yield the last match if any\n if (startRun != null && lastAccepting != null && lastAccepting >= startRun) {\n yield [startRun, lastAccepting, self.tags[state]];\n }\n }\n };\n }\n\n /**\n * For each match over the input sequence, action functions matching\n * the tag definitions in the input pattern are called with the startIndex,\n * endIndex, and sub-match sequence.\n */\n apply(str, actions) {\n for (let [start, end, tags] of this.match(str)) {\n for (let tag of tags) {\n if (typeof actions[tag] === 'function') {\n actions[tag](start, end, str.slice(start, end + 1));\n }\n }\n }\n }\n}\n","/* Copyright 2013 Google Inc. All Rights Reserved.\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\nvar BrotliInput = require('./streams').BrotliInput;\nvar BrotliOutput = require('./streams').BrotliOutput;\nvar BrotliBitReader = require('./bit_reader');\nvar BrotliDictionary = require('./dictionary');\nvar HuffmanCode = require('./huffman').HuffmanCode;\nvar BrotliBuildHuffmanTable = require('./huffman').BrotliBuildHuffmanTable;\nvar Context = require('./context');\nvar Prefix = require('./prefix');\nvar Transform = require('./transform');\n\nvar kDefaultCodeLength = 8;\nvar kCodeLengthRepeatCode = 16;\nvar kNumLiteralCodes = 256;\nvar kNumInsertAndCopyCodes = 704;\nvar kNumBlockLengthCodes = 26;\nvar kLiteralContextBits = 6;\nvar kDistanceContextBits = 2;\n\nvar HUFFMAN_TABLE_BITS = 8;\nvar HUFFMAN_TABLE_MASK = 0xff;\n/* Maximum possible Huffman table size for an alphabet size of 704, max code\n * length 15 and root table bits 8. */\nvar HUFFMAN_MAX_TABLE_SIZE = 1080;\n\nvar CODE_LENGTH_CODES = 18;\nvar kCodeLengthCodeOrder = new Uint8Array([\n 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n]);\n\nvar NUM_DISTANCE_SHORT_CODES = 16;\nvar kDistanceShortCodeIndexOffset = new Uint8Array([\n 3, 2, 1, 0, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2\n]);\n\nvar kDistanceShortCodeValueOffset = new Int8Array([\n 0, 0, 0, 0, -1, 1, -2, 2, -3, 3, -1, 1, -2, 2, -3, 3\n]);\n\nvar kMaxHuffmanTableSize = new Uint16Array([\n 256, 402, 436, 468, 500, 534, 566, 598, 630, 662, 694, 726, 758, 790, 822,\n 854, 886, 920, 952, 984, 1016, 1048, 1080\n]);\n\nfunction DecodeWindowBits(br) {\n var n;\n if (br.readBits(1) === 0) {\n return 16;\n }\n \n n = br.readBits(3);\n if (n > 0) {\n return 17 + n;\n }\n \n n = br.readBits(3);\n if (n > 0) {\n return 8 + n;\n }\n \n return 17;\n}\n\n/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */\nfunction DecodeVarLenUint8(br) {\n if (br.readBits(1)) {\n var nbits = br.readBits(3);\n if (nbits === 0) {\n return 1;\n } else {\n return br.readBits(nbits) + (1 << nbits);\n }\n }\n return 0;\n}\n\nfunction MetaBlockLength() {\n this.meta_block_length = 0;\n this.input_end = 0;\n this.is_uncompressed = 0;\n this.is_metadata = false;\n}\n\nfunction DecodeMetaBlockLength(br) {\n var out = new MetaBlockLength; \n var size_nibbles;\n var size_bytes;\n var i;\n \n out.input_end = br.readBits(1);\n if (out.input_end && br.readBits(1)) {\n return out;\n }\n \n size_nibbles = br.readBits(2) + 4;\n if (size_nibbles === 7) {\n out.is_metadata = true;\n \n if (br.readBits(1) !== 0)\n throw new Error('Invalid reserved bit');\n \n size_bytes = br.readBits(2);\n if (size_bytes === 0)\n return out;\n \n for (i = 0; i < size_bytes; i++) {\n var next_byte = br.readBits(8);\n if (i + 1 === size_bytes && size_bytes > 1 && next_byte === 0)\n throw new Error('Invalid size byte');\n \n out.meta_block_length |= next_byte << (i * 8);\n }\n } else {\n for (i = 0; i < size_nibbles; ++i) {\n var next_nibble = br.readBits(4);\n if (i + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)\n throw new Error('Invalid size nibble');\n \n out.meta_block_length |= next_nibble << (i * 4);\n }\n }\n \n ++out.meta_block_length;\n \n if (!out.input_end && !out.is_metadata) {\n out.is_uncompressed = br.readBits(1);\n }\n \n return out;\n}\n\n/* Decodes the next Huffman code from bit-stream. */\nfunction ReadSymbol(table, index, br) {\n var start_index = index;\n \n var nbits;\n br.fillBitWindow();\n index += (br.val_ >>> br.bit_pos_) & HUFFMAN_TABLE_MASK;\n nbits = table[index].bits - HUFFMAN_TABLE_BITS;\n if (nbits > 0) {\n br.bit_pos_ += HUFFMAN_TABLE_BITS;\n index += table[index].value;\n index += (br.val_ >>> br.bit_pos_) & ((1 << nbits) - 1);\n }\n br.bit_pos_ += table[index].bits;\n return table[index].value;\n}\n\nfunction ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {\n var symbol = 0;\n var prev_code_len = kDefaultCodeLength;\n var repeat = 0;\n var repeat_code_len = 0;\n var space = 32768;\n \n var table = [];\n for (var i = 0; i < 32; i++)\n table.push(new HuffmanCode(0, 0));\n \n BrotliBuildHuffmanTable(table, 0, 5, code_length_code_lengths, CODE_LENGTH_CODES);\n\n while (symbol < num_symbols && space > 0) {\n var p = 0;\n var code_len;\n \n br.readMoreInput();\n br.fillBitWindow();\n p += (br.val_ >>> br.bit_pos_) & 31;\n br.bit_pos_ += table[p].bits;\n code_len = table[p].value & 0xff;\n if (code_len < kCodeLengthRepeatCode) {\n repeat = 0;\n code_lengths[symbol++] = code_len;\n if (code_len !== 0) {\n prev_code_len = code_len;\n space -= 32768 >> code_len;\n }\n } else {\n var extra_bits = code_len - 14;\n var old_repeat;\n var repeat_delta;\n var new_len = 0;\n if (code_len === kCodeLengthRepeatCode) {\n new_len = prev_code_len;\n }\n if (repeat_code_len !== new_len) {\n repeat = 0;\n repeat_code_len = new_len;\n }\n old_repeat = repeat;\n if (repeat > 0) {\n repeat -= 2;\n repeat <<= extra_bits;\n }\n repeat += br.readBits(extra_bits) + 3;\n repeat_delta = repeat - old_repeat;\n if (symbol + repeat_delta > num_symbols) {\n throw new Error('[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols');\n }\n \n for (var x = 0; x < repeat_delta; x++)\n code_lengths[symbol + x] = repeat_code_len;\n \n symbol += repeat_delta;\n \n if (repeat_code_len !== 0) {\n space -= repeat_delta << (15 - repeat_code_len);\n }\n }\n }\n if (space !== 0) {\n throw new Error(\"[ReadHuffmanCodeLengths] space = \" + space);\n }\n \n for (; symbol < num_symbols; symbol++)\n code_lengths[symbol] = 0;\n}\n\nfunction ReadHuffmanCode(alphabet_size, tables, table, br) {\n var table_size = 0;\n var simple_code_or_skip;\n var code_lengths = new Uint8Array(alphabet_size);\n \n br.readMoreInput();\n \n /* simple_code_or_skip is used as follows:\n 1 for simple code;\n 0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */\n simple_code_or_skip = br.readBits(2);\n if (simple_code_or_skip === 1) {\n /* Read symbols, codes & code lengths directly. */\n var i;\n var max_bits_counter = alphabet_size - 1;\n var max_bits = 0;\n var symbols = new Int32Array(4);\n var num_symbols = br.readBits(2) + 1;\n while (max_bits_counter) {\n max_bits_counter >>= 1;\n ++max_bits;\n }\n\n for (i = 0; i < num_symbols; ++i) {\n symbols[i] = br.readBits(max_bits) % alphabet_size;\n code_lengths[symbols[i]] = 2;\n }\n code_lengths[symbols[0]] = 1;\n switch (num_symbols) {\n case 1:\n break;\n case 3:\n if ((symbols[0] === symbols[1]) ||\n (symbols[0] === symbols[2]) ||\n (symbols[1] === symbols[2])) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n break;\n case 2:\n if (symbols[0] === symbols[1]) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n \n code_lengths[symbols[1]] = 1;\n break;\n case 4:\n if ((symbols[0] === symbols[1]) ||\n (symbols[0] === symbols[2]) ||\n (symbols[0] === symbols[3]) ||\n (symbols[1] === symbols[2]) ||\n (symbols[1] === symbols[3]) ||\n (symbols[2] === symbols[3])) {\n throw new Error('[ReadHuffmanCode] invalid symbols');\n }\n \n if (br.readBits(1)) {\n code_lengths[symbols[2]] = 3;\n code_lengths[symbols[3]] = 3;\n } else {\n code_lengths[symbols[0]] = 2;\n }\n break;\n }\n } else { /* Decode Huffman-coded code lengths. */\n var i;\n var code_length_code_lengths = new Uint8Array(CODE_LENGTH_CODES);\n var space = 32;\n var num_codes = 0;\n /* Static Huffman code for the code length code lengths */\n var huff = [\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 1),\n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(3, 2), \n new HuffmanCode(2, 0), new HuffmanCode(2, 4), new HuffmanCode(2, 3), new HuffmanCode(4, 5)\n ];\n for (i = simple_code_or_skip; i < CODE_LENGTH_CODES && space > 0; ++i) {\n var code_len_idx = kCodeLengthCodeOrder[i];\n var p = 0;\n var v;\n br.fillBitWindow();\n p += (br.val_ >>> br.bit_pos_) & 15;\n br.bit_pos_ += huff[p].bits;\n v = huff[p].value;\n code_length_code_lengths[code_len_idx] = v;\n if (v !== 0) {\n space -= (32 >> v);\n ++num_codes;\n }\n }\n \n if (!(num_codes === 1 || space === 0))\n throw new Error('[ReadHuffmanCode] invalid num_codes or space');\n \n ReadHuffmanCodeLengths(code_length_code_lengths, alphabet_size, code_lengths, br);\n }\n \n table_size = BrotliBuildHuffmanTable(tables, table, HUFFMAN_TABLE_BITS, code_lengths, alphabet_size);\n \n if (table_size === 0) {\n throw new Error(\"[ReadHuffmanCode] BuildHuffmanTable failed: \");\n }\n \n return table_size;\n}\n\nfunction ReadBlockLength(table, index, br) {\n var code;\n var nbits;\n code = ReadSymbol(table, index, br);\n nbits = Prefix.kBlockLengthPrefixCode[code].nbits;\n return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);\n}\n\nfunction TranslateShortCodes(code, ringbuffer, index) {\n var val;\n if (code < NUM_DISTANCE_SHORT_CODES) {\n index += kDistanceShortCodeIndexOffset[code];\n index &= 3;\n val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];\n } else {\n val = code - NUM_DISTANCE_SHORT_CODES + 1;\n }\n return val;\n}\n\nfunction MoveToFront(v, index) {\n var value = v[index];\n var i = index;\n for (; i; --i) v[i] = v[i - 1];\n v[0] = value;\n}\n\nfunction InverseMoveToFrontTransform(v, v_len) {\n var mtf = new Uint8Array(256);\n var i;\n for (i = 0; i < 256; ++i) {\n mtf[i] = i;\n }\n for (i = 0; i < v_len; ++i) {\n var index = v[i];\n v[i] = mtf[index];\n if (index) MoveToFront(mtf, index);\n }\n}\n\n/* Contains a collection of huffman trees with the same alphabet size. */\nfunction HuffmanTreeGroup(alphabet_size, num_htrees) {\n this.alphabet_size = alphabet_size;\n this.num_htrees = num_htrees;\n this.codes = new Array(num_htrees + num_htrees * kMaxHuffmanTableSize[(alphabet_size + 31) >>> 5]); \n this.htrees = new Uint32Array(num_htrees);\n}\n\nHuffmanTreeGroup.prototype.decode = function(br) {\n var i;\n var table_size;\n var next = 0;\n for (i = 0; i < this.num_htrees; ++i) {\n this.htrees[i] = next;\n table_size = ReadHuffmanCode(this.alphabet_size, this.codes, next, br);\n next += table_size;\n }\n};\n\nfunction DecodeContextMap(context_map_size, br) {\n var out = { num_htrees: null, context_map: null };\n var use_rle_for_zeros;\n var max_run_length_prefix = 0;\n var table;\n var i;\n \n br.readMoreInput();\n var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;\n\n var context_map = out.context_map = new Uint8Array(context_map_size);\n if (num_htrees <= 1) {\n return out;\n }\n\n use_rle_for_zeros = br.readBits(1);\n if (use_rle_for_zeros) {\n max_run_length_prefix = br.readBits(4) + 1;\n }\n \n table = [];\n for (i = 0; i < HUFFMAN_MAX_TABLE_SIZE; i++) {\n table[i] = new HuffmanCode(0, 0);\n }\n \n ReadHuffmanCode(num_htrees + max_run_length_prefix, table, 0, br);\n \n for (i = 0; i < context_map_size;) {\n var code;\n\n br.readMoreInput();\n code = ReadSymbol(table, 0, br);\n if (code === 0) {\n context_map[i] = 0;\n ++i;\n } else if (code <= max_run_length_prefix) {\n var reps = 1 + (1 << code) + br.readBits(code);\n while (--reps) {\n if (i >= context_map_size) {\n throw new Error(\"[DecodeContextMap] i >= context_map_size\");\n }\n context_map[i] = 0;\n ++i;\n }\n } else {\n context_map[i] = code - max_run_length_prefix;\n ++i;\n }\n }\n if (br.readBits(1)) {\n InverseMoveToFrontTransform(context_map, context_map_size);\n }\n \n return out;\n}\n\nfunction DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {\n var ringbuffer = tree_type * 2;\n var index = tree_type;\n var type_code = ReadSymbol(trees, tree_type * HUFFMAN_MAX_TABLE_SIZE, br);\n var block_type;\n if (type_code === 0) {\n block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];\n } else if (type_code === 1) {\n block_type = ringbuffers[ringbuffer + ((indexes[index] - 1) & 1)] + 1;\n } else {\n block_type = type_code - 2;\n }\n if (block_type >= max_block_type) {\n block_type -= max_block_type;\n }\n block_types[tree_type] = block_type;\n ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;\n ++indexes[index];\n}\n\nfunction CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {\n var rb_size = ringbuffer_mask + 1;\n var rb_pos = pos & ringbuffer_mask;\n var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;\n var nbytes;\n\n /* For short lengths copy byte-by-byte */\n if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {\n while (len-- > 0) {\n br.readMoreInput();\n ringbuffer[rb_pos++] = br.readBits(8);\n if (rb_pos === rb_size) {\n output.write(ringbuffer, rb_size);\n rb_pos = 0;\n }\n }\n return;\n }\n\n if (br.bit_end_pos_ < 32) {\n throw new Error('[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32');\n }\n\n /* Copy remaining 0-4 bytes from br.val_ to ringbuffer. */\n while (br.bit_pos_ < 32) {\n ringbuffer[rb_pos] = (br.val_ >>> br.bit_pos_);\n br.bit_pos_ += 8;\n ++rb_pos;\n --len;\n }\n\n /* Copy remaining bytes from br.buf_ to ringbuffer. */\n nbytes = (br.bit_end_pos_ - br.bit_pos_) >> 3;\n if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {\n var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;\n for (var x = 0; x < tail; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n \n nbytes -= tail;\n rb_pos += tail;\n len -= tail;\n br_pos = 0;\n }\n\n for (var x = 0; x < nbytes; x++)\n ringbuffer[rb_pos + x] = br.buf_[br_pos + x];\n \n rb_pos += nbytes;\n len -= nbytes;\n\n /* If we wrote past the logical end of the ringbuffer, copy the tail of the\n ringbuffer to its beginning and flush the ringbuffer to the output. */\n if (rb_pos >= rb_size) {\n output.write(ringbuffer, rb_size);\n rb_pos -= rb_size; \n for (var x = 0; x < rb_pos; x++)\n ringbuffer[x] = ringbuffer[rb_size + x];\n }\n\n /* If we have more to copy than the remaining size of the ringbuffer, then we\n first fill the ringbuffer from the input and then flush the ringbuffer to\n the output */\n while (rb_pos + len >= rb_size) {\n nbytes = rb_size - rb_pos;\n if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n }\n output.write(ringbuffer, rb_size);\n len -= nbytes;\n rb_pos = 0;\n }\n\n /* Copy straight from the input onto the ringbuffer. The ringbuffer will be\n flushed to the output at a later time. */\n if (br.input_.read(ringbuffer, rb_pos, len) < len) {\n throw new Error('[CopyUncompressedBlockToOutput] not enough bytes');\n }\n\n /* Restore the state of the bit reader. */\n br.reset();\n}\n\n/* Advances the bit reader position to the next byte boundary and verifies\n that any skipped bits are set to zero. */\nfunction JumpToByteBoundary(br) {\n var new_bit_pos = (br.bit_pos_ + 7) & ~7;\n var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);\n return pad_bits == 0;\n}\n\nfunction BrotliDecompressedSize(buffer) {\n var input = new BrotliInput(buffer);\n var br = new BrotliBitReader(input);\n DecodeWindowBits(br);\n var out = DecodeMetaBlockLength(br);\n return out.meta_block_length;\n}\n\nexports.BrotliDecompressedSize = BrotliDecompressedSize;\n\nfunction BrotliDecompressBuffer(buffer, output_size) {\n var input = new BrotliInput(buffer);\n \n if (output_size == null) {\n output_size = BrotliDecompressedSize(buffer);\n }\n \n var output_buffer = new Uint8Array(output_size);\n var output = new BrotliOutput(output_buffer);\n \n BrotliDecompress(input, output);\n \n if (output.pos < output.buffer.length) {\n output.buffer = output.buffer.subarray(0, output.pos);\n }\n \n return output.buffer;\n}\n\nexports.BrotliDecompressBuffer = BrotliDecompressBuffer;\n\nfunction BrotliDecompress(input, output) {\n var i;\n var pos = 0;\n var input_end = 0;\n var window_bits = 0;\n var max_backward_distance;\n var max_distance = 0;\n var ringbuffer_size;\n var ringbuffer_mask;\n var ringbuffer;\n var ringbuffer_end;\n /* This ring buffer holds a few past copy distances that will be used by */\n /* some special distance codes. */\n var dist_rb = [ 16, 15, 11, 4 ];\n var dist_rb_idx = 0;\n /* The previous 2 bytes used for context. */\n var prev_byte1 = 0;\n var prev_byte2 = 0;\n var hgroup = [new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0), new HuffmanTreeGroup(0, 0)];\n var block_type_trees;\n var block_len_trees;\n var br;\n\n /* We need the slack region for the following reasons:\n - always doing two 8-byte copies for fast backward copying\n - transforms\n - flushing the input ringbuffer when decoding uncompressed blocks */\n var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;\n\n br = new BrotliBitReader(input);\n\n /* Decode window size. */\n window_bits = DecodeWindowBits(br);\n max_backward_distance = (1 << window_bits) - 16;\n\n ringbuffer_size = 1 << window_bits;\n ringbuffer_mask = ringbuffer_size - 1;\n ringbuffer = new Uint8Array(ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength);\n ringbuffer_end = ringbuffer_size;\n\n block_type_trees = [];\n block_len_trees = [];\n for (var x = 0; x < 3 * HUFFMAN_MAX_TABLE_SIZE; x++) {\n block_type_trees[x] = new HuffmanCode(0, 0);\n block_len_trees[x] = new HuffmanCode(0, 0);\n }\n\n while (!input_end) {\n var meta_block_remaining_len = 0;\n var is_uncompressed;\n var block_length = [ 1 << 28, 1 << 28, 1 << 28 ];\n var block_type = [ 0 ];\n var num_block_types = [ 1, 1, 1 ];\n var block_type_rb = [ 0, 1, 0, 1, 0, 1 ];\n var block_type_rb_index = [ 0 ];\n var distance_postfix_bits;\n var num_direct_distance_codes;\n var distance_postfix_mask;\n var num_distance_codes;\n var context_map = null;\n var context_modes = null;\n var num_literal_htrees;\n var dist_context_map = null;\n var num_dist_htrees;\n var context_offset = 0;\n var context_map_slice = null;\n var literal_htree_index = 0;\n var dist_context_offset = 0;\n var dist_context_map_slice = null;\n var dist_htree_index = 0;\n var context_lookup_offset1 = 0;\n var context_lookup_offset2 = 0;\n var context_mode;\n var htree_command;\n\n for (i = 0; i < 3; ++i) {\n hgroup[i].codes = null;\n hgroup[i].htrees = null;\n }\n\n br.readMoreInput();\n \n var _out = DecodeMetaBlockLength(br);\n meta_block_remaining_len = _out.meta_block_length;\n if (pos + meta_block_remaining_len > output.buffer.length) {\n /* We need to grow the output buffer to fit the additional data. */\n var tmp = new Uint8Array( pos + meta_block_remaining_len );\n tmp.set( output.buffer );\n output.buffer = tmp;\n } \n input_end = _out.input_end;\n is_uncompressed = _out.is_uncompressed;\n \n if (_out.is_metadata) {\n JumpToByteBoundary(br);\n \n for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {\n br.readMoreInput();\n /* Read one byte and ignore it. */\n br.readBits(8);\n }\n \n continue;\n }\n \n if (meta_block_remaining_len === 0) {\n continue;\n }\n \n if (is_uncompressed) {\n br.bit_pos_ = (br.bit_pos_ + 7) & ~7;\n CopyUncompressedBlockToOutput(output, meta_block_remaining_len, pos,\n ringbuffer, ringbuffer_mask, br);\n pos += meta_block_remaining_len;\n continue;\n }\n \n for (i = 0; i < 3; ++i) {\n num_block_types[i] = DecodeVarLenUint8(br) + 1;\n if (num_block_types[i] >= 2) {\n ReadHuffmanCode(num_block_types[i] + 2, block_type_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n ReadHuffmanCode(kNumBlockLengthCodes, block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n block_length[i] = ReadBlockLength(block_len_trees, i * HUFFMAN_MAX_TABLE_SIZE, br);\n block_type_rb_index[i] = 1;\n }\n }\n \n br.readMoreInput();\n \n distance_postfix_bits = br.readBits(2);\n num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);\n distance_postfix_mask = (1 << distance_postfix_bits) - 1;\n num_distance_codes = (num_direct_distance_codes + (48 << distance_postfix_bits));\n context_modes = new Uint8Array(num_block_types[0]);\n\n for (i = 0; i < num_block_types[0]; ++i) {\n br.readMoreInput();\n context_modes[i] = (br.readBits(2) << 1);\n }\n \n var _o1 = DecodeContextMap(num_block_types[0] << kLiteralContextBits, br);\n num_literal_htrees = _o1.num_htrees;\n context_map = _o1.context_map;\n \n var _o2 = DecodeContextMap(num_block_types[2] << kDistanceContextBits, br);\n num_dist_htrees = _o2.num_htrees;\n dist_context_map = _o2.context_map;\n \n hgroup[0] = new HuffmanTreeGroup(kNumLiteralCodes, num_literal_htrees);\n hgroup[1] = new HuffmanTreeGroup(kNumInsertAndCopyCodes, num_block_types[1]);\n hgroup[2] = new HuffmanTreeGroup(num_distance_codes, num_dist_htrees);\n\n for (i = 0; i < 3; ++i) {\n hgroup[i].decode(br);\n }\n\n context_map_slice = 0;\n dist_context_map_slice = 0;\n context_mode = context_modes[block_type[0]];\n context_lookup_offset1 = Context.lookupOffsets[context_mode];\n context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n htree_command = hgroup[1].htrees[0];\n\n while (meta_block_remaining_len > 0) {\n var cmd_code;\n var range_idx;\n var insert_code;\n var copy_code;\n var insert_length;\n var copy_length;\n var distance_code;\n var distance;\n var context;\n var j;\n var copy_dst;\n\n br.readMoreInput();\n \n if (block_length[1] === 0) {\n DecodeBlockType(num_block_types[1],\n block_type_trees, 1, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[1] = ReadBlockLength(block_len_trees, HUFFMAN_MAX_TABLE_SIZE, br);\n htree_command = hgroup[1].htrees[block_type[1]];\n }\n --block_length[1];\n cmd_code = ReadSymbol(hgroup[1].codes, htree_command, br);\n range_idx = cmd_code >> 6;\n if (range_idx >= 2) {\n range_idx -= 2;\n distance_code = -1;\n } else {\n distance_code = 0;\n }\n insert_code = Prefix.kInsertRangeLut[range_idx] + ((cmd_code >> 3) & 7);\n copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);\n insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset +\n br.readBits(Prefix.kInsertLengthPrefixCode[insert_code].nbits);\n copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset +\n br.readBits(Prefix.kCopyLengthPrefixCode[copy_code].nbits);\n prev_byte1 = ringbuffer[pos-1 & ringbuffer_mask];\n prev_byte2 = ringbuffer[pos-2 & ringbuffer_mask];\n for (j = 0; j < insert_length; ++j) {\n br.readMoreInput();\n\n if (block_length[0] === 0) {\n DecodeBlockType(num_block_types[0],\n block_type_trees, 0, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[0] = ReadBlockLength(block_len_trees, 0, br);\n context_offset = block_type[0] << kLiteralContextBits;\n context_map_slice = context_offset;\n context_mode = context_modes[block_type[0]];\n context_lookup_offset1 = Context.lookupOffsets[context_mode];\n context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];\n }\n context = (Context.lookup[context_lookup_offset1 + prev_byte1] |\n Context.lookup[context_lookup_offset2 + prev_byte2]);\n literal_htree_index = context_map[context_map_slice + context];\n --block_length[0];\n prev_byte2 = prev_byte1;\n prev_byte1 = ReadSymbol(hgroup[0].codes, hgroup[0].htrees[literal_htree_index], br);\n ringbuffer[pos & ringbuffer_mask] = prev_byte1;\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size);\n }\n ++pos;\n }\n meta_block_remaining_len -= insert_length;\n if (meta_block_remaining_len <= 0) break;\n\n if (distance_code < 0) {\n var context;\n \n br.readMoreInput();\n if (block_length[2] === 0) {\n DecodeBlockType(num_block_types[2],\n block_type_trees, 2, block_type, block_type_rb,\n block_type_rb_index, br);\n block_length[2] = ReadBlockLength(block_len_trees, 2 * HUFFMAN_MAX_TABLE_SIZE, br);\n dist_context_offset = block_type[2] << kDistanceContextBits;\n dist_context_map_slice = dist_context_offset;\n }\n --block_length[2];\n context = (copy_length > 4 ? 3 : copy_length - 2) & 0xff;\n dist_htree_index = dist_context_map[dist_context_map_slice + context];\n distance_code = ReadSymbol(hgroup[2].codes, hgroup[2].htrees[dist_htree_index], br);\n if (distance_code >= num_direct_distance_codes) {\n var nbits;\n var postfix;\n var offset;\n distance_code -= num_direct_distance_codes;\n postfix = distance_code & distance_postfix_mask;\n distance_code >>= distance_postfix_bits;\n nbits = (distance_code >> 1) + 1;\n offset = ((2 + (distance_code & 1)) << nbits) - 4;\n distance_code = num_direct_distance_codes +\n ((offset + br.readBits(nbits)) <<\n distance_postfix_bits) + postfix;\n }\n }\n\n /* Convert the distance code to the actual distance by possibly looking */\n /* up past distnaces from the ringbuffer. */\n distance = TranslateShortCodes(distance_code, dist_rb, dist_rb_idx);\n if (distance < 0) {\n throw new Error('[BrotliDecompress] invalid distance');\n }\n\n if (pos < max_backward_distance &&\n max_distance !== max_backward_distance) {\n max_distance = pos;\n } else {\n max_distance = max_backward_distance;\n }\n\n copy_dst = pos & ringbuffer_mask;\n\n if (distance > max_distance) {\n if (copy_length >= BrotliDictionary.minDictionaryWordLength &&\n copy_length <= BrotliDictionary.maxDictionaryWordLength) {\n var offset = BrotliDictionary.offsetsByLength[copy_length];\n var word_id = distance - max_distance - 1;\n var shift = BrotliDictionary.sizeBitsByLength[copy_length];\n var mask = (1 << shift) - 1;\n var word_idx = word_id & mask;\n var transform_idx = word_id >> shift;\n offset += word_idx * copy_length;\n if (transform_idx < Transform.kNumTransforms) {\n var len = Transform.transformDictionaryWord(ringbuffer, copy_dst, offset, copy_length, transform_idx);\n copy_dst += len;\n pos += len;\n meta_block_remaining_len -= len;\n if (copy_dst >= ringbuffer_end) {\n output.write(ringbuffer, ringbuffer_size);\n \n for (var _x = 0; _x < (copy_dst - ringbuffer_end); _x++)\n ringbuffer[_x] = ringbuffer[ringbuffer_end + _x];\n }\n } else {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n } else {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n } else {\n if (distance_code > 0) {\n dist_rb[dist_rb_idx & 3] = distance;\n ++dist_rb_idx;\n }\n\n if (copy_length > meta_block_remaining_len) {\n throw new Error(\"Invalid backward reference. pos: \" + pos + \" distance: \" + distance +\n \" len: \" + copy_length + \" bytes left: \" + meta_block_remaining_len);\n }\n\n for (j = 0; j < copy_length; ++j) {\n ringbuffer[pos & ringbuffer_mask] = ringbuffer[(pos - distance) & ringbuffer_mask];\n if ((pos & ringbuffer_mask) === ringbuffer_mask) {\n output.write(ringbuffer, ringbuffer_size);\n }\n ++pos;\n --meta_block_remaining_len;\n }\n }\n\n /* When we get here, we must have inserted at least one literal and */\n /* made a copy of at least length two, therefore accessing the last 2 */\n /* bytes is valid. */\n prev_byte1 = ringbuffer[(pos - 1) & ringbuffer_mask];\n prev_byte2 = ringbuffer[(pos - 2) & ringbuffer_mask];\n }\n\n /* Protect pos from overflow, wrap it around at every GB of input data */\n pos &= 0x3fffffff;\n }\n\n output.write(ringbuffer, pos & ringbuffer_mask);\n}\n\nexports.BrotliDecompress = BrotliDecompress;\n\nBrotliDictionary.init();\n","/* Copyright 2013 Google Inc. All Rights Reserved.\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 Bit reading helpers\n*/\n\nvar BROTLI_READ_SIZE = 4096;\nvar BROTLI_IBUF_SIZE = (2 * BROTLI_READ_SIZE + 32);\nvar BROTLI_IBUF_MASK = (2 * BROTLI_READ_SIZE - 1);\n\nvar kBitMask = new Uint32Array([\n 0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767,\n 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215\n]);\n\n/* Input byte buffer, consist of a ringbuffer and a \"slack\" region where */\n/* bytes from the start of the ringbuffer are copied. */\nfunction BrotliBitReader(input) {\n this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);\n this.input_ = input; /* input callback */\n \n this.reset();\n}\n\nBrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;\nBrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;\n\nBrotliBitReader.prototype.reset = function() {\n this.buf_ptr_ = 0; /* next input will write here */\n this.val_ = 0; /* pre-fetched bits */\n this.pos_ = 0; /* byte position in stream */\n this.bit_pos_ = 0; /* current bit-reading position in val_ */\n this.bit_end_pos_ = 0; /* bit-reading end position from LSB of val_ */\n this.eos_ = 0; /* input stream is finished */\n \n this.readMoreInput();\n for (var i = 0; i < 4; i++) {\n this.val_ |= this.buf_[this.pos_] << (8 * i);\n ++this.pos_;\n }\n \n return this.bit_end_pos_ > 0;\n};\n\n/* Fills up the input ringbuffer by calling the input callback.\n\n Does nothing if there are at least 32 bytes present after current position.\n\n Returns 0 if either:\n - the input callback returned an error, or\n - there is no more input and the position is past the end of the stream.\n\n After encountering the end of the input stream, 32 additional zero bytes are\n copied to the ringbuffer, therefore it is safe to call this function after\n every 32 bytes of input is read.\n*/\nBrotliBitReader.prototype.readMoreInput = function() {\n if (this.bit_end_pos_ > 256) {\n return;\n } else if (this.eos_) {\n if (this.bit_pos_ > this.bit_end_pos_)\n throw new Error('Unexpected end of input ' + this.bit_pos_ + ' ' + this.bit_end_pos_);\n } else {\n var dst = this.buf_ptr_;\n var bytes_read = this.input_.read(this.buf_, dst, BROTLI_READ_SIZE);\n if (bytes_read < 0) {\n throw new Error('Unexpected end of input');\n }\n \n if (bytes_read < BROTLI_READ_SIZE) {\n this.eos_ = 1;\n /* Store 32 bytes of zero after the stream end. */\n for (var p = 0; p < 32; p++)\n this.buf_[dst + bytes_read + p] = 0;\n }\n \n if (dst === 0) {\n /* Copy the head of the ringbuffer to the slack region. */\n for (var p = 0; p < 32; p++)\n this.buf_[(BROTLI_READ_SIZE << 1) + p] = this.buf_[p];\n\n this.buf_ptr_ = BROTLI_READ_SIZE;\n } else {\n this.buf_ptr_ = 0;\n }\n \n this.bit_end_pos_ += bytes_read << 3;\n }\n};\n\n/* Guarantees that there are at least 24 bits in the buffer. */\nBrotliBitReader.prototype.fillBitWindow = function() { \n while (this.bit_pos_ >= 8) {\n this.val_ >>>= 8;\n this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;\n ++this.pos_;\n this.bit_pos_ = this.bit_pos_ - 8 >>> 0;\n this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;\n }\n};\n\n/* Reads the specified number of bits from Read Buffer. */\nBrotliBitReader.prototype.readBits = function(n_bits) {\n if (32 - this.bit_pos_ < n_bits) {\n this.fillBitWindow();\n }\n \n var val = ((this.val_ >>> this.bit_pos_) & kBitMask[n_bits]);\n this.bit_pos_ += n_bits;\n return val;\n};\n\nmodule.exports = BrotliBitReader;\n","/* Copyright 2013 Google Inc. All Rights Reserved.\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 Collection of static dictionary words.\n*/\n\nvar data = require('./dictionary-data');\nexports.init = function() {\n exports.dictionary = data.init();\n};\n\nexports.offsetsByLength = new Uint32Array([\n 0, 0, 0, 0, 0, 4096, 9216, 21504, 35840, 44032,\n 53248, 63488, 74752, 87040, 93696, 100864, 104704, 106752, 108928, 113536,\n 115968, 118528, 119872, 121280, 122016,\n]);\n\nexports.sizeBitsByLength = new Uint8Array([\n 0, 0, 0, 0, 10, 10, 11, 11, 10, 10,\n 10, 10, 10, 9, 9, 8, 7, 7, 8, 7,\n 7, 6, 6, 5, 5,\n]);\n\nexports.minDictionaryWordLength = 4;\nexports.maxDictionaryWordLength = 24;\n","module.exports=\"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\";\n","\nmodule.exports = absolutize\n\n/**\n * redefine `path` with absolute coordinates\n *\n * @param {Array} path\n * @return {Array}\n */\n\nfunction absolutize(path){\n\tvar startX = 0\n\tvar startY = 0\n\tvar x = 0\n\tvar y = 0\n\n\treturn path.map(function(seg){\n\t\tseg = seg.slice()\n\t\tvar type = seg[0]\n\t\tvar command = type.toUpperCase()\n\n\t\t// is relative\n\t\tif (type != command) {\n\t\t\tseg[0] = command\n\t\t\tswitch (type) {\n\t\t\t\tcase 'a':\n\t\t\t\t\tseg[6] += x\n\t\t\t\t\tseg[7] += y\n\t\t\t\t\tbreak\n\t\t\t\tcase 'v':\n\t\t\t\t\tseg[1] += y\n\t\t\t\t\tbreak\n\t\t\t\tcase 'h':\n\t\t\t\t\tseg[1] += x\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tfor (var i = 1; i < seg.length;) {\n\t\t\t\t\t\tseg[i++] += x\n\t\t\t\t\t\tseg[i++] += y\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// update cursor state\n\t\tswitch (command) {\n\t\t\tcase 'Z':\n\t\t\t\tx = startX\n\t\t\t\ty = startY\n\t\t\t\tbreak\n\t\t\tcase 'H':\n\t\t\t\tx = seg[1]\n\t\t\t\tbreak\n\t\t\tcase 'V':\n\t\t\t\ty = seg[1]\n\t\t\t\tbreak\n\t\t\tcase 'M':\n\t\t\t\tx = startX = seg[1]\n\t\t\t\ty = startY = seg[2]\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tx = seg[seg.length - 2]\n\t\t\t\ty = seg[seg.length - 1]\n\t\t}\n\n\t\treturn seg\n\t})\n}\n","\nmodule.exports = parse\n\n/**\n * expected argument lengths\n * @type {Object}\n */\n\nvar length = {a: 7, c: 6, h: 1, l: 2, m: 2, q: 4, s: 4, t: 2, v: 1, z: 0}\n\n/**\n * segment pattern\n * @type {RegExp}\n */\n\nvar segment = /([astvzqmhlc])([^astvzqmhlc]*)/ig\n\n/**\n * parse an svg path data string. Generates an Array\n * of commands where each command is an Array of the\n * form `[command, arg1, arg2, ...]`\n *\n * @param {String} path\n * @return {Array}\n */\n\nfunction parse(path) {\n\tvar data = []\n\tpath.replace(segment, function(_, command, args){\n\t\tvar type = command.toLowerCase()\n\t\targs = parseValues(args)\n\n\t\t// overloaded moveTo\n\t\tif (type == 'm' && args.length > 2) {\n\t\t\tdata.push([command].concat(args.splice(0, 2)))\n\t\t\ttype = 'l'\n\t\t\tcommand = command == 'm' ? 'l' : 'L'\n\t\t}\n\n\t\twhile (true) {\n\t\t\tif (args.length == length[type]) {\n\t\t\t\targs.unshift(command)\n\t\t\t\treturn data.push(args)\n\t\t\t}\n\t\t\tif (args.length < length[type]) throw new Error('malformed path data')\n\t\t\tdata.push([command].concat(args.splice(0, length[type])))\n\t\t}\n\t})\n\treturn data\n}\n\nvar number = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig\n\nfunction parseValues(args) {\n\tvar numbers = args.match(number)\n\treturn numbers ? numbers.map(Number) : []\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n","module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\nvar uLower = \"u\".charCodeAt(0);\nvar uUpper = \"U\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar isUnicodeRange = /^[a-f0-9?-]+$/i;\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next,\n quote,\n prev,\n token,\n escape,\n escapePos,\n whitespacePos,\n parenthesesOpenPos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n prev.sourceEndIndex += token.length;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash &&\n value.charCodeAt(next + 1) !== star &&\n (!parent ||\n (parent && parent.type === \"function\" && parent.value !== \"calc\")))\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n token.sourceEndIndex = token.unclosed ? next : next + 1;\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n next = value.indexOf(\"*/\", pos);\n\n token = {\n type: \"comment\",\n sourceIndex: pos,\n sourceEndIndex: next + 2\n };\n\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n token.sourceEndIndex = next;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Operation within calc\n } else if (\n (code === slash || code === star) &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\"\n ) {\n token = value[pos];\n tokens.push({\n type: \"word\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token\n });\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n parenthesesOpenPos = pos;\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(parenthesesOpenPos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (parenthesesOpenPos < whitespacePos) {\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: whitespacePos + 1,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n sourceEndIndex: next,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n token.sourceEndIndex = next;\n }\n } else {\n token.after = \"\";\n token.nodes = [];\n }\n pos = next + 1;\n token.sourceEndIndex = token.unclosed ? next : pos;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n token.sourceEndIndex = pos + 1;\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n parent.sourceEndIndex += after.length;\n after = \"\";\n balanced -= 1;\n stack[stack.length - 1].sourceEndIndex = pos;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === star &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === slash &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else if (\n (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) &&\n plus === token.charCodeAt(1) &&\n isUnicodeRange.test(token.slice(2))\n ) {\n tokens.push({\n type: \"unicode-range\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n stack[pos].sourceEndIndex = value.length;\n }\n\n return stack[0].nodes;\n};\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\n// Check if three code points would start a number\n// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number\nfunction likeNumber(value) {\n var code = value.charCodeAt(0);\n var nextCode;\n\n if (code === plus || code === minus) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n var nextNextCode = value.charCodeAt(2);\n\n if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code === dot) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code >= 48 && code <= 57) {\n return true;\n }\n\n return false;\n}\n\n// Consume a number\n// https://www.w3.org/TR/css-syntax-3/#consume-number\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var code;\n var nextCode;\n var nextNextCode;\n\n if (length === 0 || !likeNumber(value)) {\n return false;\n }\n\n code = value.charCodeAt(pos);\n\n if (code === plus || code === minus) {\n pos++;\n }\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n\n if (code === dot && nextCode >= 48 && nextCode <= 57) {\n pos += 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n nextNextCode = value.charCodeAt(pos + 2);\n\n if (\n (code === exp || code === EXP) &&\n ((nextCode >= 48 && nextCode <= 57) ||\n ((nextCode === plus || nextCode === minus) &&\n nextNextCode >= 48 &&\n nextNextCode <= 57))\n ) {\n pos += nextCode === plus || nextCode === minus ? 3 : 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n return {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n };\n};\n","// In our case, there's only one dependency\n\nvar toRgb = require('hsl-to-rgb-for-reals')\n\n// Typically all dependencies should be declared at the top of the file.\n\n// Now let's define an API for our module, we're taking hue, saturation and luminosity values and outputting a CSS compatible hex string.\n// Hue is in degrees, between 0 and 359. Since degrees a cyclical in nature, we'll support numbers greater than 359 or less than 0 by \"spinning\" them around until they fall within the 0 to 359 range.\n// Saturation and luminosity are both percentages, we'll represent these percentages with whole numbers between 0 and 100. For these numbers we'll need to enforce a maximum and a minimum, anything below 0 will become 0, anything above 100 will become 100.\n// Let's write some utility functions to handle this logic:\n\nfunction max (val, n) {\n return (val > n) ? n : val\n}\n\nfunction min (val, n) {\n return (val < n) ? n : val\n}\n\nfunction cycle (val) {\n // for safety:\n val = max(val, 1e7)\n val = min(val, -1e7)\n // cycle value:\n while (val < 0) { val += 360 }\n while (val > 359) { val -= 360 }\n return val\n}\n\n// Now for the main piece, the `hsl` function:\n\nfunction hsl (hue, saturation, luminosity) {\n // resolve degrees to 0 - 359 range\n hue = cycle(hue)\n\n // enforce constraints\n saturation = min(max(saturation, 100), 0)\n luminosity = min(max(luminosity, 100), 0)\n\n // convert to 0 to 1 range used by hsl-to-rgb-for-reals\n saturation /= 100\n luminosity /= 100\n\n // let hsl-to-rgb-for-reals do the hard work\n var rgb = toRgb(hue, saturation, luminosity)\n\n // convert each value in the returned RGB array\n // to a 2 character hex value, join the array into\n // a string, prefixed with a hash\n return '#' + rgb\n .map(function (n) {\n return (256 + n).toString(16).substr(-2)\n })\n .join('')\n}\n\n// In order to make our code into a bona fide module we have to export it:\n\nmodule.exports = hsl\n","// expected hue range: [0, 360)\n// expected saturation range: [0, 1]\n// expected lightness range: [0, 1]\nvar hslToRgb = function(hue, saturation, lightness){\n // based on algorithm from http://en.wikipedia.org/wiki/HSL_and_HSV#Converting_to_RGB\n if( hue == undefined ){\n return [0, 0, 0];\n }\n\n var chroma = (1 - Math.abs((2 * lightness) - 1)) * saturation;\n var huePrime = hue / 60;\n var secondComponent = chroma * (1 - Math.abs((huePrime % 2) - 1));\n\n huePrime = Math.floor(huePrime);\n var red;\n var green;\n var blue;\n\n if( huePrime === 0 ){\n red = chroma;\n green = secondComponent;\n blue = 0;\n }else if( huePrime === 1 ){\n red = secondComponent;\n green = chroma;\n blue = 0;\n }else if( huePrime === 2 ){\n red = 0;\n green = chroma;\n blue = secondComponent;\n }else if( huePrime === 3 ){\n red = 0;\n green = secondComponent;\n blue = chroma;\n }else if( huePrime === 4 ){\n red = secondComponent;\n green = 0;\n blue = chroma;\n }else if( huePrime === 5 ){\n red = chroma;\n green = 0;\n blue = secondComponent;\n }\n\n var lightnessAdjustment = lightness - (chroma / 2);\n red += lightnessAdjustment;\n green += lightnessAdjustment;\n blue += lightnessAdjustment;\n\n return [\n Math.abs(Math.round(red * 255)),\n Math.abs(Math.round(green * 255)),\n Math.abs(Math.round(blue * 255))\n ];\n\n};\n\nmodule.exports = hslToRgb;\n","var Parser = require('./parser');\n\nmodule.exports = function(queries, options) {\n var result = {};\n\n Object.keys(queries).forEach(function(query) {\n if (Parser.parse(query).match(options)) {\n Object.assign(result, queries[query]);\n }\n });\n\n return result;\n};\n","var Query = require('./queries');\nvar Operator = require('./operators');\n\nvar NUMBERS = /[0-9]/;\nvar LETTERS = /[a-z|\\-]/i;\nvar WHITESPACE = /\\s/;\nvar COLON = /:/;\nvar COMMA = /,/;\nvar AND = /and$/;\nvar AT = /@/;\n\nfunction tokenizer(input) {\n var current = 0;\n var tokens = [];\n\n while (current < input.length) {\n var char = input[current];\n\n if (AT.test(char)) {\n char = input[++current];\n while (LETTERS.test(char) && char !== undefined) {\n char = input[++current];\n }\n }\n\n if (WHITESPACE.test(char) || char === ')' || char === '(') {\n current++;\n continue;\n }\n\n if (COLON.test(char) || COMMA.test(char)) {\n current++;\n tokens.push({ type: 'operator', value: char });\n continue;\n }\n\n if (NUMBERS.test(char)) {\n var value = '';\n while (NUMBERS.test(char)) {\n value += char;\n char = input[++current];\n }\n\n tokens.push({ type: 'number', value: value });\n continue;\n }\n\n if (LETTERS.test(char)) {\n var value = '';\n while (LETTERS.test(char) && char !== undefined) {\n value += char;\n char = input[++current];\n }\n if (AND.test(value)) {\n tokens.push({ type: 'operator', value: value });\n } else {\n tokens.push({ type: 'literal', value: value });\n }\n\n continue;\n }\n\n throw new TypeError(\n 'Tokenizer: I dont know what this character is: ' + char\n );\n }\n\n return tokens;\n}\n\nfunction parser(tokens) {\n var output = [];\n var stack = [];\n\n while (tokens.length > 0) {\n var token = tokens.shift();\n\n if (token.type === 'number' || token.type === 'literal') {\n output.push(token);\n continue;\n }\n\n if (token.type === 'operator') {\n if (COLON.test(token.value)) {\n token = { type: 'query', key: output.pop(), value: tokens.shift() };\n output.push(token);\n continue;\n }\n\n while (stack.length > 0) {\n output.unshift(stack.pop());\n }\n stack.push(token);\n }\n }\n\n while (stack.length > 0) {\n output.unshift(stack.pop());\n }\n\n function walk() {\n var head = output.shift();\n\n if (head.type === 'number') {\n return parseInt(head.value);\n }\n\n if (head.type === 'literal') {\n return head.value;\n }\n\n if (head.type === 'operator') {\n var l = walk();\n var r = walk();\n\n return Operator(head.value, l, r);\n }\n\n if (head.type === 'query') {\n var l = head.key.value;\n var r = head.value.value;\n\n return Query(l, r);\n }\n }\n\n return walk();\n}\n\nmodule.exports = {\n parse: function(query) {\n var tokens = tokenizer(query);\n var ast = parser(tokens);\n return ast;\n }\n};\n","function MaxHeight(value) {\n this.value = value;\n\n this.match = function(options) {\n return this.value >= options.height;\n };\n}\n\nfunction MinHeight(value) {\n this.value = value;\n\n this.match = function(options) {\n return this.value < options.height;\n };\n}\n\nfunction MaxWidth(value) {\n this.value = value;\n\n this.match = function(options) {\n return this.value >= options.width;\n };\n}\n\nfunction MinWidth(value) {\n this.value = value;\n\n this.match = function(options) {\n return this.value < options.width;\n };\n}\n\nfunction Orientation(value) {\n this.value = value;\n\n this.match = function(options) {\n return this.value === options.orientation;\n };\n}\n\nmodule.exports = function Query(type, value) {\n switch (type) {\n case 'max-height':\n return new MaxHeight(value);\n case 'min-height':\n return new MinHeight(value);\n case 'max-width':\n return new MaxWidth(value);\n case 'min-width':\n return new MinWidth(value);\n case 'orientation':\n return new Orientation(value);\n default:\n throw new Error(value);\n }\n};\n","function And(left, right) {\n this.left = left;\n this.right = right;\n\n this.match = function(options) {\n return left.match(options) && right.match(options);\n };\n}\n\nfunction Or(left, right) {\n this.left = left;\n this.right = right;\n\n this.match = function(options) {\n return left.match(options) || right.match(options);\n };\n}\n\nmodule.exports = function Operator(type, left, right) {\n switch (type) {\n case 'and':\n return new And(left, right);\n case ',':\n return new Or(left, right);\n default:\n throw new Error(value);\n }\n};\n","/** Text hyphenation in Javascript.\n * Copyright (C) 2024 Yevhen Tiurin (yevhentiurin@gmail.com)\n * https://github.com/ytiurin/hyphen\n *\n * Released under the ISC license\n * https://github.com/ytiurin/hyphen/blob/master/LICENSE\n */\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === \"object\" && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.createHyphenator = factory();\n }\n})(this, function () {\n function createTextReader(setup) {\n var char1 = \"\";\n var char2 = \"\";\n var i = 0;\n var verifier = setup();\n return function (text) {\n while (i < text.length) {\n char1 = text.charAt(i++);\n char2 = text.charAt(i);\n var verified = verifier(char1, char2);\n if (verified !== void 0) {\n return verified;\n }\n }\n };\n }\n\n var isNotLetter = RegExp.prototype.test.bind(\n /\\s|(?![\\'])[\\!-\\@\\[-\\`\\{-\\~\\u2013-\\u203C]/\n );\n function createHTMLVerifier() {\n var skip = false;\n return function (accumulate, chars) {\n if (skip) {\n if (chars[0] === \">\") {\n accumulate();\n skip = false;\n }\n } else if (\n chars[0] === \"<\" &&\n (!isNotLetter(chars[1]) || chars[1] === \"/\")\n ) {\n skip = true;\n }\n return skip;\n };\n }\n function createHyphenCharVerifier(hyphenChar) {\n var skip = false;\n return function (accumulate, chars) {\n if (skip) {\n if (!isNotLetter(chars[0]) && isNotLetter(chars[1])) {\n accumulate();\n skip = false;\n }\n } else if (!isNotLetter(chars[0]) && chars[1] === hyphenChar) {\n skip = true;\n }\n return skip;\n };\n }\n function createHyphenationVerifier(verifiers, minWordLength) {\n return function () {\n var accum0 = \"\";\n var accum = \"\";\n function accumulate() {\n accum0 += accum;\n accum = \"\";\n }\n function resolveWith(value) {\n accum0 = \"\";\n accum = \"\";\n return value;\n }\n return function (char1, char2) {\n accum += char1;\n var skip = verifiers.reduce(function (skip2, verify) {\n return skip2 || verify(accumulate, [char1, char2]);\n }, false);\n if (!skip) {\n if (isNotLetter(char1) && !isNotLetter(char2)) {\n accumulate();\n }\n if (!isNotLetter(char1) && isNotLetter(char2)) {\n if (accum.length >= minWordLength) {\n return resolveWith([accum0, accum]);\n } else {\n accumulate();\n }\n }\n }\n if (char2 === \"\") {\n if (accum.length < minWordLength || skip) {\n accumulate();\n }\n return resolveWith([accum0, accum]);\n }\n };\n };\n }\n\n function createCharIterator(str) {\n var i = 0;\n function nextChar() {\n return str[i++];\n }\n return nextChar;\n }\n function createStringSlicer(str) {\n var i = 0,\n slice = str;\n function next() {\n slice = str.slice(i++);\n if (slice.length < 3) {\n return;\n }\n return slice;\n }\n function isFirstCharacter() {\n return i === 2;\n }\n return [next, isFirstCharacter];\n }\n function hyphenateWord(text, levelsTable, patternTrie, debug, hyphenChar) {\n var levels = new Array(text.length + 1),\n loweredText = (\".\" + text.toLocaleLowerCase() + \".\").split(\"\"),\n wordSlice,\n letter,\n triePtr,\n trieNode,\n patternLevelsIndex,\n patternLevels,\n patternEntityIndex = -1,\n slicer,\n nextSlice,\n isFirstCharacter,\n nextLetter;\n for (var i = levels.length; i--; ) levels[i] = 0;\n slicer = createStringSlicer(loweredText);\n nextSlice = slicer[0];\n isFirstCharacter = slicer[1];\n while ((wordSlice = nextSlice())) {\n patternEntityIndex++;\n if (isFirstCharacter()) {\n patternEntityIndex--;\n }\n triePtr = patternTrie;\n nextLetter = createCharIterator(wordSlice);\n while ((letter = nextLetter())) {\n if ((trieNode = triePtr[letter]) === void 0) {\n break;\n }\n triePtr = {};\n patternLevelsIndex = -1;\n switch (Object.prototype.toString.call(trieNode)) {\n case \"[object Array]\":\n triePtr = trieNode[0];\n patternLevelsIndex = trieNode[1];\n break;\n case \"[object Object]\":\n triePtr = trieNode;\n break;\n case \"[object Number]\":\n patternLevelsIndex = trieNode;\n break;\n }\n if (patternLevelsIndex < 0) {\n continue;\n }\n if (!levelsTable[patternLevelsIndex].splice) {\n levelsTable[patternLevelsIndex] = levelsTable[\n patternLevelsIndex\n ].slice(\"\");\n }\n patternLevels = levelsTable[patternLevelsIndex];\n for (var k = 0; k < patternLevels.length; k++)\n levels[patternEntityIndex + k] = Math.max(\n patternLevels[k],\n levels[patternEntityIndex + k]\n );\n }\n }\n levels[0] = levels[1] = levels[levels.length - 1] = levels[\n levels.length - 2\n ] = 0;\n var hyphenatedText = \"\";\n for (var i = 0; i < levels.length; i++) {\n hyphenatedText +=\n (levels[i] % 2 === 1 ? hyphenChar : \"\") + text.charAt(i);\n }\n return hyphenatedText;\n }\n\n function start(\n text,\n levelsTable,\n patterns,\n cache,\n debug,\n hyphenChar,\n skipHTML,\n minWordLength,\n isAsync\n ) {\n function done() {\n resolveNewText(newText);\n }\n var newText = \"\",\n fragments,\n readText = createTextReader(\n createHyphenationVerifier(\n (skipHTML ? [createHTMLVerifier()] : []).concat(\n createHyphenCharVerifier(hyphenChar)\n ),\n minWordLength\n )\n ),\n resolveNewText = function () {};\n function nextTick() {\n var loopStart = /* @__PURE__ */ new Date();\n while (\n (!isAsync || /* @__PURE__ */ new Date() - loopStart < 10) &&\n (fragments = readText(text))\n ) {\n if (fragments[1]) {\n var cacheKey = fragments[1].length ? \"~\" + fragments[1] : \"\";\n if (cache[cacheKey] === void 0) {\n cache[cacheKey] = hyphenateWord(\n fragments[1],\n levelsTable,\n patterns,\n debug,\n hyphenChar\n );\n }\n fragments[1] = cache[cacheKey];\n }\n newText += fragments[0] + fragments[1];\n }\n if (!fragments) {\n done();\n } else {\n setTimeout(nextTick);\n }\n }\n if (isAsync) {\n setTimeout(nextTick);\n return new Promise(function (resolve) {\n resolveNewText = resolve;\n });\n } else {\n nextTick();\n return newText;\n }\n }\n\n var SETTING_DEFAULT_ASYNC = false;\n var SETTING_DEFAULT_DEBUG = false;\n var SETTING_DEFAULT_EXCEPTIONS = [];\n var SETTING_DEFAULT_HTML = true;\n var SETTING_DEFAULT_HYPH_CHAR = \"\\xAD\";\n var SETTING_DEFAULT_MIN_WORD_LENGTH = 5;\n var SETTING_NAME_ASYNC = \"async\";\n var SETTING_NAME_DEBUG = \"debug\";\n var SETTING_NAME_EXCEPTIONS = \"exceptions\";\n var SETTING_NAME_HTML = \"html\";\n var SETTING_NAME_HYPH_CHAR = \"hyphenChar\";\n var SETTING_NAME_MIN_WORD_LENGTH = \"minWordLength\";\n var _global =\n typeof global === \"object\"\n ? global\n : typeof window === \"object\"\n ? window\n : typeof self === \"object\"\n ? self\n : false\n ? void 0\n : {};\n function extend(target, source) {\n target = target || {};\n for (var key in source) {\n target[key] = source[key];\n }\n return target;\n }\n function validateArray(value) {\n return value instanceof Array;\n }\n function keyOrDefault(object, key, defaultValue, test) {\n if (key in object && (test ? test(object[key]) : true)) {\n return object[key];\n }\n return defaultValue;\n }\n function exceptionsFromDefinition(excetionsList, hyphenChar) {\n return excetionsList.reduce(function (exceptions, exception) {\n exceptions[\"~\" + exception.replace(/\\-/g, \"\")] = exception.replace(\n /\\-/g,\n hyphenChar\n );\n return exceptions;\n }, {});\n }\n function createHyphenator(patternsDefinition, options) {\n options = options || {};\n var asyncMode = keyOrDefault(\n options,\n SETTING_NAME_ASYNC,\n SETTING_DEFAULT_ASYNC\n ),\n caches = {},\n debug = keyOrDefault(options, SETTING_NAME_DEBUG, SETTING_DEFAULT_DEBUG),\n exceptions = {},\n hyphenChar = keyOrDefault(\n options,\n SETTING_NAME_HYPH_CHAR,\n SETTING_DEFAULT_HYPH_CHAR\n ),\n levelsTable = patternsDefinition[0].split(\",\"),\n patterns = JSON.parse(patternsDefinition[1]),\n minWordLength =\n keyOrDefault(\n options,\n SETTING_NAME_MIN_WORD_LENGTH,\n SETTING_DEFAULT_MIN_WORD_LENGTH\n ) >> 0,\n skipHTML = keyOrDefault(options, SETTING_NAME_HTML, SETTING_DEFAULT_HTML),\n userExceptions = keyOrDefault(\n options,\n SETTING_NAME_EXCEPTIONS,\n SETTING_DEFAULT_EXCEPTIONS,\n validateArray\n );\n var cacheKey = hyphenChar + minWordLength;\n exceptions[cacheKey] = {};\n if (patternsDefinition[2]) {\n exceptions[cacheKey] = exceptionsFromDefinition(\n patternsDefinition[2],\n hyphenChar\n );\n }\n if (userExceptions && userExceptions.length) {\n exceptions[cacheKey] = extend(\n exceptions[cacheKey],\n exceptionsFromDefinition(userExceptions, hyphenChar)\n );\n }\n caches[cacheKey] = extend({}, exceptions[cacheKey]);\n if (asyncMode && !(\"Promise\" in _global)) {\n throw new Error(\n \"Failed to create hyphenator: Could not find global Promise object, needed for hyphenator to work in async mode\"\n );\n }\n return function (text, options2) {\n options2 = options2 || {};\n var localDebug = keyOrDefault(options2, SETTING_NAME_DEBUG, debug),\n localHyphenChar = keyOrDefault(\n options2,\n SETTING_NAME_HYPH_CHAR,\n hyphenChar\n ),\n localMinWordLength =\n keyOrDefault(options2, SETTING_NAME_MIN_WORD_LENGTH, minWordLength) >>\n 0,\n localUserExceptions = keyOrDefault(\n options2,\n SETTING_NAME_EXCEPTIONS,\n SETTING_DEFAULT_EXCEPTIONS,\n validateArray\n ),\n cacheKey2 = localHyphenChar + localMinWordLength;\n if (!exceptions[cacheKey2] && patternsDefinition[2]) {\n exceptions[cacheKey2] = exceptionsFromDefinition(\n patternsDefinition[2],\n localHyphenChar\n );\n caches[cacheKey2] = extend(caches[cacheKey2], exceptions[cacheKey2]);\n }\n if (localUserExceptions && localUserExceptions.length) {\n exceptions[cacheKey2] = extend(\n exceptions[cacheKey2],\n exceptionsFromDefinition(localUserExceptions, localHyphenChar)\n );\n caches[cacheKey2] = extend(caches[cacheKey2], exceptions[cacheKey2]);\n }\n return start(\n text,\n levelsTable,\n patterns,\n caches[cacheKey2],\n localDebug,\n localHyphenChar,\n skipHTML,\n localMinWordLength,\n asyncMode\n );\n };\n }\n\n return createHyphenator;\n});\n","(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === \"object\" && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.hyphenationPatternsEnUs = factory();\n }\n})(this, function () {\n return [\n \"0004,004,001,003,005,0005,00005,000005,0002,002,0000005,0003,00003,00505,00034,0001,00055,00004,4,05,0055,04,42,03,02,2,404,3,044,01,0505,55,5,045,041,0033,000004,22,00504,5504,0042,1,21,41,402,405,4004,43,23,000054,303,3005,022,5004,000003,252,45,25,2004,000505,054,403,401,3002,0025,144,432,00054,34,12,234,0022,014,0304,012,143,503,0403,101,052,414,212,011,043,00002,0041,0024,05005,03003,00102,0404,04303,01004,0034,025,0044,00404,00025,0103,042,0205,412,104,54,344,433,5005,253,055,0402,3004,0043,204,505,454,0000004,00303,04004,552,201,4005,0255,52,444,14,44,02004,033,05004,00045,00013,0021,0405,00044,0054,50055,000303,00001,304,0204,11,301,232,122,00305,504,000043,0104,00052,000045,50004,0023,00033,00032,00202,5003,202,0401,0000505,214,102,032,000161,004101,00501,00301,0036,0052,00023,006101,006,00401,000521,0014,0063,00012,000501,000006,000604,000601,005001,005005,0010305,00006,003012,003005,0003011,0061,013,000021,000022,000105,00211,00062,00051,000112,006013,000011,0200306,1021,0050001,003003,2102,305,000015,01030005,000035,001011,00021,16330001,0234,030006,5020001,000001,00016,0031,021,21431,002305,0350014,0000012,000063,00101,106,105,00435,00063,0300061,00041,100306,003602,023,0503,0010011,10003,1005,30011,00031,0001001,0000061,0030003,30305,001201,0301,5000101,500101,00015,000401,000065,000016,0000402,0500002,000205,030201,500301,00014,5001,000002,00030011,01034,0300006,030213,00400304,050001,05003,000311,0634,00061,0006,00000604,00050013,00213,0030001,100003,000033,30002,00003632,0003004,050003,0000021,006303,0000006,00005005,30451,03001,00231,00056,00011,6,001001,00500001,03005,503005,0000010001,1002,003001,001065,300001,32011,32,0000003,0213001,0500053,021005,10001,0000011,0001041,0020016,100032,50011,0606,5002,3001,03002,0015001,0102,00003001,000000033,0000001,300101,300015,0101003,00000101,0100501,0101,0010033,00000362,000014,0005001,031\",\n '{\".\":{\"a\":{\"c\":{\"h\":0},\"d\":{\"d\":{\"e\":{\"r\":1}}},\"f\":{\"t\":2},\"l\":{\"t\":3},\"m\":{\"a\":{\"t\":4}},\"n\":{\"c\":4,\"g\":0,\"i\":{\"m\":5},\"t\":[{\"e\":3,\"i\":{\"s\":6}},0]},\"r\":{\"s\":4,\"t\":{\"i\":{\"e\":1},\"y\":1}},\"s\":{\"c\":3,\"p\":2,\"s\":2,\"t\":{\"e\":{\"r\":7}}},\"t\":{\"o\":{\"m\":6}},\"u\":{\"d\":2},\"v\":{\"i\":1},\"w\":{\"n\":0}},\"b\":{\"a\":{\"g\":1,\"n\":{\"a\":4},\"s\":{\"e\":0}},\"e\":{\"r\":[{\"a\":4},0],\"s\":{\"m\":3,\"t\":{\"o\":4}}},\"r\":{\"i\":8},\"u\":{\"t\":{\"t\":{\"i\":0}}}},\"c\":{\"a\":{\"m\":{\"p\":{\"e\":0}},\"n\":{\"c\":5},\"p\":{\"a\":{\"b\":6}},\"r\":{\"o\":{\"l\":5}},\"t\":1},\"e\":{\"l\":{\"a\":1}},\"h\":[{\"i\":{\"l\":{\"l\":{\"i\":7}}}},1],\"i\":[{\"t\":{\"r\":5}},9],\"o\":{\"e\":3,\"r\":[{\"n\":{\"e\":{\"r\":5}}},1],\"n\":{\"g\":{\"r\":5}}}},\"d\":{\"e\":{\"m\":{\"o\":{\"i\":1}},\"o\":3,\"r\":{\"a\":3,\"i\":[{\"v\":{\"a\":4}},3]},\"s\":{\"c\":0}},\"i\":{\"c\":{\"t\":{\"i\":{\"o\":10}}}},\"o\":{\"t\":1},\"u\":{\"c\":1,\"m\":{\"b\":6}},\"r\":{\"i\":{\"v\":67}}},\"e\":{\"a\":{\"r\":{\"t\":{\"h\":7}},\"s\":{\"i\":11}},\"b\":1,\"e\":{\"r\":0},\"g\":9,\"l\":{\"d\":4,\"e\":{\"m\":3}},\"n\":{\"a\":{\"m\":12},\"g\":3,\"s\":3},\"q\":{\"u\":{\"i\":{\"t\":13}}},\"r\":{\"r\":{\"i\":1}},\"s\":3,\"u\":[{\"l\":{\"e\":{\"r\":1}}},3],\"y\":{\"e\":5},\"t\":{\"h\":{\"y\":{\"l\":162}}},\"v\":[{\"e\":{\"r\":{\"s\":{\"i\":{\"b\":158}}}}},9]},\"f\":{\"e\":{\"s\":11},\"o\":{\"r\":{\"m\":{\"e\":{\"r\":5}}}}},\"g\":{\"a\":[{\"s\":{\"o\":{\"m\":163}}},9],\"e\":[{\"n\":{\"t\":14},\"o\":{\"g\":4,\"m\":{\"e\":1},\"t\":164}},9],\"i\":{\"a\":4,\"b\":1},\"o\":{\"r\":1}},\"h\":{\"a\":{\"n\":{\"d\":{\"i\":6},\"k\":5}},\"e\":[{\"r\":{\"o\":{\"i\":6,\"e\":3}},\"s\":11,\"t\":11,\"m\":{\"o\":165},\"p\":{\"a\":166}},9],\"i\":{\"b\":3,\"e\":{\"r\":3}},\"o\":{\"n\":{\"e\":{\"y\":5},\"o\":11},\"v\":5}},\"i\":{\"d\":{\"l\":1,\"o\":{\"l\":12}},\"m\":{\"m\":3,\"p\":{\"i\":{\"n\":4}}},\"n\":[{\"c\":{\"i\":3},\"e\":8,\"k\":9,\"s\":3,\"u\":{\"t\":167}},2],\"r\":{\"r\":4},\"s\":{\"i\":1}},\"j\":{\"u\":{\"r\":3}},\"l\":{\"a\":{\"c\":{\"y\":1},\"m\":1,\"t\":{\"e\":{\"r\":5},\"h\":6}},\"e\":[{\"g\":{\"e\":5},\"n\":0,\"p\":5,\"v\":15,\"i\":{\"c\":{\"e\":{\"s\":170}}}},9],\"i\":{\"g\":[{\"a\":5},1],\"n\":9,\"o\":3,\"t\":1}},\"m\":{\"a\":{\"g\":{\"a\":16},\"l\":{\"o\":5},\"n\":{\"a\":5},\"r\":{\"t\":{\"i\":5}}},\"e\":[{\"r\":{\"c\":11},\"t\":{\"e\":{\"r\":4},\"a\":{\"l\":{\"a\":0}}},\"g\":{\"a\":{\"l\":171}}},9],\"i\":{\"s\":[{\"t\":{\"i\":6},\"e\":{\"r\":{\"s\":173}}},15],\"m\":{\"i\":{\"c\":172}}},\"o\":{\"n\":{\"e\":11},\"r\":{\"o\":3}},\"u\":{\"t\":{\"a\":[{\"b\":6},4]}}},\"n\":{\"i\":{\"c\":1},\"e\":{\"o\":{\"f\":174}},\"o\":{\"e\":{\"t\":{\"h\":15}},\"n\":{\"e\":{\"m\":175}}}},\"o\":{\"d\":[{\"d\":5},9],\"f\":{\"t\":{\"e\":4}},\"r\":{\"a\":{\"t\":{\"o\":4}},\"c\":3,\"d\":2,\"t\":3},\"s\":[{\"t\":{\"l\":1}},3],\"t\":{\"h\":11},\"u\":{\"t\":11}},\"p\":{\"e\":{\"d\":{\"a\":{\"l\":5}},\"t\":{\"e\":4,\"i\":{\"t\":4}}},\"i\":{\"e\":1,\"o\":{\"n\":5},\"t\":9},\"r\":{\"e\":{\"m\":11,\"a\":{\"m\":15}}},\"o\":{\"l\":{\"y\":{\"s\":137}},\"s\":{\"t\":{\"a\":{\"m\":137}}}}},\"r\":{\"a\":{\"c\":1,\"n\":{\"t\":0},\"t\":{\"i\":{\"o\":{\"n\":{\"a\":7}}}},\"v\":{\"e\":{\"n\":{\"o\":176}}}},\"e\":{\"e\":[{\"c\":173},8],\"m\":{\"i\":{\"t\":4}},\"s\":[{\"t\":{\"a\":{\"t\":4}}},8]},\"i\":{\"g\":1,\"t\":{\"u\":5}},\"o\":{\"q\":1,\"s\":{\"t\":5},\"w\":{\"d\":5}},\"u\":{\"d\":1}},\"s\":{\"c\":{\"i\":{\"e\":11}},\"e\":{\"l\":{\"f\":6,\"l\":6},\"n\":9,\"r\":{\"i\":{\"e\":4}},\"m\":{\"i\":[{\"c\":0,\"d\":177,\"p\":36,\"r\":36,\"s\":178,\"v\":36},6]}},\"h\":9,\"i\":[{\"n\":{\"g\":17}},9],\"t\":[{\"a\":{\"b\":{\"l\":5}}},1],\"y\":9,\"p\":{\"h\":{\"i\":{\"n\":179}},\"i\":{\"n\":{\"o\":137}}}},\"t\":{\"a\":[{\"p\":{\"e\":{\"s\":{\"t\":{\"r\":180}}}}},1],\"e\":[{\"n\":{\"a\":{\"n\":5}},\"l\":{\"e\":{\"g\":{\"r\":3}}}},1],\"h\":9,\"i\":[{\"l\":0,\"m\":{\"o\":16},\"n\":{\"g\":17,\"k\":5}},9],\"o\":{\"n\":{\"a\":0},\"p\":[{\"i\":5,\"o\":{\"g\":170}},1],\"u\":{\"s\":5},\"q\":9},\"r\":{\"i\":{\"b\":{\"u\":{\"t\":6}}}}},\"u\":{\"n\":{\"a\":[{\"t\":{\"t\":144}},2],\"c\":{\"e\":3},\"d\":{\"e\":{\"r\":7}},\"e\":[{\"r\":{\"r\":181}},2],\"k\":4,\"o\":4,\"u\":3},\"p\":3,\"r\":{\"e\":11},\"s\":{\"a\":4}},\"v\":{\"e\":{\"n\":{\"d\":{\"e\":0}},\"r\":{\"a\":4}},\"i\":{\"c\":{\"a\":{\"r\":151}}}},\"w\":{\"i\":{\"l\":{\"i\":5}},\"e\":{\"b\":{\"l\":131}}},\"y\":{\"e\":1},\"k\":{\"i\":{\"l\":{\"n\":{\"i\":168}}},\"o\":{\"r\":{\"t\":{\"e\":169}}}}},\"a\":{\"b\":{\".\":18,\"a\":{\"l\":19,\"n\":19},\"e\":[{\"r\":{\"d\":4}},8],\"i\":{\"a\":5,\"t\":{\"a\":{\"b\":13}}},\"l\":{\"a\":{\"t\":4}},\"o\":{\"l\":{\"i\":{\"z\":20,\"c\":19}}},\"r\":[{\"o\":{\"g\":4}},18],\"u\":{\"l\":3}},\"c\":{\"a\":{\"r\":[{\"d\":4,\"o\":4},21],\"b\":{\"l\":24}},\"e\":{\"o\":{\"u\":19},\"r\":2},\"h\":{\"e\":{\"t\":19}},\"i\":[{\"e\":23,\"n\":2,\"o\":23},22],\"r\":{\"o\":{\"b\":4}},\"t\":{\"i\":{\"f\":5}},\"u\":{\"l\":3,\"m\":1}},\"d\":[{\"d\":{\"i\":{\"n\":1}},\"e\":{\"r\":{\".\":4}},\"i\":[{\"a\":23,\"c\":{\"a\":3},\"e\":{\"r\":0},\"o\":23,\"t\":23,\"u\":19},25],\"l\":{\"e\":1},\"o\":{\"w\":3},\"r\":{\"a\":{\"n\":4}},\"s\":{\"u\":1},\"u\":[{\"c\":23,\"m\":4},18]},24],\"e\":{\"r\":[{\"i\":{\"e\":17}},1]},\"f\":[{\"f\":[{\"i\":{\"s\":{\"h\":170}}},0]},24],\"g\":{\"a\":{\"b\":21,\"n\":0},\"e\":{\"l\":{\"l\":4},\"o\":0,\"u\":18},\"i\":2,\"l\":26,\"n\":2,\"o\":[{\"g\":27,\"n\":{\"i\":3}},24],\"u\":{\"e\":{\"r\":19},\"l\":4},\"y\":21},\"h\":{\"a\":23,\"e\":23,\"l\":1,\"o\":23},\"i\":[{\"a\":19,\"c\":{\".\":23},\"l\":{\"y\":4},\"n\":[{\"i\":{\"n\":5},\"o\":5},28],\"t\":{\"e\":{\"n\":5}}},9],\"j\":29,\"k\":{\"e\":{\"n\":2}},\"l\":{\"a\":{\"b\":4,\"d\":3,\"r\":21},\"d\":{\"i\":18},\"e\":[{\"n\":{\"d\":3,\"t\":{\"i\":21}},\"o\":30},25],\"i\":[{\"a\":{\".\":1},\"e\":0},2],\"l\":{\"e\":{\"v\":4},\"i\":{\"c\":18}},\"m\":18,\"o\":{\"g\":{\".\":19}},\"y\":{\".\":21,\"s\":[{\"t\":31},18],\"t\":32,\"z\":27}},\"m\":{\"a\":[{\"b\":4,\"g\":3,\"r\":{\"a\":5},\"s\":{\"c\":4},\"t\":{\"i\":{\"s\":21},\"o\":33}},18],\"e\":{\"r\":{\"a\":4},\"n\":{\"t\":{\"a\":{\"b\":182}}}},\"i\":{\"c\":3,\"f\":4,\"l\":{\"y\":4},\"n\":[{\"o\":0},2]},\"o\":[{\"n\":19,\"r\":{\"i\":6}},24],\"p\":{\"e\":{\"n\":5}}},\"n\":[{\"a\":{\"g\":{\"e\":3},\"l\":{\"y\":[{\"s\":183},27]},\"r\":[{\"c\":3,\"i\":17},23],\"t\":{\"i\":23}},\"d\":[{\"e\":{\"s\":17},\"i\":{\"s\":3},\"l\":2,\"o\":{\"w\":1}},18],\"e\":{\"e\":19,\"n\":23,\"s\":{\"t\":{\".\":4}},\"u\":23},\"g\":[{\"i\":{\"e\":5},\"l\":2},25],\"i\":{\"c\":34,\"e\":{\"s\":23},\"f\":35,\"m\":{\"e\":1,\"i\":19},\"n\":{\"e\":19},\"o\":3,\"p\":23,\"s\":{\"h\":3},\"t\":3,\"u\":23},\"k\":{\"l\":{\"i\":1}},\"n\":{\"i\":{\"z\":32}},\"o\":[{\"t\":[{\"h\":7},4],\"a\":{\"c\":148}},0],\"s\":{\"a\":9,\"c\":{\"o\":1},\"n\":1,\"p\":[{\"o\":11},9],\"t\":1,\"u\":{\"r\":1},\"g\":{\"r\":5},\"v\":11},\"t\":{\"a\":{\"l\":36},\"i\":{\"e\":1,\"d\":137,\"n\":184,\"r\":{\"e\":137}},\"o\":18,\"r\":9,\"w\":1},\"u\":{\"a\":3,\"l\":3,\"r\":19}},24],\"o\":18,\"p\":{\"a\":{\"r\":17,\"t\":4},\"e\":{\"r\":{\"o\":4},\"a\":{\"b\":{\"l\":{\"e\":132}}}},\"h\":{\"e\":{\"r\":23},\"i\":18},\"i\":{\"l\":{\"l\":{\"a\":[{\"r\":4},21]}},\"n\":3,\"t\":{\"a\":3,\"u\":23}},\"l\":24,\"o\":{\"c\":6,\"l\":{\"a\":4},\"r\":{\"i\":6},\"s\":{\"t\":12}},\"s\":{\"e\":{\"s\":5}},\"u\":23},\"q\":{\"u\":{\"e\":6}},\"r\":[{\"a\":{\"c\":{\"t\":3},\"d\":{\"e\":19,\"i\":{\"s\":4}},\"l\":3,\"m\":{\"e\":{\"t\":{\"e\":19}}},\"n\":{\"g\":17},\"p\":11,\"t\":[{\"i\":{\"o\":19,\"v\":4}},1],\"u\":19,\"v\":38,\"w\":17},\"b\":{\"a\":{\"l\":36}},\"c\":{\"h\":{\"a\":{\"n\":1},\"e\":{\"t\":185}}},\"d\":{\"i\":{\"n\":{\"e\":4}},\"r\":1},\"e\":{\"a\":{\"s\":4},\"e\":23,\"n\":{\"t\":3},\"s\":{\"s\":19}},\"f\":{\"i\":1,\"l\":1},\"i\":[{\"a\":{\"l\":4,\"n\":3},\"e\":{\"t\":23},\"m\":1,\"n\":{\"a\":{\"t\":4}},\"o\":3,\"z\":9},2],\"m\":{\"i\":9},\"o\":{\"d\":20,\"n\":{\"i\":19},\"o\":23},\"p\":9,\"q\":3,\"r\":{\"e\":17,\"a\":{\"n\":{\"g\":{\"e\":9}}}},\"s\":{\"a\":1,\"h\":9}},37],\"s\":{\".\":18,\"a\":{\"b\":1,\"n\":{\"t\":3}},\"h\":{\"i\":17},\"i\":{\"a\":{\".\":19},\"b\":23,\"c\":23,\"t\":39},\"k\":{\"i\":11},\"l\":1,\"o\":{\"c\":21},\"p\":{\"h\":4},\"s\":{\"h\":1},\"t\":{\"e\":{\"n\":3},\"r\":2},\"u\":{\"r\":{\"a\":6}},\"y\":{\"m\":{\"p\":{\"t\":{\"o\":{\"t\":4}}}}}},\"t\":{\"a\":[{\"b\":{\"l\":3},\"c\":4,\"l\":{\"o\":3},\"p\":4},24],\"e\":{\"c\":[{\"h\":4},5],\"g\":{\"o\":3},\"n\":{\".\":3},\"r\":{\"a\":3,\"n\":[{\"a\":19},6]},\"s\":{\"t\":3},\"v\":4},\"h\":[{\"e\":{\"m\":5,\"n\":19,\"r\":{\"o\":{\"s\":186}}},\"o\":[{\"m\":5},1]},18],\"i\":{\".\":18,\"a\":19,\"b\":20,\"c\":2,\"f\":3,\"o\":{\"n\":{\"a\":{\"r\":7}}},\"t\":{\"u\":3}},\"o\":{\"g\":21,\"m\":[{\"i\":{\"z\":4}},24],\"p\":21,\"s\":21},\"r\":[{\"o\":{\"p\":4}},29],\"s\":{\"k\":1},\"t\":{\"a\":{\"g\":1},\"e\":[{\"s\":{\".\":170}},4],\"h\":1},\"u\":[{\"a\":4,\"e\":4,\"l\":3,\"r\":{\"a\":3}},24],\"y\":24},\"u\":{\"b\":1,\"g\":{\"h\":[{\"t\":{\"l\":17}},12],\"u\":3},\"l\":[{\"i\":{\"f\":13}},40],\"n\":{\"d\":5},\"r\":3,\"s\":{\"i\":{\"b\":4}},\"t\":{\"e\":{\"n\":5},\"h\":2}},\"v\":{\"a\":[{\"g\":3,\"n\":19},24],\"e\":{\"n\":{\"o\":0},\"r\":{\"a\":3,\"n\":4,\"y\":4}},\"i\":[{\"e\":{\"r\":0},\"g\":3,\"o\":{\"u\":3}},2],\"o\":{\"c\":4,\"r\":29}},\"w\":{\"a\":{\"y\":27},\"i\":3,\"l\":{\"y\":1},\"s\":0},\"x\":{\"i\":{\"c\":1,\"d\":1}},\"y\":{\"a\":{\"l\":4},\"e\":0,\"s\":0},\"z\":{\"i\":{\"e\":{\"r\":0}},\"z\":{\"i\":5}}},\"b\":{\"a\":{\".\":32,\"d\":{\"g\":{\"e\":{\"r\":5}}},\"g\":{\"e\":1},\"l\":{\"a\":15},\"n\":{\"d\":{\"a\":{\"g\":5}},\"e\":0,\"i\":11},\"r\":{\"b\":{\"i\":7},\"i\":{\"a\":17},\"o\":{\"n\":{\"i\":{\"e\":187}}}},\"s\":{\"s\":{\"i\":0}},\"t\":[{\"h\":{\"y\":2}},41],\"z\":1,\"c\":{\"k\":{\"e\":{\"r\":{\".\":84}}}}},\"b\":[{\"e\":[{\"r\":23},24],\"i\":{\"n\":{\"a\":0},\"t\":0}},42],\"d\":43,\"e\":{\".\":18,\"a\":{\"k\":17,\"t\":12},\"d\":[{\"a\":3,\"e\":3,\"i\":3},44],\"g\":{\"i\":3,\"u\":4},\"l\":[{\"i\":2,\"o\":3},41],\"m\":45,\"n\":{\"i\":{\"g\":4},\"u\":4},\"s\":[{\"p\":3,\"t\":{\"r\":4}},46],\"t\":[{\"i\":{\"z\":5},\"r\":4,\"w\":3},27],\"w\":3,\"y\":{\"o\":4},\"v\":{\"i\":{\"e\":9}}},\"f\":25,\"h\":47,\"i\":{\"b\":9,\"d\":[{\"i\":{\"f\":167}},1],\"e\":[{\"n\":4,\"r\":1},27],\"f\":48,\"l\":[{\"i\":{\"z\":3},\"l\":{\"a\":{\"b\":8}}},41],\"n\":{\"a\":{\"r\":49},\"d\":0,\"e\":{\"t\":4}},\"o\":{\"g\":{\"r\":3},\"u\":4,\"m\":5,\"r\":{\"b\":2,\"h\":15}},\"t\":[{\"i\":{\"o\":50,\"v\":{\"e\":188}},\"r\":3,\"u\":{\"a\":51},\"z\":19},9]},\"j\":29,\"k\":1,\"l\":[{\"a\":{\"t\":{\"h\":7},\"n\":{\"d\":189}},\"e\":{\".\":21,\"n\":17,\"s\":{\"p\":32}},\"i\":{\"s\":23,\"n\":{\"d\":189}},\"o\":[{\"n\":{\"d\":190}},21],\"u\":{\"n\":{\"t\":17}}},52],\"m\":43,\"n\":[{\"e\":{\"g\":5}},47],\"o\":{\"d\":[{\"i\":11},27],\"e\":1,\"l\":{\"i\":{\"c\":11}},\"m\":{\"b\":{\"i\":0}},\"n\":{\"a\":[{\"t\":5},0]},\"o\":27,\"r\":{\".\":32,\"a\":43,\"d\":5,\"e\":32,\"i\":32,\"n\":{\"o\":191}},\"s\":53,\"t\":{\"a\":19,\"h\":6,\"o\":1,\"u\":{\"l\":192}},\"u\":{\"n\":{\"d\":54}}},\"p\":18,\"r\":{\"i\":{\"t\":18},\"o\":{\"t\":{\"h\":54}},\"u\":{\"s\":{\"q\":17}}},\"s\":[{\"o\":{\"r\":17}},55],\"t\":[{\"l\":1,\"o\":21,\"r\":23},25],\"u\":{\"f\":{\"f\":{\"e\":{\"r\":0}}},\"g\":{\"a\":1},\"l\":{\"i\":3},\"m\":{\"i\":17},\"n\":[{\"t\":{\"i\":17}},1],\"r\":{\"e\":3},\"s\":{\"i\":{\"e\":[{\"r\":193,\"s\":193},5]},\"s\":{\"e\":17,\"i\":{\"n\":{\"g\":17}}},\"t\":32},\"t\":{\"a\":18,\"i\":{\"o\":27},\"o\":19,\"e\":{\"d\":{\".\":8}},\"t\":{\"e\":{\"d\":0}}}},\"v\":29,\"w\":56,\"y\":{\".\":32,\"s\":0}},\"c\":{\"a\":[{\"b\":{\"i\":{\"n\":11},\"l\":2},\"c\":{\"h\":17},\"d\":{\"e\":{\"n\":4,\"m\":194}},\"g\":46,\"h\":57,\"l\":{\"a\":{\"t\":3},\"l\":{\"a\":0,\"i\":{\"n\":6}},\"o\":18},\"n\":{\"d\":5,\"e\":0,\"i\":{\"c\":0,\"s\":5,\"z\":11},\"t\":{\"y\":0},\"y\":17},\"p\":{\"e\":{\"r\":4}},\"r\":{\"o\":{\"m\":5}},\"s\":{\"t\":{\"e\":{\"r\":6},\"i\":{\"g\":5}},\"y\":18},\"t\":{\"h\":1,\"i\":{\"v\":18},\"a\":{\"s\":195}},\"v\":{\"a\":{\"l\":5}}},41],\"c\":[{\"h\":{\"a\":6},\"i\":{\"a\":0},\"o\":{\"m\":{\"p\":{\"a\":10}},\"n\":17,\"u\":{\"t\":12}}},23],\"e\":{\".\":25,\"d\":{\".\":18,\"e\":{\"n\":18}},\"i\":27,\"l\":{\".\":32,\"l\":27},\"n\":[{\"c\":27,\"e\":58,\"i\":18,\"t\":27},41],\"p\":27,\"r\":{\"a\":{\"m\":4}},\"s\":{\"a\":18,\"s\":{\"i\":[{\"b\":59},27]},\"t\":5},\"t\":[{\"a\":60},0],\"w\":0},\"h\":[{\".\":18,\"a\":{\"b\":61,\"n\":{\"i\":{\"c\":32,\"s\":20}}},\"e\":[{\"a\":{\"p\":54},\"d\":18,\"l\":{\"o\":5},\"m\":{\"i\":27},\"n\":{\"e\":4},\"r\":{\".\":3,\"s\":3}},8],\"i\":{\"n\":[{\"e\":{\".\":32,\"s\":{\"s\":4}},\"i\":32},62],\"o\":32,\"t\":27,\"z\":8,\"e\":{\"v\":{\"o\":6}}},\"o\":63,\"t\":{\"i\":1},\"s\":{\".\":18,\"h\":{\"u\":11}}},25],\"i\":[{\"a\":[{\"b\":64,\"r\":5},27],\"c\":4,\"e\":{\"r\":18},\"f\":{\"i\":{\"c\":{\".\":32}}},\"i\":18,\"l\":{\"a\":1,\"i\":27},\"m\":25,\"n\":[{\"a\":[{\"t\":27},21],\"e\":{\"m\":11},\"g\":[{\".\":19},29],\"o\":32,\"q\":8},25],\"o\":{\"n\":17},\"p\":{\"e\":18,\"h\":3,\"i\":{\"c\":18}},\"s\":{\"t\":{\"a\":18,\"i\":18}},\"t\":[{\"i\":{\"z\":11}},42],\"z\":32,\"g\":{\"a\":{\"r\":152}}},41],\"k\":[{\"i\":3},2],\"l\":[{\"a\":{\"r\":[{\"a\":{\"t\":{\"i\":{\"o\":19}}},\"e\":32},18]},\"e\":{\"m\":0,\"a\":{\"r\":0}},\"i\":{\"c\":18,\"m\":17},\"y\":0},65],\"n\":19,\"o\":[{\"a\":{\"g\":4},\"e\":8,\"g\":[{\"r\":1},25],\"i\":[{\"n\":{\"c\":3}},0],\"l\":{\"i\":5,\"o\":[{\"r\":11},32]},\"m\":{\"e\":{\"r\":5}},\"n\":{\"a\":0,\"e\":21,\"g\":11,\"t\":5},\"p\":{\"a\":3,\"i\":{\"c\":11},\"l\":1,\"h\":{\"o\":{\"n\":196}}},\"r\":{\"b\":18,\"o\":{\"n\":12}},\"s\":{\"e\":0},\"v\":[{\"e\":17},15],\"w\":{\"a\":5},\"z\":{\"e\":5,\"i\":4},\"u\":{\"s\":{\"t\":{\"i\":84}}}},41],\"q\":29,\"r\":{\"a\":{\"s\":{\"t\":6},\"t\":{\".\":32,\"i\":{\"c\":32}}},\"e\":{\"a\":{\"t\":11},\"d\":32,\"t\":{\"a\":47},\"v\":0},\"i\":[{\"f\":5,\"n\":21,\"s\":17,\"t\":{\"i\":[{\"e\":11},32]}},8],\"o\":{\"p\":{\"l\":0,\"o\":6},\"s\":{\"e\":17},\"c\":{\"o\":{\"d\":197}},\"e\":{\"c\":{\"o\":148}}},\"u\":{\"d\":0}},\"s\":66,\"t\":[{\"a\":{\"b\":0,\"n\":{\"g\":4,\"t\":19}},\"e\":[{\"r\":23},24],\"i\":{\"c\":{\"u\":21},\"m\":{\"i\":12}},\"u\":{\"r\":0},\"w\":21,\"r\":{\"o\":{\"m\":{\"e\":{\"c\":198}}}}},42],\"u\":{\"d\":5,\"f\":21,\"i\":[{\"t\":{\"y\":4}},21],\"l\":{\"i\":32,\"t\":{\"i\":{\"s\":0},\"u\":27}},\"m\":{\"a\":9,\"e\":23,\"i\":1},\"n\":27,\"p\":{\"i\":3,\"y\":4},\"r\":{\"a\":{\"b\":67,\"n\":{\"c\":{\"e\":199}}},\"i\":{\"a\":4}},\"s\":[{\"s\":{\"i\":17}},41],\"t\":[{\"i\":{\"e\":1,\"v\":56},\"r\":18},68]},\"y\":41,\"z\":{\"e\":0}},\"d\":{\"a\":[{\".\":32,\"b\":70,\"c\":{\"h\":17},\"f\":18,\"g\":25,\"m\":71,\"n\":{\"g\":11},\"r\":{\"d\":6,\"k\":6,\"y\":18},\"t\":[{\"i\":{\"v\":18},\"o\":18,\"a\":{\"b\":137}},27],\"v\":[{\"e\":5},53],\"y\":32,\"l\":{\"o\":{\"n\":{\"e\":48}}}},69],\"b\":29,\"c\":19,\"d\":[{\"a\":{\"b\":20},\"i\":{\"b\":94}},72],\"e\":{\".\":25,\"a\":{\"f\":6,\"l\":{\"s\":{\".\":1}}},\"b\":{\"i\":{\"t\":5},\"o\":{\"n\":1}},\"c\":{\"a\":{\"n\":36},\"i\":{\"l\":1},\"o\":{\"m\":4},\"l\":{\"a\":{\"r\":200},\"i\":{\"n\":{\"a\":64}}}},\"d\":42,\"e\":{\".\":18},\"i\":{\"f\":4},\"l\":{\"i\":{\"e\":17,\"q\":16},\"o\":4},\"m\":[{\".\":32,\"i\":{\"c\":[{\".\":5},27],\"l\":4},\"o\":{\"n\":{\"s\":1},\"r\":7,\"s\":9}},21],\"n\":[{\"a\":{\"r\":1},\"o\":3,\"t\":{\"i\":{\"f\":7}},\"u\":3},41],\"p\":[{\"a\":3,\"i\":17,\"u\":9},2],\"q\":23,\"r\":{\"h\":21,\"m\":32,\"n\":{\"i\":{\"z\":6}},\"s\":5},\"s\":[{\".\":24,\"c\":2,\"o\":64,\"t\":{\"i\":11,\"r\":3},\"u\":1,\"i\":{\"c\":11}},8],\"t\":[{\"o\":9,\"i\":{\"c\":9}},2],\"v\":[{\"i\":{\"l\":11}},2],\"y\":18,\"f\":{\"i\":{\"n\":{\"i\":{\"t\":{\"i\":201}}}}}},\"f\":43,\"g\":{\"a\":21,\"e\":{\"t\":73},\"i\":2,\"y\":24},\"h\":74,\"i\":{\".\":32,\"a\":[{\"b\":5},75],\"c\":{\"a\":{\"m\":1,\"i\":{\"d\":15}},\"e\":21,\"t\":27},\"d\":27,\"e\":{\"n\":76},\"f\":[{\"f\":{\"r\":{\"a\":5}}},29],\"g\":{\"e\":3},\"l\":{\"a\":{\"t\":{\"o\":1}}},\"n\":[{\"a\":41,\"e\":{\".\":27},\"i\":[{\"z\":4},32]},29],\"o\":[{\"g\":5},41],\"p\":{\"l\":1},\"r\":[{\"e\":[{\"n\":9,\"r\":9},2],\"t\":{\"i\":6}},8],\"s\":[{\"i\":32,\"t\":77},15],\"t\":{\"i\":24},\"v\":78,\"m\":{\"e\":{\"t\":{\"h\":{\"y\":141}}}}},\"j\":29,\"k\":79,\"l\":{\"a\":56,\"e\":{\".\":27,\"d\":27,\"s\":{\".\":27,\"s\":18},\"a\":{\"d\":42}},\"o\":48,\"u\":56,\"y\":25,\"i\":{\"e\":202}},\"m\":29,\"n\":80,\"o\":[{\".\":27,\"d\":{\"e\":4},\"e\":32,\"f\":57,\"g\":21,\"l\":{\"a\":1,\"i\":17,\"o\":{\"r\":4}},\"m\":{\"i\":{\"z\":5}},\"n\":{\"a\":{\"t\":3},\"i\":17},\"o\":{\"d\":11},\"p\":{\"p\":0},\"r\":21,\"s\":27,\"u\":{\"t\":56},\"v\":1,\"x\":27,\"w\":{\"o\":{\"r\":{\"d\":203}}}},41],\"p\":29,\"r\":[{\"a\":{\"g\":{\"o\":{\"n\":6}},\"i\":18},\"e\":[{\"a\":{\"r\":6},\"n\":[{\"a\":{\"l\":204}},32]},0],\"i\":{\"b\":0,\"l\":17,\"f\":{\"t\":{\"a\":189}},\"p\":{\"l\":{\"e\":{\"g\":205}}}},\"o\":{\"p\":0,\"w\":18,\"m\":{\"e\":{\"d\":206}}},\"u\":{\"p\":{\"l\":{\"i\":32}}},\"y\":18},41],\"s\":[{\"p\":1,\"w\":21,\"y\":21},81],\"t\":{\"h\":24,\"a\":{\"b\":23}},\"u\":[{\"a\":[{\"l\":{\".\":9}},82],\"c\":[{\"a\":29,\"e\":{\"r\":5},\"t\":{\".\":18,\"s\":18}},9],\"e\":{\"l\":4},\"g\":1,\"l\":{\"e\":23},\"m\":{\"b\":{\"e\":0}},\"n\":1,\"p\":[{\"e\":1},18],\"o\":{\"p\":{\"o\":{\"l\":207}}}},41],\"v\":29,\"w\":29,\"y\":[{\"n\":32,\"s\":{\"e\":1,\"p\":5}},24]},\"e\":{\"a\":{\"b\":72,\"c\":{\"t\":23},\"d\":[{\"i\":{\"e\":5}},15],\"g\":{\"e\":[{\"r\":4},1]},\"l\":[{\"e\":{\"r\":5},\"o\":{\"u\":11}},1],\"m\":{\"e\":{\"r\":11}},\"n\":{\"d\":19,\"i\":{\"e\":{\"s\":111}}},\"r\":{\"a\":11,\"c\":0,\"e\":{\"s\":5},\"i\":{\"c\":0,\"l\":0},\"k\":5,\"t\":[{\"e\":12},8]},\"s\":{\"p\":4,\"s\":23,\"t\":12},\"t\":[{\"e\":{\"n\":5},\"h\":{\"i\":12},\"i\":{\"f\":19},\"u\":83},9],\"v\":[{\"e\":{\"n\":11},\"i\":5,\"o\":5},9]},\"b\":[{\"e\":{\"l\":{\".\":21,\"s\":21},\"n\":21},\"i\":{\"t\":21},\"r\":23},42],\"c\":{\"a\":{\"d\":21,\"n\":{\"c\":6}},\"c\":{\"a\":6},\"e\":[{\"s\":{\"s\":{\"a\":4}}},29],\"i\":[{\"b\":21,\"f\":{\"i\":{\"c\":{\"a\":{\"t\":4}},\"e\":4},\"y\":4},\"m\":3,\"t\":[{\"e\":19},0]},9],\"l\":{\"a\":{\"m\":21},\"u\":{\"s\":21}},\"o\":{\"l\":24,\"m\":{\"m\":21,\"p\":{\"e\":21}},\"n\":{\"c\":21},\"r\":[{\"a\":3,\"o\":5},24]},\"r\":[{\"e\":{\"m\":21}},29],\"t\":{\"a\":{\"n\":1},\"e\":1},\"u\":[{\"l\":[{\"a\":3},21]},29],\"h\":{\"a\":{\"s\":23}}},\"d\":{\"a\":37,\"d\":61,\"e\":{\"r\":34,\"s\":0},\"i\":[{\"a\":23,\"b\":3,\"c\":{\"a\":3},\"m\":3,\"t\":2,\"z\":5},18],\"o\":[{\"l\":21,\"n\":84},18],\"r\":{\"i\":21},\"u\":{\"l\":[{\"o\":4,\"i\":{\"n\":{\"g\":2}}},21]},\"g\":{\"l\":15}},\"e\":{\"c\":9,\"d\":{\"i\":11},\"f\":9,\"l\":{\"i\":11,\"y\":1},\"m\":9,\"n\":{\"a\":1},\"p\":85,\"s\":[{\"t\":17},86],\"t\":{\"y\":1},\"x\":19},\"f\":[{\"e\":{\"r\":{\"e\":83}},\"f\":41,\"i\":{\"c\":[{\"i\":32},21],\"l\":17,\"n\":{\"e\":23,\"i\":{\"t\":{\"e\":20}}},\"t\":27},\"o\":{\"r\":{\"e\":{\"s\":6}}},\"u\":{\"s\":{\"e\":{\".\":21}}}},29],\"g\":{\"a\":{\"l\":18},\"e\":{\"r\":17},\"i\":{\"b\":4,\"c\":1,\"n\":{\"g\":4},\"t\":87},\"n\":4,\"o\":{\".\":21,\"s\":21},\"u\":{\"l\":2,\"r\":19},\"y\":32},\"h\":[{\"e\":{\"r\":17}},72],\"i\":[{\"c\":19,\"d\":4,\"g\":[{\"l\":4},8],\"m\":{\"b\":23},\"n\":{\"f\":23,\"g\":29,\"s\":{\"t\":19}},\"r\":{\"d\":0},\"t\":{\"e\":11,\"h\":3,\"y\":19}},9],\"j\":[{\"u\":{\"d\":[{\"i\":4},21]}},29],\"k\":{\"i\":{\"n\":0},\"l\":{\"a\":1}},\"l\":{\"a\":[{\".\":21,\"c\":21,\"n\":{\"d\":17},\"t\":{\"i\":{\"v\":4}},\"w\":21,\"x\":{\"a\":36}},29],\"e\":{\"a\":23,\"b\":{\"r\":{\"a\":4}},\"c\":32,\"d\":21,\"g\":{\"a\":3},\"n\":19,\"r\":34,\"s\":29},\"f\":9,\"i\":[{\"b\":{\"e\":23},\"c\":{\".\":33,\"a\":3},\"e\":{\"r\":23},\"g\":{\"i\":{\"b\":4}},\"m\":19,\"n\":{\"g\":83},\"o\":23,\"s\":[{\"h\":4},24],\"v\":88,\"t\":{\"i\":{\"s\":208}}},9],\"l\":{\"a\":[{\"b\":1},18],\"o\":17},\"o\":{\"c\":19,\"g\":4,\"p\":{\".\":3},\"a\":29},\"s\":{\"h\":9},\"t\":{\"a\":1},\"u\":{\"d\":19,\"g\":4}},\"m\":{\"a\":{\"c\":21,\"g\":21,\"n\":[{\"a\":4},19]},\"b\":4,\"e\":[{\"l\":24,\"t\":21},29],\"i\":{\"c\":{\"a\":3},\"e\":0,\"g\":{\"r\":{\"a\":4}},\"n\":[{\"e\":4,\"i\":35},89],\"s\":[{\"h\":4,\"s\":19},21],\"z\":3},\"n\":{\"i\":{\"z\":32}},\"o\":{\"g\":0,\"n\":{\"i\":{\"o\":7}}},\"p\":{\"i\":3},\"u\":{\"l\":[{\"a\":4},21],\"n\":11},\"y\":23},\"n\":{\"a\":{\"m\":{\"o\":4},\"n\":{\"t\":21}},\"c\":{\"h\":{\"e\":{\"r\":17}}},\"d\":{\"i\":{\"c\":3,\"x\":2}},\"e\":{\"a\":19,\"e\":19,\"m\":3,\"r\":{\"o\":4},\"s\":{\"i\":4,\"t\":4},\"t\":{\"r\":3},\"w\":23},\"i\":{\"c\":{\"s\":4},\"e\":19,\"l\":19,\"o\":23,\"s\":{\"h\":3},\"t\":3,\"u\":19,\"z\":32},\"n\":18,\"o\":[{\"g\":0,\"s\":21,\"v\":3},18],\"s\":{\"w\":1},\"t\":{\"a\":{\"g\":{\"e\":5}},\"h\":{\"e\":{\"s\":18}}},\"u\":{\"a\":3,\"f\":4},\"y\":{\".\":23},\"z\":61},\"o\":{\"f\":19,\"g\":[{\"r\":{\"a\":{\"p\":3}}},9],\"i\":90,\"l\":23,\"p\":{\"a\":{\"r\":11}},\"r\":[{\"e\":3,\"o\":{\"l\":4}},29],\"s\":0,\"t\":[{\"o\":1},21],\"u\":{\"t\":19},\"w\":19},\"p\":{\"a\":[{\"i\":23,\"n\":{\"c\":4}},24],\"e\":{\"l\":19,\"n\":{\"t\":23},\"t\":{\"i\":{\"t\":{\"i\":{\"o\":4}}}}},\"h\":{\"e\":17},\"l\":{\"i\":21},\"o\":29,\"r\":{\"e\":{\"c\":[{\"a\":4},21],\"d\":21,\"h\":3},\"o\":[{\"b\":21},23]},\"s\":{\"h\":1},\"t\":{\"i\":{\"b\":13}},\"u\":{\"t\":[{\"a\":4},21]},\"i\":{\"n\":{\"e\":{\"p\":{\"h\":209}}}}},\"q\":[{\"u\":{\"i\":{\"l\":12,\"s\":91}}},29],\"r\":{\"a\":[{\"b\":0,\"n\":{\"d\":18},\"r\":3,\"t\":{\"i\":{\".\":18}}},2],\"b\":[{\"l\":1},25],\"c\":{\"h\":[{\"e\":1},3]},\"e\":{\".\":25,\"a\":{\"l\":23},\"c\":{\"o\":5},\"i\":{\"n\":11},\"l\":{\".\":4},\"m\":{\"o\":3},\"n\":{\"a\":4,\"c\":{\"e\":4},\"e\":18,\"t\":3},\"q\":0,\"s\":{\"s\":4,\"t\":3},\"t\":17},\"h\":2,\"i\":[{\"a\":[{\"n\":{\".\":210}},92],\"c\":{\"k\":32},\"e\":{\"n\":23,\"r\":0},\"n\":{\"e\":3},\"o\":29,\"t\":18,\"u\":1,\"v\":[{\"a\":21},0]},2],\"m\":93,\"n\":{\"i\":{\"s\":1,\"t\":18,\"z\":32},\"o\":3},\"o\":[{\"b\":4,\"c\":19,\"r\":0,\"u\":2},25],\"s\":[{\"e\":{\"t\":3}},2],\"t\":{\"e\":{\"r\":11},\"l\":18,\"w\":3},\"u\":[{\"t\":0},18],\"w\":{\"a\":{\"u\":32}}},\"s\":{\"a\":[{\"g\":{\"e\":{\".\":21,\"s\":21}}},72],\"c\":[{\"a\":[{\"n\":4},24],\"r\":23,\"u\":4},9],\"e\":[{\"c\":[{\"r\":4},24],\"n\":{\"c\":4},\"r\":{\"t\":{\".\":21,\"s\":21},\"v\":{\"a\":21}}},74],\"h\":[{\"a\":23,\"e\":{\"n\":5}},18],\"i\":[{\"c\":24,\"d\":[{\"e\":{\"n\":4}},24],\"g\":{\"n\":{\"a\":4}},\"m\":94,\"n\":95,\"s\":{\"t\":{\"e\":17}},\"u\":0},29],\"k\":{\"i\":{\"n\":19}},\"m\":{\"i\":1},\"o\":{\"l\":[{\"u\":3},24],\"n\":[{\"a\":4},24]},\"p\":[{\"e\":{\"r\":3},\"i\":{\"r\":{\"a\":4}},\"r\":{\"e\":1},\"a\":{\"c\":{\"i\":211}}},29],\"s\":[{\"i\":{\"b\":96}},25],\"t\":{\"a\":{\"n\":36},\"i\":{\"g\":3,\"m\":4},\"o\":[{\"n\":23},44],\"r\":[{\"o\":19,\"u\":{\"c\":10}},25]},\"u\":{\"r\":[{\"r\":4},24]},\"w\":1},\"t\":{\"a\":{\"b\":0},\"e\":{\"n\":{\"d\":17},\"o\":23},\"h\":{\"o\":{\"d\":54},\"y\":{\"l\":{\"e\":{\"n\":{\"e\":162}}}}},\"i\":{\"c\":2,\"d\":{\"e\":19},\"n\":[{\"o\":0},17],\"r\":19,\"t\":{\"i\":{\"o\":19,\"v\":4}}},\"n\":18,\"o\":{\"n\":{\"a\":4}},\"r\":{\"a\":23,\"e\":23,\"i\":{\"c\":3,\"f\":4},\"o\":{\"g\":3,\"s\":4}},\"u\":{\"a\":3},\"y\":{\"m\":4},\"z\":4},\"u\":[{\"n\":19,\"p\":23,\"r\":{\"o\":3},\"s\":0,\"t\":{\"e\":17,\"i\":{\"l\":6},\"r\":4},\"c\":{\"l\":{\"i\":{\"d\":212}}}},18],\"v\":{\"a\":{\"p\":97,\"s\":[{\"t\":4},24]},\"e\":{\"a\":19,\"l\":{\"l\":3,\"o\":12},\"n\":{\"g\":19,\"i\":17},\"r\":[{\"b\":19},2]},\"i\":[{\"d\":3,\"l\":0,\"n\":21,\"v\":0},29],\"o\":{\"c\":19},\"u\":19},\"w\":{\"a\":[{\"g\":21},29],\"e\":{\"e\":19},\"h\":23,\"i\":{\"l\":6,\"n\":{\"g\":3},\"t\":23}},\"x\":{\"p\":41},\"y\":{\"c\":32,\"e\":{\".\":32},\"s\":0}},\"f\":{\"a\":[{\"b\":{\"l\":3,\"r\":11},\"c\":{\"e\":1},\"g\":18,\"i\":{\"n\":17},\"l\":{\"l\":{\"e\":6}},\"m\":{\"a\":26,\"i\":{\"s\":5}},\"r\":[{\"t\":{\"h\":5}},32],\"t\":{\"a\":3,\"h\":{\"e\":3},\"o\":18},\"u\":{\"l\":{\"t\":7}}},41],\"b\":56,\"d\":18,\"e\":{\".\":18,\"a\":{\"s\":17,\"t\":{\"h\":54}},\"b\":[{\"r\":{\"u\":{\"a\":15}}},1],\"c\":{\"a\":18,\"t\":32},\"d\":25,\"l\":{\"i\":3},\"m\":{\"o\":1},\"n\":{\"d\":[{\"e\":6},8]},\"r\":[{\"r\":32,\"m\":{\"i\":{\"o\":213}}},15],\"v\":0},\"f\":[{\"e\":{\"s\":21},\"i\":{\"e\":21,\"n\":{\".\":19},\"s\":94},\"l\":{\"y\":21},\"y\":24},43],\"h\":18,\"i\":[{\"a\":3,\"c\":{\".\":48,\"a\":{\"l\":47,\"n\":23,\"t\":{\"e\":18}},\"e\":{\"n\":23,\"r\":3},\"i\":[{\"a\":32,\"e\":32},0],\"s\":18,\"u\":3,\"h\":27},\"d\":{\"e\":{\"l\":4}},\"g\":{\"h\":{\"t\":7}},\"l\":{\"i\":5,\"l\":{\"i\":{\"n\":6}},\"y\":18},\"n\":[{\"a\":32,\"d\":97,\"e\":9,\"g\":98,\"n\":0},25],\"s\":{\"t\":{\"i\":0}},\"t\":{\"t\":{\"e\":{\"d\":{\".\":5}}}}},41],\"l\":[{\"e\":{\"s\":{\"s\":19}},\"i\":{\"n\":17},\"o\":{\"r\":{\"e\":11},\"w\":{\"e\":{\"r\":{\".\":84}}}},\"y\":100,\"a\":{\"g\":{\"e\":{\"l\":214}}},\"u\":{\"o\":{\"r\":27}}},99],\"m\":18,\"n\":18,\"o\":[{\"n\":[{\"d\":{\"e\":0},\"t\":0},32],\"r\":[{\"a\":{\"t\":4,\"y\":5},\"e\":{\"t\":6},\"i\":0,\"t\":{\"a\":6}},9],\"s\":5},41],\"p\":56,\"r\":{\"a\":{\"t\":0},\"e\":{\"a\":19,\"s\":{\"c\":6}},\"i\":[{\"l\":17},8],\"o\":{\"l\":6}},\"s\":48,\"t\":[{\"o\":21,\"y\":24},25],\"u\":[{\"e\":{\"l\":4},\"g\":18,\"m\":{\"i\":{\"n\":1}},\"n\":{\"e\":4},\"r\":{\"i\":3},\"s\":{\"i\":17,\"s\":0},\"t\":{\"a\":18}},27],\"y\":41},\"g\":{\"a\":[{\"f\":0,\"l\":{\".\":32,\"i\":27,\"o\":3},\"m\":[{\"e\":{\"t\":4},\"o\":19},25],\"n\":{\"i\":{\"s\":5,\"z\":[{\"a\":6},3]},\"o\":18},\"r\":{\"n\":67},\"s\":{\"s\":17},\"t\":{\"h\":12,\"i\":{\"v\":18}},\"z\":18},41],\"b\":23,\"d\":1,\"e\":{\".\":25,\"d\":25,\"e\":{\"z\":17},\"l\":{\"i\":{\"n\":0,\"s\":4,\"z\":4},\"y\":18},\"n\":[{\"a\":{\"t\":1},\"i\":{\"z\":4},\"o\":18,\"y\":18,\"c\":{\"y\":{\".\":8}}},41],\"o\":[{\"m\":3,\"d\":215},41],\"r\":{\"y\":21},\"s\":{\"i\":32},\"t\":{\"h\":6,\"o\":18,\"y\":1,\"i\":{\"c\":{\".\":8}}},\"v\":1},\"g\":[{\"e\":[{\"r\":23},24],\"l\":{\"u\":6},\"o\":0},101],\"h\":{\"i\":{\"n\":3},\"o\":{\"u\":{\"t\":4}},\"t\":{\"o\":1,\"w\":{\"e\":15}}},\"i\":{\".\":32,\"a\":[{\"r\":5},102],\"c\":[{\"i\":{\"a\":32},\"o\":21},29],\"e\":{\"n\":6,\"s\":{\".\":32}},\"l\":0,\"m\":{\"e\":{\"n\":23}},\"n\":{\".\":68,\"g\":{\"e\":5},\"s\":103},\"o\":32,\"r\":[{\"l\":0},27],\"s\":{\"l\":23},\"u\":1,\"v\":32,\"z\":27},\"l\":[{\"a\":[{\"d\":{\"i\":6},\"s\":32},0],\"e\":[{\"a\":{\"d\":29}},41],\"i\":{\"b\":0,\"g\":23,\"s\":{\"h\":43}},\"o\":[{\"r\":11,\"b\":{\"i\":{\"n\":106}}},27]},9],\"m\":[{\"y\":21},29],\"n\":{\"a\":[{\".\":21,\"c\":69},1],\"e\":{\"t\":{\"t\":17,\"i\":{\"s\":{\"m\":137}}}},\"i\":[{\"n\":24,\"o\":21},29],\"o\":[{\"n\":21,\"m\":{\"o\":5},\"r\":{\".\":216,\"e\":{\"s\":{\"p\":24}}}},29]},\"o\":[{\".\":27,\"b\":5,\"e\":32,\"g\":104,\"i\":{\"s\":3},\"n\":[{\"a\":105,\"d\":{\"o\":7},\"i\":[{\"z\":{\"a\":217}},3]},8],\"o\":32,\"r\":{\"i\":{\"z\":4},\"o\":{\"u\":5}},\"s\":{\".\":32},\"v\":15},41],\"p\":23,\"r\":[{\"a\":{\"d\":{\"a\":18},\"i\":21,\"n\":84,\"p\":{\"h\":{\".\":32,\"e\":{\"r\":[{\".\":7},19]},\"i\":{\"c\":32},\"y\":18}},\"y\":18},\"e\":{\"n\":0,\"s\":{\"s\":{\".\":18}}},\"i\":{\"t\":18,\"e\":{\"v\":213}},\"o\":21,\"u\":{\"f\":17}},41],\"s\":[{\"t\":{\"e\":19}},9],\"t\":{\"h\":11},\"u\":{\"a\":[{\"r\":{\"d\":27}},1],\"e\":25,\"i\":{\"t\":106},\"n\":27,\"s\":27,\"t\":[{\"a\":{\"n\":29}},26]},\"w\":23,\"y\":[{\"n\":107,\"r\":{\"a\":4}},41]},\"h\":{\"a\":{\"b\":{\"l\":73},\"c\":{\"h\":17},\"e\":{\"m\":0,\"t\":0},\"g\":{\"u\":19},\"l\":{\"a\":[{\"m\":12},3]},\"m\":1,\"n\":{\"c\":{\"i\":0,\"y\":0},\"d\":{\".\":32},\"g\":[{\"e\":{\"r\":6},\"o\":6},0],\"i\":{\"z\":108},\"k\":0,\"t\":{\"e\":0}},\"p\":{\"l\":11,\"t\":5,\"a\":{\"r\":{\"r\":218}}},\"r\":{\"a\":{\"n\":3,\"s\":4},\"d\":[{\"e\":12},8],\"l\":{\"e\":0},\"p\":{\"e\":{\"n\":6}},\"t\":{\"e\":{\"r\":5}}},\"s\":{\"s\":5},\"u\":{\"n\":17},\"z\":[{\"a\":11},32],\"i\":{\"r\":{\"s\":137}},\"t\":{\"c\":{\"h\":213}}},\"b\":29,\"e\":{\"a\":{\"d\":41,\"r\":27},\"c\":{\"a\":{\"n\":1,\"t\":19}},\"d\":[{\"o\":13},21],\"l\":{\"i\":93,\"l\":{\"i\":{\"s\":0},\"y\":0},\"o\":19},\"m\":{\"p\":0},\"n\":[{\"a\":[{\"t\":5},17]},9],\"o\":{\"r\":5},\"p\":5,\"r\":{\"a\":[{\"p\":12},21],\"b\":{\"a\":0},\"e\":{\"a\":6},\"n\":23,\"o\":{\"u\":19},\"y\":23},\"s\":[{\"p\":64},29],\"t\":[{\"e\":{\"d\":0}},1],\"u\":0,\"x\":{\"a\":168}},\"f\":29,\"h\":29,\"i\":{\"a\":{\"n\":4},\"c\":{\"o\":1},\"g\":{\"h\":6},\"l\":109,\"m\":{\"e\":{\"r\":36}},\"n\":{\"a\":21},\"o\":{\"n\":{\"e\":17}},\"p\":[{\"e\":{\"l\":{\"a\":219}}},1],\"r\":{\"l\":0,\"o\":3,\"p\":0,\"r\":0},\"s\":{\"e\":{\"l\":11},\"s\":0},\"t\":{\"h\":{\"e\":{\"r\":6}},\"e\":{\"s\":{\"i\":{\"d\":12}}}},\"v\":9},\"k\":18,\"l\":[{\"a\":{\"n\":17},\"o\":[{\"r\":{\"i\":11}},24]},80],\"m\":[{\"e\":{\"t\":17}},43],\"n\":[{\"a\":{\"u\":{\"z\":12}}},42],\"o\":{\"d\":{\"i\":{\"z\":19},\"s\":19},\"g\":[{\"e\":17},1],\"l\":{\"a\":{\"r\":5},\"e\":110},\"m\":{\"a\":1,\"e\":12},\"n\":{\"a\":0,\"y\":4},\"o\":{\"d\":27,\"n\":17},\"r\":{\"a\":{\"t\":5},\"i\":{\"s\":4,\"c\":{\".\":187}},\"t\":{\"e\":12},\"u\":4},\"s\":{\"e\":[{\"n\":4},0],\"p\":15},\"u\":{\"s\":[{\"e\":54},41]},\"v\":{\"e\":{\"l\":5}}},\"p\":56,\"r\":[{\"e\":{\"e\":6},\"o\":{\"n\":{\"i\":{\"z\":5}},\"p\":{\"o\":11}}},26],\"s\":[{\"h\":21},101],\"t\":{\"a\":{\"r\":21},\"e\":{\"n\":2,\"s\":4,\"o\":{\"u\":216}},\"y\":21},\"u\":{\"g\":1,\"m\":{\"i\":{\"n\":1}},\"n\":{\"k\":{\"e\":5},\"t\":0},\"s\":{\"t\":14},\"t\":1},\"w\":[{\"a\":{\"r\":{\"t\":21}}},29],\"y\":{\"p\":{\"e\":3,\"h\":3,\"o\":{\"t\":{\"h\":{\"a\":137}}}},\"s\":9}},\"i\":{\"a\":[{\"l\":24,\"m\":[{\"e\":{\"t\":{\"e\":5}}},0],\"n\":[{\"c\":18,\"i\":11,\"t\":46},24],\"p\":{\"e\":4},\"s\":{\"s\":17},\"t\":{\"i\":{\"v\":21},\"r\":{\"i\":{\"c\":1}},\"u\":21}},42],\"b\":{\"e\":[{\"r\":{\"a\":3,\"t\":4}},0],\"i\":{\"a\":4,\"n\":3,\"t\":{\".\":4,\"e\":4}},\"l\":[{\"i\":3},29],\"o\":19,\"r\":[{\"i\":94},29],\"u\":{\"n\":19}},\"c\":{\"a\":{\"m\":18,\"p\":32,\"r\":[{\".\":21,\"a\":21},18],\"s\":6,\"y\":21},\"c\":{\"u\":17},\"e\":{\"o\":18},\"h\":18,\"i\":[{\"d\":19,\"n\":{\"a\":4},\"p\":[{\"a\":3},24]},25],\"l\":{\"y\":21},\"o\":{\"c\":94},\"r\":[{\"a\":32,\"y\":21},43],\"t\":{\"e\":1,\"u\":[{\"a\":111},84]},\"u\":{\"l\":{\"a\":3},\"m\":1,\"o\":4,\"r\":23}},\"d\":[{\"a\":{\"i\":21,\"n\":{\"c\":4}},\"d\":4,\"e\":{\"a\":{\"l\":11},\"s\":0},\"i\":[{\"a\":{\"n\":4,\"r\":0},\"e\":19,\"o\":[{\"u\":5,\"s\":1},3],\"t\":2,\"u\":4},24],\"l\":{\"e\":23},\"o\":{\"m\":21,\"w\":3},\"r\":21,\"u\":[{\"o\":4},24]},25],\"e\":[{\"d\":{\"e\":0},\"g\":{\"a\":113},\"l\":{\"d\":12},\"n\":{\"a\":67,\"e\":0,\"n\":19,\"t\":{\"i\":23}},\"r\":{\".\":29},\"s\":{\"c\":23,\"t\":29},\"t\":23},112],\"f\":{\".\":18,\"e\":{\"r\":{\"o\":4}},\"f\":{\"e\":{\"n\":5},\"r\":1},\"i\":{\"c\":{\".\":18},\"e\":23},\"l\":23,\"t\":18,\"a\":{\"c\":{\"e\":{\"t\":137}}}},\"g\":[{\"a\":{\"b\":5},\"e\":{\"r\":{\"a\":3}},\"h\":{\"t\":{\"i\":12}},\"i\":[{\"b\":23,\"l\":3,\"n\":3,\"t\":3},18],\"l\":28,\"o\":[{\"r\":3,\"t\":4},24],\"r\":{\"e\":19},\"u\":{\"i\":5,\"r\":2},\"n\":{\"i\":{\"t\":[{\"e\":{\"r\":213}},0]}}},25],\"h\":23,\"i\":114,\"j\":[{\"k\":21},23],\"k\":18,\"l\":{\"a\":[{\"b\":93,\"d\":{\"e\":21},\"m\":94,\"r\":{\"a\":5}},29],\"e\":{\"g\":23,\"r\":2,\"v\":17},\"f\":4,\"i\":[{\"a\":3,\"b\":9,\"o\":3,\"s\":{\"t\":1},\"t\":25,\"z\":9},2],\"l\":{\"a\":{\"b\":5}},\"n\":18,\"o\":{\"q\":3},\"t\":{\"y\":1},\"u\":{\"r\":4},\"v\":3},\"m\":{\"a\":{\"g\":[{\"e\":3},21],\"r\":{\"y\":5}},\"e\":{\"n\":{\"t\":{\"a\":{\"r\":10}}},\"t\":18},\"i\":[{\"d\":{\"a\":4},\"l\":{\"e\":5},\"n\":{\"i\":19},\"t\":18},2],\"n\":{\"i\":1},\"o\":{\"n\":23},\"u\":[{\"l\":{\"a\":3}},24],\"p\":{\"e\":{\"d\":{\"a\":201}}}},\"n\":{\".\":25,\"a\":{\"u\":83,\"v\":18},\"c\":{\"e\":{\"l\":36,\"r\":3}},\"d\":[{\"l\":{\"i\":{\"n\":{\"g\":4}}}},18],\"e\":[{\"e\":23,\"r\":{\"a\":{\"r\":17}},\"s\":{\"s\":19}},25],\"g\":{\"a\":18,\"e\":[{\"n\":4},18],\"i\":18,\"l\":{\"i\":{\"n\":{\"g\":4}}},\"o\":18,\"u\":18},\"i\":[{\".\":19,\"a\":21,\"o\":3,\"s\":2,\"t\":{\"e\":{\".\":19,\"l\":{\"y\":{\".\":19}}},\"i\":{\"o\":32},\"y\":3}},25],\"k\":18,\"l\":18,\"n\":25,\"o\":[{\"c\":90,\"s\":0,\"t\":21},42],\"s\":[{\"e\":3,\"u\":{\"r\":{\"a\":7}}},25],\"t\":{\".\":25,\"h\":112},\"u\":[{\"s\":19},2],\"y\":18,\"f\":{\"r\":{\"a\":{\"s\":220}}}},\"o\":[{\".\":18,\"g\":{\"e\":17,\"r\":9},\"l\":29,\"m\":1,\"n\":{\"a\":{\"t\":11},\"e\":{\"r\":{\"y\":0}},\"i\":11},\"p\":{\"h\":4},\"r\":{\"i\":11},\"s\":21,\"t\":{\"h\":4,\"i\":19,\"o\":1},\"u\":{\"r\":21}},25],\"p\":[{\"e\":0,\"h\":{\"r\":{\"a\":{\"s\":115}}},\"i\":[{\"c\":1},3],\"r\":{\"e\":96},\"u\":{\"l\":3}},25],\"q\":{\"u\":{\"a\":23,\"e\":{\"f\":4},\"i\":{\"d\":3,\"t\":116}}},\"r\":[{\"a\":[{\"b\":0,\"c\":21},29],\"d\":{\"e\":5},\"e\":{\"d\":{\"e\":0},\"f\":21,\"l\":117,\"s\":21},\"g\":{\"i\":4},\"i\":[{\"d\":{\"e\":5},\"s\":1,\"t\":{\"u\":11},\"z\":118},2],\"m\":{\"i\":{\"n\":1}},\"o\":{\"g\":0,\"n\":{\".\":32}},\"u\":{\"l\":4},\"r\":{\"e\":{\"v\":{\"o\":{\"c\":221}}}}},18],\"s\":{\".\":25,\"a\":{\"g\":4,\"r\":3,\"s\":6},\"c\":[{\"h\":3},119],\"e\":[{\"r\":3},18],\"f\":27,\"h\":{\"a\":{\"n\":4},\"o\":{\"n\":3,\"p\":5}},\"i\":{\"b\":3,\"d\":0,\"s\":19,\"t\":{\"i\":{\"v\":4}}},\"k\":26,\"l\":{\"a\":{\"n\":36}},\"m\":{\"s\":18},\"o\":[{\"m\":{\"e\":{\"r\":5}}},24],\"p\":[{\"i\":9,\"y\":1},2],\"s\":[{\"a\":{\"l\":1},\"e\":{\"n\":36,\"s\":1}},62],\"t\":{\"a\":{\".\":1},\"e\":2,\"i\":2,\"l\":{\"y\":0},\"r\":{\"a\":{\"l\":18}}},\"u\":[{\"s\":4},24]},\"t\":{\"a\":{\".\":18,\"b\":{\"i\":0},\"g\":21,\"m\":120,\"n\":23,\"t\":23},\"e\":[{\"r\":{\"a\":3,\"i\":19},\"s\":[{\"i\":{\"m\":{\"a\":29}}},1]},25],\"h\":[{\"i\":{\"l\":148}},25],\"i\":[{\"a\":18,\"c\":[{\"a\":3,\"k\":31},22],\"g\":3,\"l\":{\"l\":4},\"m\":24,\"o\":25,\"s\":[{\"m\":21},18],\"n\":{\"e\":{\"r\":{\"a\":{\"r\":158}}}}},29],\"o\":{\"m\":121,\"n\":18},\"r\":{\"a\":{\"m\":21},\"y\":4},\"t\":18,\"u\":{\"a\":{\"t\":3},\"d\":19,\"l\":3},\"z\":{\".\":18}},\"u\":29,\"v\":[{\"e\":{\"l\":{\"l\":3},\"n\":{\".\":3},\"r\":{\".\":83,\"s\":{\".\":21}}},\"i\":{\"l\":{\".\":4},\"o\":4,\"t\":2},\"o\":{\"r\":{\"e\":19,\"o\":35},\"t\":83}},25],\"w\":56,\"x\":{\"o\":1},\"y\":18,\"z\":{\"a\":{\"r\":18},\"i\":0,\"o\":{\"n\":{\"t\":32}}}},\"j\":{\"a\":[{\"c\":{\"q\":0},\"p\":[{\"a\":{\"n\":{\"e\":{\"s\":220}}}},1],\"n\":{\"u\":{\"a\":12}}},32],\"e\":[{\"r\":{\"s\":5,\"e\":{\"m\":222}},\"s\":{\"t\":{\"i\":{\"e\":18},\"y\":18}},\"w\":11},41],\"o\":{\"p\":1},\"u\":{\"d\":{\"g\":32}}},\"k\":{\"a\":{\".\":27,\"b\":23,\"g\":19,\"i\":{\"s\":17},\"l\":0},\"b\":29,\"e\":{\"d\":24,\"e\":41,\"g\":1,\"l\":{\"i\":[{\"n\":{\"g\":223}},4]},\"n\":{\"d\":73},\"r\":29,\"s\":[{\"t\":{\".\":23}},0],\"t\":{\"y\":1}},\"f\":23,\"h\":1,\"i\":[{\".\":32,\"c\":122,\"l\":{\"l\":21,\"o\":6},\"m\":21,\"n\":{\".\":21,\"d\":{\"e\":0},\"e\":{\"s\":{\"s\":19},\"t\":{\"i\":{\"c\":224}}},\"g\":0},\"p\":1,\"s\":[{\"h\":19},0]},29],\"k\":1,\"l\":[{\"e\":{\"y\":18},\"y\":18},29],\"m\":29,\"n\":{\"e\":{\"s\":19},\"o\":69},\"o\":{\"r\":4,\"s\":{\"h\":17},\"u\":23,\"v\":{\"i\":{\"a\":{\"n\":41}}}},\"r\":{\"o\":{\"n\":5}},\"s\":[{\"c\":21,\"l\":1,\"y\":21,\"h\":{\"a\":23}},101],\"t\":19,\"w\":29},\"l\":{\"a\":{\"b\":{\"i\":{\"c\":11},\"o\":21},\"c\":{\"i\":[{\"e\":225},17]},\"d\":{\"e\":21,\"y\":3},\"g\":{\"n\":0},\"m\":{\"o\":11},\"n\":{\"d\":[{\"l\":0},27],\"e\":{\"t\":5},\"t\":{\"e\":0}},\"r\":{\"g\":0,\"i\":11,\"c\":{\"e\":{\"n\":176}}},\"s\":{\"e\":0},\"t\":{\"a\":{\"n\":4},\"e\":{\"l\":{\"i\":18}},\"i\":{\"v\":18}},\"v\":[{\"a\":95},18],\"i\":{\"n\":{\"e\":{\"s\":{\"s\":226}}}}},\"b\":[{\"i\":{\"n\":17}},42],\"c\":[{\"e\":0,\"i\":23,\"h\":{\"a\":{\"i\":23},\"i\":{\"l\":{\"d\":227}}}},101],\"d\":[{\"e\":[{\"r\":{\"e\":1,\"i\":1}},24],\"i\":[{\"s\":4},0],\"r\":[{\"i\":21},23]},25],\"e\":{\"a\":[{\"d\":{\"e\":{\"r\":{\".\":183}}},\"s\":{\"a\":228}},9],\"b\":{\"i\":1},\"f\":{\"t\":6},\"g\":{\".\":32,\"g\":32,\"e\":{\"n\":{\"d\":{\"r\":{\"e\":230}}}}},\"m\":{\"a\":{\"t\":[{\"i\":{\"c\":5}},1]}},\"n\":{\".\":18,\"c\":27,\"e\":{\".\":32},\"t\":41,\"o\":{\"i\":{\"d\":78}}},\"p\":{\"h\":3,\"r\":1},\"r\":{\"a\":{\"b\":6},\"e\":0,\"g\":27,\"i\":68,\"o\":21},\"s\":[{\"c\":{\"o\":4},\"q\":32,\"s\":[{\".\":32},27]},8],\"v\":{\"a\":23,\"e\":{\"r\":{\".\":0,\"a\":0,\"s\":0}}},\"y\":[{\"e\":18},27],\"c\":{\"t\":{\"a\":{\"b\":229}}}},\"f\":[{\"r\":19},25],\"g\":[{\"a\":[{\"r\":12},19],\"e\":{\"s\":21},\"o\":11},80],\"h\":48,\"i\":{\"a\":{\"g\":1,\"m\":9,\"r\":{\"i\":{\"z\":6}},\"s\":1,\"t\":{\"o\":1}},\"b\":{\"i\":4},\"c\":{\"i\":{\"o\":32},\"o\":{\"r\":1},\"s\":18,\"t\":{\".\":18},\"u\":21,\"y\":23},\"d\":{\"a\":23,\"e\":{\"r\":5},\"i\":27},\"f\":{\"e\":{\"r\":11},\"f\":21,\"l\":1},\"g\":{\"a\":{\"t\":{\"e\":32}},\"h\":27,\"r\":{\"a\":1}},\"k\":27,\"l\":123,\"m\":{\"b\":{\"l\":0},\"i\":11,\"o\":1,\"p\":90},\"n\":{\"a\":21,\"e\":[{\"a\":11},124],\"i\":11,\"k\":{\"e\":{\"r\":6}}},\"o\":{\"g\":4},\"q\":125,\"s\":{\"p\":0},\"t\":[{\".\":24,\"i\":{\"c\":{\"a\":32,\"s\":108}},\"h\":{\"o\":{\"g\":204}}},29],\"v\":{\"e\":{\"r\":11}},\"z\":29},\"j\":18,\"k\":{\"a\":[{\"l\":23,\"t\":0},11]},\"l\":[{\"a\":{\"w\":21},\"e\":[{\"a\":19,\"c\":23,\"g\":23,\"l\":23,\"n\":73,\"t\":73},24],\"i\":[{\"n\":[{\"a\":19},126],\"s\":{\"h\":231}},9],\"o\":[{\"q\":{\"u\":{\"i\":10}},\"u\":{\"t\":4},\"w\":19},1],\"f\":{\"l\":2}},29],\"m\":[{\"e\":{\"t\":19},\"i\":{\"n\":{\"g\":3}},\"o\":{\"d\":21,\"n\":[{\"e\":{\"l\":{\"l\":232}}},17]}},25],\"n\":81,\"o\":{\".\":27,\"b\":{\"a\":{\"l\":5},\"o\":{\"t\":{\"o\":233}}},\"c\":{\"i\":1},\"f\":18,\"g\":{\"i\":{\"c\":27},\"o\":19,\"u\":27,\"e\":{\"s\":{\".\":9}}},\"m\":{\"e\":{\"r\":11}},\"n\":{\"g\":32,\"i\":[{\"z\":127},0]},\"o\":{\"d\":6},\"p\":{\"e\":{\".\":32},\"i\":11,\"m\":23},\"r\":{\"a\":[{\"t\":{\"o\":1}},17],\"i\":{\"e\":4},\"o\":{\"u\":5}},\"s\":{\".\":32,\"e\":{\"t\":5},\"o\":{\"p\":{\"h\":{\"i\":{\"z\":32},\"y\":32}}},\"t\":0},\"t\":{\"a\":1},\"u\":{\"n\":{\"d\":6},\"t\":25},\"v\":18,\"a\":{\"d\":{\"e\":{\"d\":{\".\":17},\"r\":{\".\":183}}}}},\"p\":[{\"a\":{\"b\":5},\"h\":{\"a\":23,\"i\":19},\"i\":{\"n\":{\"g\":4},\"t\":23},\"l\":21,\"r\":19},25],\"r\":43,\"s\":[{\"c\":21,\"e\":24,\"i\":{\"e\":21}},81],\"t\":[{\"a\":{\"g\":4,\"n\":{\"e\":7}},\"e\":[{\"n\":17,\"r\":{\"a\":36},\"a\":23},29],\"h\":{\"i\":[{\"l\":{\"y\":148}},11]},\"i\":{\"e\":{\"s\":{\".\":19}},\"s\":17},\"r\":29,\"u\":[{\"r\":{\"a\":12}},8]},18],\"u\":{\"a\":4,\"b\":{\"r\":3},\"c\":{\"h\":17,\"i\":3},\"e\":{\"n\":3,\"p\":15},\"f\":0,\"i\":{\"d\":4},\"m\":{\"a\":1,\"i\":32,\"n\":{\".\":19,\"i\":{\"a\":32}},\"b\":{\"i\":{\"a\":{\".\":235}}}},\"o\":[{\"r\":11},3],\"p\":18,\"s\":{\"s\":17,\"t\":{\"e\":11}},\"t\":41,\"n\":{\"k\":{\"e\":{\"r\":234}}}},\"v\":{\"e\":{\"n\":19,\"t\":128}},\"w\":42,\"y\":[{\"a\":18,\"b\":18,\"m\":{\"e\":4},\"n\":{\"o\":3},\"s\":[{\"e\":19,\"t\":{\"y\":{\"r\":4}}},58],\"g\":{\"a\":{\"m\":{\"i\":236}}}},41]},\"m\":{\"a\":[{\"b\":25,\"c\":{\"a\":9,\"h\":{\"i\":{\"n\":{\"e\":4}}},\"l\":1},\"g\":{\"i\":{\"n\":5},\"n\":32},\"h\":25,\"i\":{\"d\":6},\"l\":{\"d\":18,\"i\":{\"g\":3,\"n\":4},\"l\":{\"i\":0},\"t\":{\"y\":0},\"a\":{\"p\":222}},\"n\":{\"i\":{\"a\":32,\"s\":5,\"z\":11},\".\":24,\"u\":{\"s\":{\"c\":237}}},\"p\":[{\"h\":{\"r\":{\"o\":244}}},18],\"r\":{\"i\":{\"n\":{\"e\":{\".\":4}},\"z\":4},\"l\":{\"y\":0},\"v\":11,\"g\":{\"i\":{\"n\":238}}},\"s\":{\"c\":{\"e\":4},\"e\":0,\"t\":15},\"t\":{\"e\":32,\"h\":12,\"i\":{\"s\":3,\"z\":{\"a\":18}}}},41],\"b\":[{\"a\":{\"t\":129},\"i\":{\"l\":19,\"n\":{\"g\":83},\"v\":0}},43],\"c\":56,\"e\":{\".\":18,\"d\":[{\".\":18,\"i\":{\"a\":32,\"e\":3,\"c\":[{\"i\":{\"n\":152}},84],\"o\":{\"c\":239}},\"y\":108},25],\"g\":[{\"r\":{\"a\":{\"n\":240}}},9],\"l\":{\"o\":{\"n\":5},\"t\":0},\"m\":[{\"o\":130},9],\"n\":[{\"a\":[{\"c\":5},0],\"d\":{\"e\":0},\"e\":18,\"i\":0,\"s\":[{\"u\":7},17],\"t\":[{\"e\":0},27],\".\":24},41],\"o\":{\"n\":4},\"r\":{\"s\":{\"a\":19}},\"s\":[{\"t\":{\"i\":27}},25],\"t\":{\"a\":[{\"l\":11},1],\"e\":2,\"h\":{\"i\":4},\"r\":[{\"i\":{\"c\":32,\"e\":4},\"y\":3},21]},\"v\":1},\"f\":43,\"h\":25,\"i\":{\".\":32,\"a\":3,\"d\":{\"a\":[{\"b\":241},0],\"g\":0},\"g\":0,\"l\":{\"i\":{\"a\":27,\"e\":108,\"t\":{\"a\":27}},\"l\":[{\"a\":{\"g\":208},\"i\":{\"l\":{\"i\":59}}},21]},\"n\":{\"a\":0,\"d\":27,\"e\":{\"e\":19},\"g\":{\"l\":[{\"i\":5,\"y\":19},21]},\"t\":0,\"u\":[{\"t\":{\"e\":{\"r\":242,\"s\":{\"t\":242}}}},21],\"i\":{\"s\":{\".\":174}}},\"o\":{\"t\":17},\"s\":[{\"e\":{\"r\":{\".\":0}},\"l\":5,\"t\":{\"i\":0,\"r\":{\"y\":19}}},24],\"t\":{\"h\":18},\"z\":24},\"k\":18,\"l\":43,\"m\":[{\"a\":{\"r\":{\"y\":5},\"b\":243}},29],\"n\":[{\"a\":1,\"i\":{\"n\":21},\"o\":1},43],\"o\":[{\"c\":{\"r\":[{\"a\":{\"t\":[{\"i\":{\"z\":32}},245]}},18]},\"d\":131,\"g\":{\"o\":1},\"i\":{\"s\":[{\"e\":5},84]},\"k\":18,\"l\":{\"e\":{\"s\":{\"t\":4},\"c\":246}},\"m\":{\"e\":3},\"n\":{\"e\":{\"t\":5,\"y\":{\"l\":247}},\"g\":{\"e\":5},\"i\":{\"a\":12,\"s\":{\"m\":0,\"t\":0},\"z\":3},\"o\":{\"l\":36,\"c\":{\"h\":12},\"e\":{\"n\":171},\"s\":249},\"y\":{\".\":3}},\"r\":[{\"a\":{\".\":18},\"o\":{\"n\":{\"i\":{\"s\":248}}}},9],\"s\":[{\"e\":{\"y\":4},\"p\":3},8],\"t\":{\"h\":[{\"e\":{\"t\":250}},12]},\"u\":{\"f\":19,\"s\":[{\"i\":{\"n\":98}},27]},\"v\":9,\"e\":{\"l\":{\"a\":{\"s\":167}}}},41],\"p\":[{\"a\":{\"r\":{\"a\":[{\"b\":5},7],\"i\":6}},\"e\":{\"t\":23},\"h\":{\"a\":{\"s\":36}},\"i\":[{\"a\":0,\"e\":{\"s\":4},\"n\":34,\"r\":19,\"s\":4},24],\"o\":{\"r\":{\"i\":11},\"s\":{\"i\":{\"t\":{\"e\":6}}},\"u\":{\"s\":21},\"v\":6},\"t\":{\"r\":1},\"y\":24},43],\"r\":47,\"s\":[{\"h\":[{\"a\":{\"c\":{\"k\":251}}},21],\"i\":19},101],\"t\":18,\"u\":[{\"l\":{\"a\":{\"r\":49},\"t\":[{\"i\":[{\"u\":252},54]},32]},\"m\":27,\"n\":8,\"p\":18,\"u\":1,\"d\":{\"r\":{\"o\":9}}},41],\"w\":18},\"n\":{\"a\":[{\"b\":[{\"u\":21},81],\"c\":{\".\":18,\"a\":1,\"t\":19},\"g\":{\"e\":{\"r\":{\".\":5}}},\"k\":0,\"l\":{\"i\":[{\"a\":4},1],\"t\":18},\"m\":{\"i\":{\"t\":4}},\"n\":[{\"c\":{\"i\":36},\"i\":{\"t\":0},\"k\":17},24],\"r\":{\"c\":[{\"h\":{\"s\":{\".\":73}}},11],\"e\":18,\"i\":11,\"l\":0,\"m\":19},\"s\":[{\"c\":0,\"t\":{\"i\":5}},21],\"t\":[{\"a\":{\"l\":3},\"o\":{\"m\":{\"i\":{\"z\":6}}}},24],\"u\":[{\"s\":{\"e\":11},\"t\":27},24],\"v\":{\"e\":0}},41],\"b\":80,\"c\":{\"a\":{\"r\":6},\"e\":{\"s\":{\".\":21}},\"h\":{\"a\":23,\"e\":{\"o\":19,\"s\":{\"t\":253}},\"i\":{\"l\":19,\"s\":23}},\"i\":{\"n\":2,\"t\":1},\"o\":{\"u\":{\"r\":{\"a\":7}}},\"r\":29,\"u\":29},\"d\":{\"a\":{\"i\":21,\"n\":19},\"e\":[{\"s\":{\"t\":{\".\":4}}},29],\"i\":{\"b\":0,\"f\":79,\"t\":29,\"z\":23,\"e\":{\"c\":{\"k\":29}}},\"u\":{\"c\":19,\"r\":0},\"w\":{\"e\":9},\"t\":{\"h\":{\"r\":3}}},\"e\":{\".\":25,\"a\":{\"r\":23},\"b\":[{\"u\":11,\"a\":{\"c\":{\"k\":3}}},9],\"c\":[{\"k\":32},9],\"d\":25,\"g\":{\"a\":{\"t\":[{\"i\":{\"v\":5}},1]},\"e\":32},\"l\":{\"a\":1,\"i\":{\"z\":5}},\"m\":{\"i\":4,\"o\":1},\"n\":[{\"e\":18},41],\"o\":27,\"p\":{\"o\":1},\"q\":9,\"r\":[{\"a\":{\"b\":6,\"r\":21},\"e\":24,\"i\":132,\"r\":0},29],\"s\":[{\".\":25,\"p\":18,\"t\":25,\"w\":18,\"k\":{\"i\":119}},41],\"t\":{\"i\":{\"c\":27}},\"v\":[{\"e\":19},1],\"w\":1},\"f\":[{\"i\":{\"n\":{\"i\":{\"t\":{\"e\":{\"s\":226}}}}}},23],\"g\":{\"a\":{\"b\":21},\"e\":{\"l\":23,\"n\":{\"e\":[{\"s\":5},133]},\"r\":{\"e\":19,\"i\":23}},\"h\":{\"a\":4,\"o\":2},\"i\":{\"b\":23,\"n\":2,\"t\":19},\"l\":{\"a\":21},\"o\":{\"v\":17},\"s\":{\"h\":4,\"p\":{\"r\":2}},\"u\":[{\"m\":21},29],\"y\":24},\"h\":[{\"a\":[{\"b\":12},0],\"e\":0},80],\"i\":{\"a\":[{\"n\":[{\".\":114},3],\"p\":1},68],\"b\":{\"a\":3,\"l\":1},\"d\":[{\"i\":4},1],\"e\":{\"r\":1},\"f\":{\"i\":[{\"c\":{\"a\":{\"t\":4}}},9]},\"g\":{\"r\":19},\"k\":0,\"m\":[{\"i\":{\"z\":3}},29],\"n\":[{\"e\":{\".\":32},\"g\":0},29],\"o\":1,\"s\":{\".\":32,\"t\":{\"a\":0}},\"t\":[{\"h\":21,\"i\":{\"o\":27},\"o\":{\"r\":23},\"r\":3},24]},\"j\":29,\"k\":[{\"e\":{\"r\":{\"o\":19},\"t\":23},\"i\":{\"n\":3},\"l\":29,\"r\":{\"u\":{\"p\":3}}},44],\"l\":[{\"e\":{\"s\":{\"s\":19}}},43],\"m\":[{\"e\":[{\"t\":17},0]},19],\"n\":[{\"e\":0,\"i\":{\"a\":{\"l\":11},\"v\":0}},101],\"o\":{\"b\":{\"l\":[{\"e\":3},0]},\"c\":{\"l\":19,\"e\":{\"r\":{\"o\":{\"s\":254}}}},\"d\":66,\"e\":27,\"g\":[{\"e\":17},18],\"i\":{\"s\":{\"i\":6}},\"l\":{\"i\":134,\"o\":{\"g\":{\"i\":{\"s\":32}}}},\"m\":{\"i\":{\"c\":27,\"z\":108,\"s\":{\"t\":82}},\"o\":1,\"y\":3,\"a\":{\"l\":214},\"e\":{\"n\":{\"o\":194}}},\"n\":[{\"a\":{\"g\":0},\"i\":[{\"z\":19,\"s\":{\"o\":255}},5],\"e\":{\"q\":15}},1],\"p\":[{\"o\":{\"l\":{\"i\":135,\"y\":{\".\":256}}}},18],\"r\":{\"a\":{\"b\":5,\"r\":{\"y\":1}}},\"s\":{\"c\":18,\"e\":0,\"t\":5},\"t\":{\"a\":4},\"u\":[{\"n\":27},41],\"v\":{\"e\":{\"l\":136,\"m\":{\"b\":2}}},\"w\":{\"l\":12}},\"p\":[{\"i\":0,\"r\":{\"e\":{\"c\":17}}},72],\"q\":29,\"r\":[{\"u\":0},29],\"s\":[{\"a\":{\"b\":4,\"t\":{\"i\":36}},\"c\":[{\"e\":{\"i\":{\"v\":4}}},1],\"e\":[{\"s\":83},24],\"i\":{\"d\":137,\"g\":17},\"l\":24,\"m\":[{\"o\":{\"o\":1}},3],\"o\":{\"c\":21},\"p\":{\"e\":1,\"i\":19},\"t\":{\"a\":{\"b\":{\"l\":6}}}},81],\"t\":[{\"a\":{\"b\":0},\"e\":{\"r\":{\"s\":12}},\"i\":[{\"b\":19,\"e\":{\"r\":0},\"f\":8,\"n\":{\"e\":23,\"g\":83},\"p\":0},9],\"r\":{\"o\":{\"l\":{\"l\":{\"i\":7}}},\"e\":{\"p\":137}},\"s\":1,\"u\":{\"m\":{\"e\":11}}},29],\"u\":{\"a\":2,\"d\":1,\"e\":{\"n\":4},\"f\":{\"f\":{\"e\":0}},\"i\":{\"n\":23,\"t\":50},\"m\":[{\"e\":2,\"i\":19},21],\"n\":138,\"o\":23,\"t\":{\"r\":3}},\"v\":74,\"w\":72,\"y\":{\"m\":0,\"p\":0},\"z\":[{\"a\":23},18]},\"o\":{\"a\":[{\"d\":11,\"l\":{\"e\":{\"s\":108}},\"r\":{\"d\":12},\"s\":{\"e\":0,\"t\":{\"e\":6}},\"t\":{\"i\":5}},18],\"b\":{\"a\":{\"b\":35,\"r\":19},\"e\":{\"l\":0},\"i\":[{\"n\":[{\"g\":4},24]},29],\"r\":23,\"u\":{\"l\":3},\"l\":{\"i\":{\"g\":189}}},\"c\":{\"e\":29,\"h\":[{\"e\":{\"t\":23},\"a\":{\"s\":23}},0],\"i\":{\"f\":12,\"l\":21},\"l\":{\"a\":{\"m\":21}},\"o\":{\"d\":21},\"r\":{\"a\":{\"c\":3,\"t\":{\"i\":{\"z\":4}}},\"e\":12,\"i\":{\"t\":32}},\"t\":{\"o\":{\"r\":{\"a\":7}}},\"u\":{\"l\":{\"a\":3},\"r\":{\"e\":19}}},\"d\":{\"d\":{\"e\":{\"d\":4}},\"i\":{\"c\":3,\"o\":11,\"t\":{\"i\":{\"c\":137}}},\"o\":[{\"r\":12},139],\"u\":{\"c\":{\"t\":{\".\":4,\"s\":4}}},\"e\":{\"l\":{\"l\":{\"i\":12}}}},\"e\":{\"l\":21,\"n\":{\"g\":19},\"r\":[{\"s\":{\"t\":257}},23],\"t\":{\"a\":1},\"v\":23},\"f\":{\"i\":[{\"t\":{\"e\":4,\"t\":17}},24]},\"g\":{\"a\":{\"r\":121,\"t\":{\"i\":{\"v\":4},\"o\":21}},\"e\":[{\"n\":{\"e\":19},\"o\":19,\"r\":21},29],\"i\":{\"e\":23,\"s\":140,\"t\":3},\"l\":[{\"y\":79},21],\"n\":{\"i\":{\"z\":27}},\"r\":{\"o\":21},\"u\":{\"i\":5},\"y\":[{\"n\":25},41]},\"h\":[{\"a\":{\"b\":6}},74],\"i\":[{\"c\":{\"e\":{\"s\":11}},\"d\":{\"e\":{\"r\":3}},\"f\":{\"f\":17},\"g\":0,\"l\":{\"e\":{\"t\":4}},\"n\":{\"g\":23,\"t\":{\"e\":{\"r\":6}}},\"s\":{\"m\":19,\"o\":{\"n\":4},\"t\":{\"e\":{\"n\":6}}},\"t\":{\"e\":{\"r\":3}}},9],\"j\":19,\"k\":[{\"e\":{\"n\":23,\"s\":{\"t\":15}},\"i\":{\"e\":4}},25],\"l\":{\"a\":[{\"n\":21,\"s\":{\"s\":36}},29],\"d\":[{\"e\":15},9],\"e\":{\"r\":3,\"s\":{\"c\":23,\"t\":{\"e\":{\"r\":88}}},\"t\":23},\"f\":{\"i\":1},\"i\":[{\"a\":23,\"c\":{\"e\":23},\"d\":{\".\":4},\"f\":73,\"l\":19,\"n\":{\"g\":3},\"o\":19,\"s\":{\".\":19,\"h\":3},\"t\":{\"e\":19,\"i\":{\"o\":19}},\"v\":19,\"g\":{\"o\":{\"p\":{\"o\":258}}}},9],\"l\":{\"i\":{\"e\":17}},\"o\":{\"g\":{\"i\":{\"z\":4}},\"r\":0,\"n\":{\"o\":{\"m\":259}}},\"p\":{\"l\":4},\"t\":9,\"u\":{\"b\":3,\"m\":{\"e\":3},\"n\":3,\"s\":19},\"v\":9,\"y\":24},\"m\":{\"a\":{\"h\":4,\"l\":5,\"t\":{\"i\":{\"z\":4}}},\"b\":{\"e\":9,\"l\":1},\"e\":[{\"n\":{\"a\":3},\"r\":{\"s\":{\"e\":4}},\"t\":[{\"r\":{\"y\":4}},21],\"c\":{\"h\":{\"a\":260}}},24],\"i\":{\"a\":23,\"c\":{\".\":3,\"a\":3},\"d\":19,\"n\":[{\"i\":19},2]},\"m\":{\"e\":{\"n\":{\"d\":32}}},\"o\":{\"g\":{\"e\":0},\"n\":21},\"p\":{\"i\":3,\"r\":{\"o\":7}}},\"n\":[{\"a\":[{\"c\":1,\"n\":23},2],\"c\":[{\"i\":{\"l\":27}},2],\"d\":[{\"o\":4},25],\"e\":{\"n\":23,\"s\":{\"t\":4}},\"g\":{\"u\":1},\"i\":{\"c\":2,\"o\":23,\"s\":2,\"u\":19},\"k\":{\"e\":{\"y\":3}},\"o\":{\"d\":{\"i\":1},\"m\":{\"y\":3,\"i\":{\"c\":137}},\"r\":{\"m\":{\"a\":23}},\"t\":{\"o\":{\"n\":261}},\"u\":23},\"s\":[{\"p\":{\"i\":[{\"r\":{\"a\":10}},36]},\"u\":17},3],\"t\":{\"e\":{\"n\":36},\"i\":[{\"f\":7},93]},\"u\":{\"m\":4},\"v\":{\"a\":6}},24],\"o\":[{\"d\":{\"e\":5,\"i\":5},\"k\":1,\"p\":{\"i\":11},\"r\":{\"d\":23},\"s\":{\"t\":6}},9],\"p\":{\"a\":24,\"e\":{\"d\":5,\"r\":[{\"a\":[{\"g\":18},27]},2]},\"h\":[{\"a\":{\"n\":19},\"e\":{\"r\":19}},25],\"i\":{\"n\":{\"g\":3},\"t\":23,\"s\":{\"m\":{\".\":2}}},\"o\":{\"n\":19,\"s\":{\"i\":21}},\"r\":29,\"u\":2,\"y\":5},\"q\":29,\"r\":{\"a\":[{\".\":19,\"g\":83,\"l\":{\"i\":{\"z\":4}},\"n\":{\"g\":{\"e\":4}}},29],\"e\":{\"a\":[{\"l\":19},5],\"i\":3,\"s\":{\"h\":5,\"t\":{\".\":4}},\"w\":17},\"g\":{\"u\":1},\"i\":{\"a\":56,\"c\":{\"a\":3},\"l\":19,\"n\":2,\"o\":29,\"t\":{\"y\":3},\"u\":23},\"m\":{\"i\":9},\"n\":{\"e\":8},\"o\":{\"f\":19,\"u\":{\"g\":3}},\"p\":{\"e\":4},\"r\":{\"h\":27},\"s\":{\"e\":[{\"n\":5},1],\"t\":17},\"t\":{\"h\":{\"i\":3,\"y\":3,\"o\":{\"n\":{\"i\":{\"t\":262}}},\"r\":{\"i\":137}},\"y\":1,\"i\":{\"v\":{\"e\":{\"l\":{\"y\":4}}}}},\"u\":{\"m\":19},\"y\":29},\"s\":{\"a\":{\"l\":3},\"c\":[{\"e\":1,\"o\":{\"p\":[{\"i\":18},23]},\"r\":19},9],\"i\":{\"e\":95,\"t\":{\"i\":{\"v\":4},\"o\":3,\"y\":3},\"u\":0},\"l\":1,\"o\":24,\"p\":{\"a\":1,\"o\":1,\"h\":{\"e\":{\"r\":83}}},\"t\":{\"a\":[{\"t\":{\"i\":19}},9],\"i\":{\"l\":4,\"t\":4}}},\"t\":{\"a\":{\"n\":21},\"e\":{\"l\":{\"e\":{\"g\":36}},\"r\":{\".\":3,\"s\":4},\"s\":[{\"t\":{\"e\":{\"r\":263},\"o\":{\"r\":264}}},21]},\"h\":[{\"e\":{\"s\":{\"i\":5},\"o\":{\"s\":265}},\"i\":14},18],\"i\":{\"c\":{\".\":3,\"a\":4,\"e\":23},\"f\":23,\"s\":23},\"o\":{\"s\":5}},\"u\":[{\"b\":{\"l\":3,\"a\":{\"d\":{\"o\":116}}},\"c\":{\"h\":{\"i\":6}},\"e\":{\"t\":4},\"l\":1,\"n\":{\"c\":{\"e\":{\"r\":6}},\"d\":8},\"v\":4},9],\"v\":{\"e\":{\"n\":1,\"r\":{\"n\":{\"e\":17},\"s\":12,\"t\":1}},\"i\":{\"s\":23,\"t\":{\"i\":36},\"a\":{\"n\":{\".\":266}}},\"o\":{\"l\":60}},\"w\":{\"d\":{\"e\":{\"r\":3}},\"e\":{\"l\":3,\"s\":{\"t\":4}},\"i\":2,\"n\":{\"i\":5},\"o\":21},\"y\":{\"a\":2},\"x\":{\"i\":{\"d\":{\"i\":{\"c\":267}}}}},\"p\":{\"a\":[{\"c\":{\"a\":1,\"e\":1,\"t\":0},\"d\":21,\"g\":{\"a\":{\"n\":32,\"t\":23}},\"i\":[{\"n\":17},21],\"l\":[{\"m\":{\"a\":{\"t\":268}}},21],\"n\":{\"a\":0,\"e\":{\"l\":11},\"t\":{\"y\":0},\"y\":3},\"p\":[{\"u\":1},2],\"r\":{\"a\":{\"b\":{\"l\":6},\"g\":{\"e\":5,\"r\":{\"a\":269}},\"l\":{\"e\":228},\"m\":[{\"e\":12},36]},\"d\":{\"i\":5},\"e\":[{\"l\":5},27],\"i\":[{\"s\":0},28]},\"t\":{\"e\":[{\"r\":4},9],\"h\":{\"i\":{\"c\":32},\"y\":4},\"r\":{\"i\":{\"c\":1}}},\"v\":0,\"y\":27},41],\"b\":43,\"d\":1,\"e\":{\".\":18,\"a\":[{\"r\":{\"l\":17}},138],\"c\":9,\"d\":[{\"e\":27,\"i\":[{\"a\":36,\"c\":0},27]},37],\"e\":[{\"d\":0,\"v\":208},21],\"k\":0,\"l\":{\"a\":1,\"i\":{\"e\":17}},\"n\":{\"a\":{\"n\":1},\"c\":21,\"t\":{\"h\":0}},\"o\":{\"n\":4},\"r\":{\"a\":{\".\":21,\"b\":{\"l\":6},\"g\":21},\"i\":[{\"s\":{\"t\":6}},21],\"m\":{\"a\":{\"l\":0},\"e\":7},\"n\":21,\"o\":11,\"t\":{\"i\":11},\"u\":4,\"v\":15},\"t\":[{\"e\":{\"n\":4},\"i\":{\"z\":4}},9]},\"f\":18,\"g\":18,\"h\":{\".\":18,\"a\":{\"r\":{\"i\":6}},\"e\":{\"n\":{\"o\":11},\"r\":1,\"s\":{\".\":1}},\"i\":{\"c\":2,\"e\":32,\"n\":{\"g\":4},\"s\":{\"t\":{\"i\":32}},\"z\":27,\"l\":{\"a\":{\"n\":{\"t\":168},\"t\":{\"e\":{\"l\":270}}}}},\"l\":9,\"o\":{\"b\":27,\"n\":{\"e\":27,\"i\":32},\"r\":0},\"s\":18,\"t\":3,\"u\":32,\"y\":41},\"i\":{\"a\":[{\"n\":17},3],\"c\":{\"i\":{\"e\":1},\"y\":1,\"a\":{\"d\":271}},\"d\":[{\"a\":19,\"e\":3,\"i\":32},21],\"e\":{\"c\":27,\"n\":3},\"g\":{\"r\":{\"a\":{\"p\":1}}},\"l\":{\"o\":3},\"n\":[{\".\":21,\"d\":17,\"o\":21},9],\"o\":[{\"n\":17},141],\"t\":{\"h\":[{\"a\":4},23],\"u\":9}},\"k\":142,\"l\":[{\"a\":{\"n\":27,\"s\":{\"t\":6}},\"i\":{\"a\":11,\"e\":{\"r\":5},\"g\":18,\"n\":[{\"a\":{\"r\":5}},0],\"c\":{\"a\":{\"b\":208}}},\"o\":{\"i\":17},\"u\":{\"m\":[{\"b\":17},0]}},143],\"m\":43,\"n\":48,\"o\":{\"c\":1,\"d\":{\".\":32},\"e\":{\"m\":4,\"t\":144},\"g\":145,\"i\":{\"n\":[{\"t\":32,\"c\":{\"a\":12}},84]},\"l\":{\"y\":{\"t\":6,\"e\":137,\"p\":{\"h\":{\"o\":{\"n\":{\"o\":272}}}}},\"e\":{\".\":41}},\"n\":{\"i\":1},\"p\":1,\"r\":[{\"y\":1},124],\"s\":[{\"s\":15},41],\"t\":[{\"a\":1},21],\"u\":{\"n\":32}},\"p\":[{\"a\":{\"r\":{\"a\":5}},\"e\":[{\"d\":21,\"l\":19,\"n\":23,\"r\":23,\"t\":23},24],\"o\":{\"s\":{\"i\":{\"t\":{\"e\":5}}}}},43],\"r\":[{\"a\":{\"y\":{\"e\":17}},\"e\":{\"c\":{\"i\":32,\"o\":5},\"e\":{\"m\":11},\"f\":{\"a\":{\"c\":6}},\"l\":{\"a\":0},\"r\":11,\"s\":{\"e\":23,\"s\":27,\"p\":{\"l\":{\"i\":84}}},\"t\":{\"e\":{\"n\":5}},\"v\":11,\"m\":{\"a\":{\"c\":273}},\"n\":{\"e\":{\"u\":15}}},\"i\":{\"e\":53,\"n\":{\"t\":146},\"s\":[{\"o\":12},0]},\"o\":{\"c\":{\"a\":23,\"e\":{\"s\":{\"s\":8}},\"i\":{\"t\":{\"y\":{\".\":274}}}},\"f\":{\"i\":{\"t\":6}},\"l\":11,\"s\":{\"e\":12},\"t\":15,\"g\":{\"e\":208}}},9],\"s\":[{\"e\":[{\"u\":{\"d\":[{\"o\":{\"d\":276,\"f\":276}},275]}},24],\"h\":1,\"i\":{\"b\":21}},81],\"t\":[{\"a\":{\"b\":134},\"e\":24,\"h\":24,\"i\":{\"m\":11},\"u\":{\"r\":0},\"w\":21,\"o\":{\"m\":{\"a\":{\"t\":277}}},\"r\":{\"o\":{\"l\":278}}},42],\"u\":{\"b\":[{\"e\":{\"s\":{\"c\":181}}},11],\"e\":0,\"f\":0,\"l\":{\"c\":11},\"m\":1,\"n\":9,\"r\":{\"r\":0},\"s\":32,\"t\":[{\"e\":[{\"r\":11},32],\"r\":3,\"t\":{\"e\":{\"d\":0},\"i\":{\"n\":0}}},9]},\"w\":23},\"q\":{\"u\":[{\"a\":{\"v\":5,\"i\":{\"n\":{\"t\":{\"e\":279}}},\"s\":{\"i\":[{\"r\":281,\"s\":281},280]}},\"e\":{\".\":25,\"r\":27,\"t\":27},\"i\":{\"n\":{\"t\":{\"e\":{\"s\":{\"s\":282}}}},\"v\":{\"a\":{\"r\":14}}}},9]},\"r\":{\"a\":{\"b\":[{\"i\":3,\"o\":{\"l\":{\"i\":{\"c\":29},\"o\":{\"i\":236}}}},25],\"c\":{\"h\":{\"e\":17,\"u\":3},\"l\":19},\"f\":{\"f\":{\"i\":5},\"t\":0},\"i\":24,\"l\":{\"o\":1},\"m\":{\"e\":{\"t\":[{\"r\":{\"i\":{\"z\":283}}},11],\"n\":24},\"i\":24,\"o\":{\"u\":3}},\"n\":{\"e\":{\"o\":6},\"g\":{\"e\":0},\"i\":21,\"o\":4,\"h\":{\"a\":{\"s\":167}}},\"p\":{\"e\":{\"r\":11},\"h\":{\"y\":27}},\"r\":{\"c\":5,\"e\":[{\"f\":5},17],\"i\":{\"l\":18}},\"s\":24,\"t\":{\"i\":{\"o\":{\"n\":115}}},\"u\":{\"t\":0},\"v\":{\"a\":{\"i\":4},\"e\":{\"l\":11}},\"z\":{\"i\":{\"e\":4}},\"d\":{\"i\":{\"g\":127,\"o\":{\"g\":249}}},\"o\":{\"r\":2}},\"b\":[{\"a\":{\"b\":21,\"g\":21},\"i\":[{\"f\":0,\"n\":[{\"e\":19,\"g\":{\".\":4,\"e\":284}},24]},8],\"o\":1},29],\"c\":[{\"e\":[{\"n\":17},24],\"h\":{\"a\":23,\"e\":{\"r\":0}},\"i\":{\"b\":90,\"t\":1},\"u\":{\"m\":12}},29],\"d\":{\"a\":{\"l\":21},\"i\":[{\"a\":0,\"e\":{\"r\":0},\"n\":[{\"g\":3},17]},9]},\"e\":{\".\":25,\"a\":{\"l\":2,\"n\":3,\"r\":{\"r\":4},\"v\":32,\"w\":1},\"b\":{\"r\":{\"a\":{\"t\":19}}},\"c\":{\"o\":{\"l\":{\"l\":5},\"m\":{\"p\":{\"e\":5}}},\"r\":{\"e\":1},\"i\":{\"p\":{\"r\":285}},\"t\":{\"a\":{\"n\":{\"g\":286}}}},\"d\":[{\"e\":2,\"i\":{\"s\":3,\"t\":5}},37],\"f\":{\"a\":{\"c\":1},\"e\":[{\"r\":{\".\":4}},9],\"i\":3,\"y\":1},\"g\":{\"i\":{\"s\":11}},\"i\":{\"t\":4},\"l\":{\"i\":2,\"u\":4},\"n\":{\"t\":{\"a\":90,\"e\":0}},\"o\":2,\"p\":{\"i\":{\"n\":4},\"o\":{\"s\":{\"i\":1}},\"u\":2},\"r\":[{\"i\":21,\"o\":17,\"u\":4},147],\"s\":{\".\":21,\"p\":{\"i\":1},\"s\":{\"i\":{\"b\":6}},\"t\":[{\"a\":{\"l\":4},\"r\":3},8]},\"t\":{\"e\":{\"r\":1},\"i\":{\"z\":96},\"r\":{\"i\":[{\"b\":{\"u\":85}},3]}},\"u\":[{\"t\":{\"i\":4}},8],\"v\":[{\"a\":{\"l\":1},\"e\":{\"l\":11,\"r\":{\".\":30,\"s\":4,\"t\":4}},\"i\":{\"l\":4},\"o\":{\"l\":{\"u\":5}}},8],\"w\":{\"h\":1}},\"f\":[{\"u\":0,\"y\":21},29],\"g\":[{\"e\":{\"r\":3,\"t\":23},\"i\":{\"c\":23,\"n\":[{\"g\":3},0],\"s\":19,\"t\":19},\"l\":29,\"o\":{\"n\":0},\"u\":23},9],\"h\":[{\".\":18,\"a\":{\"l\":18}},1],\"i\":{\"a\":[{\"b\":0,\"g\":1,\"l\":{\".\":23}},3],\"b\":[{\"a\":11},21],\"c\":{\"a\":{\"s\":5},\"e\":21,\"i\":[{\"d\":32,\"e\":1},18],\"o\":21},\"d\":{\"e\":{\"r\":5}},\"e\":{\"n\":{\"c\":3,\"t\":3},\"r\":2,\"t\":4},\"g\":{\"a\":{\"n\":5},\"i\":32},\"l\":{\"i\":{\"z\":11}},\"m\":{\"a\":{\"n\":32},\"i\":5,\"o\":27,\"p\":{\"e\":0}},\"n\":{\"a\":[{\".\":32},24],\"d\":0,\"e\":0,\"g\":0},\"o\":2,\"p\":{\"h\":[{\"e\":6},32],\"l\":[{\"i\":{\"c\":5}},9]},\"q\":21,\"s\":[{\".\":21,\"c\":0,\"h\":23,\"p\":0},24],\"t\":{\"a\":{\"b\":116},\"e\":{\"d\":{\".\":19},\"r\":{\".\":5,\"s\":5}},\"i\":{\"c\":11},\"u\":[{\"r\":5},9]},\"v\":{\"e\":{\"l\":5,\"t\":11},\"i\":11,\"o\":{\"l\":287}}},\"j\":23,\"k\":{\"e\":{\"t\":23},\"l\":{\"e\":1,\"i\":{\"n\":1}},\".\":288,\"h\":{\"o\":2},\"r\":{\"a\":{\"u\":29}},\"s\":{\".\":288}},\"l\":[{\"e\":[{\"d\":24,\"q\":{\"u\":30}},0],\"i\":{\"g\":21,\"s\":[{\"h\":4},21]},\"o\":73},29],\"m\":[{\"a\":{\"c\":5},\"e\":[{\"n\":23,\"r\":{\"s\":4}},24],\"i\":{\"n\":{\"g\":[{\".\":21},3]},\"o\":21,\"t\":23},\"y\":21},29],\"n\":{\"a\":{\"r\":21},\"e\":{\"l\":23,\"r\":21,\"t\":19,\"y\":23},\"i\":{\"c\":19,\"s\":92,\"t\":23,\"v\":23},\"o\":[{\"u\":21},0],\"u\":23},\"o\":{\"b\":{\"l\":11,\"o\":{\"t\":289}},\"c\":[{\"r\":3},24],\"e\":[{\"l\":{\"a\":{\"s\":167}},\"p\":{\"i\":{\"d\":{\"e\":290}}}},1],\"f\":{\"e\":2,\"i\":{\"l\":4}},\"k\":[{\"e\":{\"r\":4}},8],\"l\":{\"e\":{\".\":32}},\"m\":{\"e\":{\"t\":{\"e\":5},\"s\":{\"h\":3}},\"i\":0,\"p\":0},\"n\":{\"a\":{\"l\":0},\"e\":0,\"i\":{\"s\":134},\"t\":{\"a\":0}},\"o\":{\"m\":41,\"t\":32},\"p\":{\"e\":{\"l\":3},\"i\":{\"c\":11}},\"r\":{\"i\":11,\"o\":4},\"s\":{\"p\":{\"e\":{\"r\":5}},\"s\":0},\"t\":{\"h\":{\"e\":1},\"y\":1,\"r\":{\"o\":{\"n\":2}}},\"v\":{\"a\":1,\"e\":{\"l\":5}},\"x\":5},\"p\":[{\"e\":{\"a\":21,\"n\":{\"t\":19},\"r\":{\".\":4},\"t\":23},\"h\":95,\"i\":{\"n\":{\"g\":3}},\"o\":23,\"a\":{\"u\":{\"l\":{\"i\":291}}}},29],\"r\":[{\"e\":{\"c\":0,\"f\":0,\"o\":21,\"s\":{\"t\":0}},\"i\":{\"o\":0,\"v\":0},\"o\":{\"n\":17,\"s\":17},\"y\":{\"s\":17}},72],\"s\":[{\"a\":[{\"t\":{\"i\":5}},29],\"c\":1,\"e\":[{\"c\":[{\"r\":0},23],\"r\":{\".\":4,\"a\":{\"d\":{\"i\":238}}},\"s\":3,\"v\":148},24],\"h\":[{\"a\":19},29],\"i\":[{\"b\":90},29],\"o\":{\"n\":12},\"p\":29,\"w\":19},44],\"t\":{\"a\":{\"c\":{\"h\":36},\"g\":21},\"e\":{\"b\":23,\"n\":{\"d\":17},\"o\":5},\"i\":[{\"b\":4,\"d\":0,\"e\":{\"r\":21},\"g\":23,\"l\":{\"i\":12,\"l\":17,\"y\":21},\"s\":{\"t\":21},\"v\":21},29],\"r\":{\"i\":23,\"o\":{\"p\":{\"h\":115}},\"e\":{\"u\":29}},\"s\":{\"h\":1},\"h\":{\"o\":{\"u\":29}}},\"u\":{\"a\":3,\"e\":{\"l\":93,\"n\":3},\"g\":{\"l\":1},\"i\":{\"n\":3},\"m\":{\"p\":{\"l\":11}},\"n\":[{\"k\":6,\"t\":{\"y\":0}},9],\"s\":{\"c\":19},\"t\":{\"i\":{\"n\":6}}},\"v\":{\"e\":[{\"l\":{\"i\":17},\"n\":23,\"r\":{\".\":4},\"s\":{\"t\":19},\"y\":23,\"i\":{\"l\":29}},1],\"i\":{\"c\":23,\"v\":0},\"o\":23},\"w\":29,\"y\":{\"c\":1,\"n\":{\"g\":{\"e\":32}},\"t\":3},\"z\":{\"s\":{\"c\":2}}},\"s\":{\"a\":[{\"b\":42,\"c\":{\"k\":32,\"r\":{\"i\":11},\"t\":23},\"i\":32,\"l\":{\"a\":{\"r\":36},\"m\":0,\"o\":4,\"t\":0,\"e\":{\"s\":{\"c\":54,\"w\":7}}},\"n\":{\"c\":27,\"d\":{\"e\":0}},\"p\":[{\"a\":{\"r\":{\"i\":{\"l\":292}}}},29],\"t\":{\"a\":4,\"i\":{\"o\":76},\"u\":11},\"u\":0,\"v\":{\"o\":{\"r\":4}},\"w\":32},9],\"b\":56,\"c\":{\"a\":{\"n\":{\"t\":149},\"p\":[{\"e\":{\"r\":267}},0],\"v\":6,\"t\":{\"o\":{\"l\":208}}},\"e\":{\"d\":21,\"i\":18,\"s\":21},\"h\":[{\"o\":21,\"i\":{\"t\":{\"z\":21}},\"r\":{\"o\":{\"d\":{\"i\":{\"n\":{\"g\":293}}}}}},8],\"i\":{\"e\":68,\"n\":{\"d\":150},\"u\":{\"t\":{\"t\":294}}},\"l\":{\"e\":6,\"i\":21},\"o\":{\"f\":17,\"p\":{\"y\":18},\"u\":{\"r\":{\"a\":7}}},\"u\":29,\"r\":{\"a\":{\"p\":{\"e\":{\"r\":{\".\":36}}}}},\"y\":{\"t\":{\"h\":247}}},\"d\":56,\"e\":{\".\":18,\"a\":[{\"s\":17,\"w\":5},1],\"c\":{\"o\":151,\"t\":27},\"d\":[{\"e\":95,\"l\":19},125],\"g\":[{\"r\":11},9],\"i\":32,\"l\":{\"e\":2,\"f\":32,\"v\":32},\"m\":{\"e\":[{\"s\":{\"t\":295}},18],\"o\":{\"l\":1},\"a\":{\"p\":{\"h\":287}},\"i\":{\"t\":{\"i\":{\"c\":296}}}},\"n\":{\"a\":{\"t\":5},\"c\":18,\"d\":0,\"e\":{\"d\":19},\"g\":5,\"i\":{\"n\":19},\"t\":{\"d\":18,\"l\":18}},\"p\":{\"a\":152,\"t\":{\"e\":{\"m\":{\"b\":11}}}},\"r\":{\".\":43,\"l\":21,\"o\":0,\"v\":{\"o\":18}},\"s\":[{\"h\":4,\"t\":5},72],\"u\":{\"m\":113},\"v\":[{\"e\":{\"n\":11}},32],\"w\":{\"i\":0},\"x\":32},\"f\":47,\"g\":48,\"h\":[{\".\":25,\"e\":{\"r\":2,\"v\":32},\"i\":{\"n\":2,\"o\":3,\"p\":27,\"v\":6},\"o\":[{\"l\":{\"d\":4},\"n\":12,\"r\":[{\"t\":7},17],\"e\":{\"s\":{\"t\":137}}},0],\"w\":18},24],\"i\":{\"b\":2,\"c\":{\"c\":19},\"d\":{\"e\":{\".\":27,\"s\":[{\"t\":6,\"w\":6},32],\"d\":{\".\":8}},\"i\":[{\"z\":4},32]},\"g\":{\"n\":{\"a\":18}},\"l\":{\"e\":0,\"y\":18},\"n\":[{\"a\":24,\"e\":{\".\":32},\"g\":23},42],\"o\":[{\"n\":[{\"a\":6},32]},41],\"r\":[{\"a\":5,\"e\":{\"s\":{\"i\":{\"d\":4}}}},9],\"s\":41,\"t\":{\"i\":{\"o\":27}},\"u\":32,\"v\":41,\"z\":32},\"k\":[{\"e\":[{\"t\":23},18],\"i\":{\"n\":{\"e\":4,\"g\":4}},\"y\":{\"s\":{\"c\":15}}},9],\"l\":[{\"a\":{\"t\":23},\"e\":24,\"i\":{\"t\":{\"h\":7}},\"o\":{\"v\":{\"a\":{\"k\":{\"i\":{\"a\":297}}}}}},74],\"m\":[{\"a\":[{\"l\":{\"l\":54},\"n\":12},23],\"e\":{\"l\":17,\"n\":19},\"i\":{\"t\":{\"h\":32}},\"o\":{\"l\":{\"d\":49}}},42],\"n\":72,\"o\":[{\"c\":{\"e\":1},\"f\":{\"t\":12},\"l\":{\"a\":{\"b\":1},\"d\":153,\"i\":{\"c\":3},\"v\":32,\"u\":{\"t\":{\"e\":9}}},\"m\":27,\"n\":{\".\":68,\"a\":17,\"g\":0},\"p\":[{\"h\":{\"i\":{\"c\":32,\"z\":19},\"y\":19}},21],\"r\":{\"c\":5,\"d\":5},\"v\":[{\"i\":4},18],\"g\":{\"a\":{\"m\":{\"y\":298}}}},41],\"p\":{\"a\":[{\"i\":32,\"n\":0,\"c\":{\"e\":299,\"i\":{\"n\":69}}},25],\"e\":{\"n\":{\"d\":17},\"o\":57,\"r\":25,\"c\":{\"i\":{\"o\":11}}},\"h\":{\"e\":[{\"r\":[{\"o\":213},27]},24],\"o\":6},\"i\":{\"l\":17,\"n\":{\"g\":4},\"o\":18,\"c\":{\"i\":{\"l\":208}}},\"l\":{\"y\":21},\"o\":{\"n\":21,\"r\":[{\"t\":{\"s\":{\"c\":300,\"w\":300}}},17],\"t\":18,\"k\":{\"e\":{\"s\":{\"w\":10}}}}},\"q\":{\"u\":{\"a\":{\"l\":{\"l\":36}},\"i\":{\"t\":{\"o\":88}}}},\"r\":29,\"s\":[{\"a\":[{\"s\":12,\"c\":{\"h\":{\"u\":301}}},29],\"c\":94,\"e\":{\"l\":23,\"n\":{\"g\":19},\"s\":{\".\":21},\"t\":19},\"i\":[{\"e\":[{\"r\":0},21],\"l\":{\"y\":4},\"a\":{\"n\":{\".\":210}},\"g\":{\"n\":{\"a\":{\"b\":302}}}},29],\"l\":[{\"i\":1},21],\"n\":21,\"p\":{\"e\":{\"n\":{\"d\":115}}},\"t\":9,\"u\":{\"r\":{\"a\":6}},\"w\":4,\"h\":{\"a\":{\"t\":3}}},25],\"t\":{\".\":25,\"a\":{\"g\":24,\"l\":24,\"m\":{\"i\":17,\"p\":69},\"n\":{\"d\":32,\"t\":{\"s\":{\"h\":{\"i\":303}}}},\"p\":90,\"t\":{\".\":32,\"i\":15},\"r\":{\"t\":{\"l\":{\"i\":12}}}},\"e\":{\"d\":21,\"r\":{\"n\":{\"i\":7},\"o\":19},\"w\":[{\"a\":6},8]},\"h\":{\"e\":23},\"i\":[{\".\":21,\"a\":19,\"c\":[{\"k\":32},29],\"e\":21,\"f\":23,\"n\":{\"g\":3},\"r\":32},9],\"l\":{\"e\":29},\"o\":{\"c\":{\"k\":32},\"m\":{\"a\":12},\"n\":{\"e\":32},\"p\":21,\"r\":{\"e\":27,\"a\":{\"b\":304}}},\"r\":[{\"a\":{\"d\":21,\"t\":{\"u\":32,\"a\":{\"g\":305}},\"y\":21},\"i\":{\"d\":21,\"b\":{\"u\":{\"t\":7}}},\"y\":18},1],\"w\":61,\"y\":[{\"l\":{\"i\":{\"s\":137}}},24],\"b\":4,\"s\":{\"c\":{\"r\":4}},\"u\":{\"p\":{\"i\":{\"d\":306}}}},\"u\":[{\"a\":{\"l\":2},\"b\":111,\"g\":151,\"i\":{\"s\":4,\"t\":12},\"l\":21,\"m\":[{\"i\":11},9],\"n\":9,\"r\":9,\"p\":{\"e\":{\"r\":{\"e\":307}}}},41],\"v\":18,\"w\":[{\"o\":18,\"i\":{\"m\":{\"m\":177}}},9],\"y\":[{\"c\":18,\"l\":27,\"n\":{\"o\":5,\"c\":41},\"r\":{\"i\":{\"n\":4}},\"t\":{\"h\":{\"i\":308}}},21]},\"t\":{\"a\":[{\".\":27,\"b\":[{\"l\":{\"e\":{\"s\":4}},\"o\":{\"l\":{\"i\":{\"z\":32,\"s\":{\"m\":309}}}}},25],\"c\":{\"i\":18},\"d\":{\"o\":4},\"f\":46,\"i\":{\"l\":{\"o\":5}},\"l\":[{\"a\":4,\"e\":{\"n\":5},\"i\":11,\"k\":[{\"a\":204},18],\"l\":{\"i\":{\"s\":0}},\"o\":{\"g\":4}},9],\"m\":{\"o\":4,\"i\":{\"n\":82}},\"n\":{\"d\":{\"e\":0},\"t\":{\"a\":54}},\"p\":{\"e\":{\"r\":4},\"l\":4,\"a\":{\"t\":{\"h\":310}}},\"r\":{\"a\":0,\"c\":18,\"e\":18,\"i\":{\"z\":3},\"r\":{\"h\":311}},\"s\":{\"e\":0,\"y\":4},\"t\":{\"i\":{\"c\":18},\"u\":{\"r\":1}},\"u\":{\"n\":17},\"v\":0,\"w\":25,\"x\":{\"i\":{\"s\":0}},\"g\":{\"o\":{\"n\":{\".\":3}}}},41],\"b\":42,\"c\":[{\"h\":[{\"e\":{\"t\":5},\"c\":15,\"i\":{\"e\":{\"r\":237}}},21],\"r\":29},18],\"d\":43,\"e\":{\".\":18,\"a\":{\"d\":{\"i\":17},\"t\":18,\"c\":{\"h\":{\"e\":{\"r\":{\".\":36}}}}},\"c\":{\"e\":17,\"t\":32},\"d\":[{\"i\":4},42],\"e\":41,\"g\":[{\"e\":{\"r\":4},\"i\":4},0],\"l\":{\".\":27,\"i\":17,\"s\":32,\"e\":{\"g\":84,\"r\":{\"o\":249}}},\"m\":{\"a\":[{\"t\":11},154]},\"n\":{\"a\":{\"n\":27},\"c\":27,\"d\":27,\"e\":{\"s\":18},\"t\":[{\"a\":{\"g\":0}},41]},\"o\":41,\"p\":[{\"e\":4},1],\"r\":{\"c\":11,\"d\":155,\"i\":[{\"e\":{\"s\":5},\"s\":11,\"z\":{\"a\":6},\"c\":{\".\":8}},41],\"n\":{\"i\":{\"t\":32}},\"v\":5,\"g\":{\"e\":{\"i\":312}}},\"s\":{\".\":18,\"s\":[{\".\":23,\"e\":{\"s\":313}},18]},\"t\":{\"h\":{\"e\":6}},\"u\":27,\"x\":27,\"y\":18},\"f\":42,\"g\":43,\"h\":{\".\":25,\"a\":{\"n\":17,\"l\":{\"a\":{\"m\":228}}},\"e\":[{\"a\":[{\"s\":3,\"t\":5},18],\"i\":{\"s\":11},\"t\":27},9],\"i\":{\"c\":{\".\":4,\"a\":4},\"l\":18,\"n\":{\"k\":32}},\"l\":18,\"o\":{\"d\":{\"e\":4,\"i\":{\"c\":32},\"o\":{\"n\":11}},\"o\":18,\"r\":{\"i\":{\"t\":6,\"z\":5}},\"g\":{\"e\":{\"n\":{\"i\":314}}},\"k\":{\"e\":{\"r\":175}}},\"s\":25,\"y\":{\"l\":{\"a\":{\"n\":228}},\"s\":{\"c\":11}}},\"i\":{\"a\":[{\"b\":1,\"t\":{\"o\":1},\"n\":{\".\":70}},41],\"b\":156,\"c\":{\"k\":18,\"o\":21,\"u\":157},\"d\":{\"i\":32},\"e\":{\"n\":27},\"f\":[{\"y\":4},8],\"g\":[{\"u\":32},25],\"l\":{\"l\":{\"i\":{\"n\":6}}},\"m\":[{\"p\":18,\"u\":{\"l\":5}},41],\"n\":[{\"a\":24,\"e\":{\".\":27},\"i\":27,\"o\":{\"m\":285}},42],\"o\":[{\"c\":4,\"n\":{\"e\":{\"e\":6}}},41],\"q\":32,\"s\":{\"a\":3,\"e\":27,\"m\":0,\"o\":4,\"p\":0,\"t\":{\"i\":{\"c\":{\"a\":32}}}},\"t\":{\"l\":3},\"u\":1,\"v\":[{\"a\":0},41],\"z\":[{\"a\":3,\"e\":{\"n\":3}},41]},\"l\":[{\"a\":[{\"n\":17},19],\"e\":{\".\":27,\"d\":27,\"s\":{\".\":27},\"t\":{\".\":19}},\"o\":19,\"i\":{\"e\":{\"r\":315}}},25],\"m\":[{\"e\":0},43],\"n\":81,\"o\":[{\"b\":3,\"c\":{\"r\":{\"a\":{\"t\":4}}},\"d\":{\"o\":18},\"f\":25,\"g\":{\"r\":9},\"i\":{\"c\":4},\"m\":{\"a\":9,\"b\":0,\"y\":3},\"n\":{\"a\":{\"l\":{\"i\":0},\"t\":3},\"o\":18,\"y\":18},\"r\":{\"a\":9,\"i\":{\"e\":3,\"z\":5}},\"s\":8,\"u\":{\"r\":32,\"t\":18},\"w\":{\"a\":{\"r\":3}},\"l\":{\"o\":{\"g\":{\"y\":84}}},\"t\":{\"i\":{\"c\":11}}},41],\"p\":43,\"r\":{\"a\":[{\"b\":11,\"c\":{\"h\":5,\"i\":[{\"t\":17},36],\"t\":{\"e\":17}},\"s\":17,\"v\":{\"e\":{\"n\":5,\"s\":158,\"r\":{\"s\":[{\"a\":{\"b\":317}},15]}}},\"i\":{\"t\":{\"o\":{\"r\":316}}}},41],\"e\":{\"f\":5,\"m\":[{\"i\":6},0],\"a\":{\"c\":{\"h\":{\"e\":318}}}},\"i\":{\"a\":[{\"l\":{\".\":1}},32],\"c\":{\"e\":{\"s\":5},\"i\":{\"a\":32},\"s\":18},\"m\":25,\"v\":0},\"o\":{\"m\":{\"i\":5},\"n\":{\"i\":6,\"y\":18},\"p\":{\"h\":{\"e\":5},\"i\":{\"s\":175},\"o\":{\"l\":{\"e\":{\"s\":320},\"i\":{\"s\":320,\"t\":321}}}},\"s\":{\"p\":11},\"v\":11,\"l\":{\"e\":{\"u\":{\"m\":319}}},\"f\":{\"i\":{\"c\":{\".\":17},\"t\":11}}},\"u\":{\"i\":5,\"s\":17}},\"s\":[{\"c\":[{\"h\":{\"i\":{\"e\":12}}},21],\"h\":0,\"w\":21},101],\"t\":[{\"e\":{\"s\":21},\"o\":19,\"u\":0,\"r\":{\"i\":{\"b\":{\"u\":{\"t\":322}}}}},66],\"u\":[{\"a\":[{\"r\":3},2],\"b\":{\"i\":1},\"d\":8,\"e\":18,\"f\":46,\"i\":76,\"m\":27,\"n\":{\"i\":{\"s\":1}},\"p\":{\".\":48},\"r\":{\"e\":27,\"i\":[{\"s\":11},32],\"o\":5,\"y\":4,\"n\":{\"a\":{\"r\":12}}},\"s\":27},41],\"v\":18,\"w\":[{\"a\":43,\"i\":{\"s\":17},\"o\":18,\"h\":29},1],\"y\":[{\"a\":18,\"l\":25,\"p\":{\"e\":12,\"h\":4,\"a\":{\"l\":64}}},41],\"z\":[{\"e\":1},18]},\"u\":{\"a\":{\"b\":18,\"c\":0,\"n\":{\"a\":4,\"i\":0},\"r\":{\"a\":{\"n\":{\"t\":5}},\"d\":8,\"i\":11,\"t\":11},\"t\":29,\"v\":0,\"d\":{\"r\":{\"a\":{\"t\":{\"i\":3,\"u\":15}}}}},\"b\":{\"e\":[{\"l\":21,\"r\":[{\"o\":21},23]},1],\"i\":[{\"n\":{\"g\":33}},72],\"l\":{\"e\":{\".\":23}}},\"c\":{\"a\":23,\"i\":{\"b\":0,\"t\":1},\"l\":{\"e\":12},\"r\":23,\"u\":23,\"y\":21},\"d\":{\"d\":4,\"e\":{\"r\":3,\"s\":{\"t\":4},\"v\":17},\"i\":{\"c\":29,\"e\":{\"d\":3,\"s\":3},\"s\":4,\"t\":19},\"o\":{\"n\":[{\"y\":232},21]},\"s\":{\"i\":1},\"u\":21},\"e\":{\"n\":{\"e\":21,\"s\":17,\"t\":{\"e\":0}},\"r\":{\"i\":{\"l\":0}},\"a\":{\"m\":15}},\"f\":{\"a\":27,\"l\":23},\"g\":{\"h\":{\"e\":{\"n\":11}},\"i\":{\"n\":4}},\"i\":[{\"l\":{\"i\":{\"z\":5}},\"n\":[{\"g\":29},1],\"r\":{\"m\":0},\"t\":{\"a\":17},\"v\":[{\"e\":{\"r\":{\".\":0}}},11]},156],\"j\":19,\"k\":18,\"l\":{\"a\":[{\"b\":5,\"t\":{\"i\":19}},29],\"c\":{\"h\":[{\"e\":32},17]},\"d\":{\"e\":{\"r\":3}},\"e\":[{\"n\":29},1],\"g\":{\"i\":1},\"i\":[{\"a\":19,\"n\":{\"g\":3},\"s\":{\"h\":4}},9],\"l\":{\"a\":{\"r\":1},\"i\":{\"b\":96,\"s\":1}},\"m\":61,\"o\":72,\"s\":[{\"e\":{\"s\":5}},18],\"t\":{\"i\":2,\"r\":{\"a\":54},\"u\":18},\"u\":[{\"l\":4},23],\"v\":4},\"m\":{\"a\":{\"b\":4},\"b\":{\"i\":1,\"l\":{\"y\":1}},\"i\":[{\"n\":{\"g\":83}},29],\"o\":{\"r\":{\"o\":6}},\"p\":9},\"n\":{\"a\":{\"t\":17},\"e\":[{\"r\":1},24],\"i\":[{\"m\":1,\"n\":24,\"s\":{\"h\":4},\"v\":11},29],\"s\":[{\"w\":1},93],\"t\":{\"a\":{\"b\":11},\"e\":{\"r\":{\".\":1},\"s\":1}},\"u\":0,\"y\":4,\"z\":4},\"o\":{\"r\":{\"s\":21},\"s\":19,\"u\":29},\"p\":{\"e\":[{\"r\":{\"s\":6}},29],\"i\":{\"a\":19,\"n\":{\"g\":3}},\"l\":23,\"p\":[{\"o\":{\"r\":{\"t\":10}}},3],\"t\":{\"i\":{\"b\":5},\"u\":17}},\"r\":{\"a\":[{\".\":18,\"g\":21,\"s\":21,\"l\":{\".\":216}},29],\"b\":{\"e\":1},\"c\":0,\"d\":2,\"e\":{\"a\":{\"t\":5}},\"f\":{\"e\":{\"r\":1},\"r\":1},\"i\":{\"f\":[{\"i\":{\"c\":0}},23],\"n\":2,\"o\":23,\"t\":29,\"z\":3,\"a\":{\"l\":{\".\":0}}},\"l\":[{\"i\":{\"n\":{\"g\":{\".\":5}}}},9],\"n\":{\"o\":1},\"o\":{\"s\":17},\"p\":{\"e\":1,\"i\":1},\"s\":{\"e\":{\"r\":5}},\"t\":{\"e\":{\"s\":4},\"h\":{\"e\":3},\"i\":[{\"e\":1},17]},\"u\":23},\"s\":[{\"a\":{\"d\":19,\"n\":19,\"p\":1},\"c\":[{\"i\":3},8],\"e\":{\"a\":5,\"r\":{\".\":9}},\"i\":{\"a\":19,\"c\":23},\"l\":{\"i\":{\"n\":1}},\"p\":2,\"s\":{\"l\":4},\"t\":{\"e\":{\"r\":{\"e\":4}},\"r\":2},\"u\":[{\"r\":17},24]},25],\"t\":{\"a\":{\"b\":0,\"t\":23},\"e\":{\".\":18,\"l\":18,\"n\":[{\"i\":17},18]},\"i\":[{\"l\":{\"i\":{\"z\":5}},\"n\":{\"e\":23,\"g\":3},\"o\":{\"n\":{\"a\":7}},\"s\":21,\"z\":31},101],\"l\":34,\"o\":{\"f\":4,\"g\":5,\"m\":{\"a\":{\"t\":{\"i\":{\"c\":5}}}},\"n\":19,\"u\":21},\"s\":0},\"u\":[{\"m\":1},23],\"v\":74,\"x\":{\"u\":11},\"z\":{\"e\":1}},\"v\":{\"a\":[{\".\":32,\"b\":159,\"c\":{\"i\":{\"l\":5},\"u\":11},\"g\":[{\"e\":1,\"u\":{\"e\":{\"r\":170}}},0],\"l\":{\"i\":{\"e\":4},\"o\":5,\"u\":15},\"m\":{\"o\":4},\"n\":{\"i\":{\"z\":4}},\"p\":{\"i\":4},\"r\":{\"i\":{\"e\":{\"d\":5}}},\"t\":[{\"i\":{\"v\":29}},27],\"u\":{\"d\":{\"e\":{\"v\":54}}}},41],\"e\":{\".\":18,\"d\":18,\"g\":11,\"l\":{\".\":23,\"l\":{\"i\":11},\"o\":1,\"y\":21},\"n\":{\"o\":{\"m\":11},\"u\":{\"e\":19}},\"r\":{\"d\":21,\"e\":{\".\":32,\"l\":[{\"y\":{\".\":41}},21],\"n\":[{\"c\":5},23],\"s\":21,\"i\":{\"g\":324}},\"i\":{\"e\":11},\"m\":{\"i\":{\"n\":36}},\"s\":{\"e\":27},\"t\":{\"h\":11}},\"s\":[{\".\":18,\"t\":{\"e\":0,\"i\":{\"t\":{\"e\":15}}}},99],\"t\":{\"e\":[{\"r\":11},1],\"y\":1}},\"i\":{\"a\":{\"l\":{\"i\":4},\"n\":32},\"d\":{\"e\":{\".\":32,\"d\":32,\"n\":47,\"s\":32},\"i\":32},\"f\":23,\"g\":{\"n\":4},\"k\":0,\"l\":[{\"i\":{\"t\":32,\"z\":127}},25],\"n\":[{\"a\":26,\"c\":24,\"d\":5,\"g\":18},29],\"o\":{\"l\":11,\"r\":73,\"u\":2},\"p\":1,\"r\":{\"o\":4},\"s\":{\"i\":{\"t\":11},\"o\":3,\"u\":3},\"t\":{\"i\":18,\"r\":11,\"y\":18},\"v\":[{\"i\":{\"p\":{\"a\":{\"r\":325}}}},27]},\"o\":{\".\":32,\"i\":[{\"r\":{\"d\":{\"u\":323}},\"c\":{\"e\":{\"p\":213}}},0],\"k\":27,\"l\":{\"a\":1,\"e\":19,\"t\":32,\"v\":27},\"m\":{\"i\":5},\"r\":{\"a\":{\"b\":5},\"i\":17,\"y\":1},\"t\":{\"a\":1,\"e\":{\"e\":18}}},\"v\":26,\"y\":21},\"w\":{\"a\":{\"b\":{\"l\":19},\"c\":25,\"g\":{\"e\":{\"r\":4},\"o\":5},\"i\":{\"t\":6},\"l\":{\".\":19},\"m\":0,\"r\":{\"t\":0},\"s\":{\"t\":[{\"e\":{\"w\":{\"a\":326}}},0]},\"t\":{\"e\":2},\"v\":{\"e\":{\"r\":4,\"g\":327}}},\"b\":29,\"e\":{\"a\":{\"r\":{\"i\":{\"e\":5}},\"t\":{\"h\":54}},\"d\":{\"n\":0},\"e\":{\"t\":12,\"v\":5,\"k\":{\"n\":137}},\"l\":{\"l\":0},\"r\":29,\"s\":{\"t\":12},\"v\":23},\"h\":{\"i\":0},\"i\":[{\"l\":[{\"l\":{\"i\":{\"n\":6}}},8],\"n\":{\"d\":{\"e\":0},\"g\":0},\"r\":0,\"s\":{\"e\":27},\"t\":{\"h\":12},\"z\":5,\"d\":{\"e\":{\"s\":{\"p\":6}}}},9],\"k\":21,\"l\":{\"e\":{\"s\":1},\"i\":{\"n\":3}},\"n\":{\"o\":21},\"o\":[{\"m\":15,\"v\":{\"e\":{\"n\":4}},\"k\":{\"e\":{\"n\":85}}},160],\"p\":19,\"r\":{\"a\":[{\"p\":{\"a\":{\"r\":{\"o\":12}}}},0],\"i\":[{\"t\":{\"a\":36,\"e\":{\"r\":{\".\":183}}}},0]},\"s\":{\"h\":23,\"l\":1,\"p\":{\"e\":1},\"t\":60},\"t\":18,\"y\":1,\"c\":23},\"x\":{\"a\":[{\"c\":{\"e\":5},\"g\":{\"o\":21},\"m\":11,\"p\":21,\"s\":5},29],\"c\":161,\"e\":[{\"c\":{\"u\":{\"t\":{\"o\":1}}},\"d\":24,\"r\":{\"i\":0,\"o\":4}},29],\"h\":[{\"i\":[{\"l\":6},8],\"u\":0},29],\"i\":[{\"a\":4,\"c\":4,\"d\":{\"i\":4},\"m\":{\"e\":21,\"i\":{\"z\":4}}},23],\"o\":[{\"b\":21},23],\"p\":[{\"a\":{\"n\":{\"d\":17}},\"e\":{\"c\":{\"t\":{\"o\":10}},\"d\":11}},23],\"t\":[{\"i\":23},74],\"u\":[{\"a\":3},29],\"x\":1,\"q\":[{\"u\":{\"i\":{\"s\":54}}},29]},\"y\":{\"a\":{\"c\":19,\"r\":110,\"t\":19},\"b\":29,\"c\":[{\"e\":[{\"r\":4},24],\"h\":[{\"e\":[{\"d\":264},0]},23],\"o\":{\"m\":17,\"t\":17}},29],\"d\":29,\"e\":{\"e\":19,\"r\":[{\"f\":21},29],\"s\":[{\"t\":{\"e\":{\"r\":{\"y\":328}}}},0],\"t\":1},\"g\":{\"i\":19},\"h\":47,\"i\":29,\"l\":{\"a\":23,\"l\":{\"a\":{\"b\":{\"l\":6}}},\"o\":23,\"u\":19},\"m\":{\"b\":{\"o\":{\"l\":7}},\"e\":[{\"t\":{\"r\":{\"y\":20}}},0],\"p\":{\"a\":12}},\"n\":{\"c\":{\"h\":{\"r\":3}},\"d\":4,\"g\":4,\"i\":{\"c\":4},\"x\":32},\"o\":[{\"d\":4,\"g\":33,\"m\":0,\"n\":{\"e\":{\"t\":4},\"s\":21},\"s\":21},72],\"p\":{\"e\":{\"d\":21,\"r\":6},\"i\":3,\"o\":[{\"c\":21},23],\"t\":{\"a\":9},\"u\":19},\"r\":{\"a\":{\"m\":5},\"i\":{\"a\":4},\"o\":23,\"r\":1},\"s\":{\"c\":1,\"e\":161,\"i\":{\"c\":{\"a\":3},\"o\":3,\"s\":27},\"o\":21,\"s\":0,\"t\":[{\"a\":3,\"r\":{\"o\":29}},2],\"u\":{\"r\":17}},\"t\":{\"h\":{\"i\":{\"n\":23}},\"i\":{\"c\":3}},\"w\":29},\"z\":{\"a\":[{\"b\":79,\"r\":8},2],\"b\":18,\"e\":[{\"n\":1,\"p\":1,\"r\":[{\"o\":3},29],\"t\":0},25],\"i\":[{\"l\":21,\"s\":21,\"a\":{\"n\":{\".\":23}}},42],\"l\":32,\"m\":18,\"o\":[{\"m\":1,\"o\":{\"l\":4},\"p\":{\"h\":{\"r\":329}}},41],\"t\":{\"e\":0},\"z\":[{\"y\":21,\"w\":231},101]}}',\n [\n \"as-so-ciate\",\n \"as-so-ciates\",\n \"dec-li-na-tion\",\n \"oblig-a-tory\",\n \"phil-an-thropic\",\n \"present\",\n \"presents\",\n \"project\",\n \"projects\",\n \"reci-procity\",\n \"re-cog-ni-zance\",\n \"ref-or-ma-tion\",\n \"ret-ri-bu-tion\",\n \"ta-ble\"\n ]\n ];\n});\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// @generated by enums.py\n\nexport enum Align {\n Auto = 0,\n FlexStart = 1,\n Center = 2,\n FlexEnd = 3,\n Stretch = 4,\n Baseline = 5,\n SpaceBetween = 6,\n SpaceAround = 7,\n}\n\nexport enum Dimension {\n Width = 0,\n Height = 1,\n}\n\nexport enum Direction {\n Inherit = 0,\n LTR = 1,\n RTL = 2,\n}\n\nexport enum Display {\n Flex = 0,\n None = 1,\n}\n\nexport enum Edge {\n Left = 0,\n Top = 1,\n Right = 2,\n Bottom = 3,\n Start = 4,\n End = 5,\n Horizontal = 6,\n Vertical = 7,\n All = 8,\n}\n\nexport enum Errata {\n None = 0,\n StretchFlexBasis = 1,\n All = 2147483647,\n Classic = 2147483646,\n}\n\nexport enum ExperimentalFeature {\n WebFlexBasis = 0,\n AbsolutePercentageAgainstPaddingEdge = 1,\n FixJNILocalRefOverflows = 2,\n}\n\nexport enum FlexDirection {\n Column = 0,\n ColumnReverse = 1,\n Row = 2,\n RowReverse = 3,\n}\n\nexport enum Gutter {\n Column = 0,\n Row = 1,\n All = 2,\n}\n\nexport enum Justify {\n FlexStart = 0,\n Center = 1,\n FlexEnd = 2,\n SpaceBetween = 3,\n SpaceAround = 4,\n SpaceEvenly = 5,\n}\n\nexport enum LogLevel {\n Error = 0,\n Warn = 1,\n Info = 2,\n Debug = 3,\n Verbose = 4,\n Fatal = 5,\n}\n\nexport enum MeasureMode {\n Undefined = 0,\n Exactly = 1,\n AtMost = 2,\n}\n\nexport enum NodeType {\n Default = 0,\n Text = 1,\n}\n\nexport enum Overflow {\n Visible = 0,\n Hidden = 1,\n Scroll = 2,\n}\n\nexport enum PositionType {\n Static = 0,\n Relative = 1,\n Absolute = 2,\n}\n\nexport enum PrintOptions {\n Layout = 1,\n Style = 2,\n Children = 4,\n}\n\nexport enum Unit {\n Undefined = 0,\n Point = 1,\n Percent = 2,\n Auto = 3,\n}\n\nexport enum Wrap {\n NoWrap = 0,\n Wrap = 1,\n WrapReverse = 2,\n}\n\nconst constants = {\n ALIGN_AUTO: Align.Auto,\n ALIGN_FLEX_START: Align.FlexStart,\n ALIGN_CENTER: Align.Center,\n ALIGN_FLEX_END: Align.FlexEnd,\n ALIGN_STRETCH: Align.Stretch,\n ALIGN_BASELINE: Align.Baseline,\n ALIGN_SPACE_BETWEEN: Align.SpaceBetween,\n ALIGN_SPACE_AROUND: Align.SpaceAround,\n DIMENSION_WIDTH: Dimension.Width,\n DIMENSION_HEIGHT: Dimension.Height,\n DIRECTION_INHERIT: Direction.Inherit,\n DIRECTION_LTR: Direction.LTR,\n DIRECTION_RTL: Direction.RTL,\n DISPLAY_FLEX: Display.Flex,\n DISPLAY_NONE: Display.None,\n EDGE_LEFT: Edge.Left,\n EDGE_TOP: Edge.Top,\n EDGE_RIGHT: Edge.Right,\n EDGE_BOTTOM: Edge.Bottom,\n EDGE_START: Edge.Start,\n EDGE_END: Edge.End,\n EDGE_HORIZONTAL: Edge.Horizontal,\n EDGE_VERTICAL: Edge.Vertical,\n EDGE_ALL: Edge.All,\n ERRATA_NONE: Errata.None,\n ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,\n ERRATA_ALL: Errata.All,\n ERRATA_CLASSIC: Errata.Classic,\n EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,\n EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE: ExperimentalFeature.AbsolutePercentageAgainstPaddingEdge,\n EXPERIMENTAL_FEATURE_FIX_JNILOCAL_REF_OVERFLOWS: ExperimentalFeature.FixJNILocalRefOverflows,\n FLEX_DIRECTION_COLUMN: FlexDirection.Column,\n FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,\n FLEX_DIRECTION_ROW: FlexDirection.Row,\n FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,\n GUTTER_COLUMN: Gutter.Column,\n GUTTER_ROW: Gutter.Row,\n GUTTER_ALL: Gutter.All,\n JUSTIFY_FLEX_START: Justify.FlexStart,\n JUSTIFY_CENTER: Justify.Center,\n JUSTIFY_FLEX_END: Justify.FlexEnd,\n JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,\n JUSTIFY_SPACE_AROUND: Justify.SpaceAround,\n JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,\n LOG_LEVEL_ERROR: LogLevel.Error,\n LOG_LEVEL_WARN: LogLevel.Warn,\n LOG_LEVEL_INFO: LogLevel.Info,\n LOG_LEVEL_DEBUG: LogLevel.Debug,\n LOG_LEVEL_VERBOSE: LogLevel.Verbose,\n LOG_LEVEL_FATAL: LogLevel.Fatal,\n MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,\n MEASURE_MODE_EXACTLY: MeasureMode.Exactly,\n MEASURE_MODE_AT_MOST: MeasureMode.AtMost,\n NODE_TYPE_DEFAULT: NodeType.Default,\n NODE_TYPE_TEXT: NodeType.Text,\n OVERFLOW_VISIBLE: Overflow.Visible,\n OVERFLOW_HIDDEN: Overflow.Hidden,\n OVERFLOW_SCROLL: Overflow.Scroll,\n POSITION_TYPE_STATIC: PositionType.Static,\n POSITION_TYPE_RELATIVE: PositionType.Relative,\n POSITION_TYPE_ABSOLUTE: PositionType.Absolute,\n PRINT_OPTIONS_LAYOUT: PrintOptions.Layout,\n PRINT_OPTIONS_STYLE: PrintOptions.Style,\n PRINT_OPTIONS_CHILDREN: PrintOptions.Children,\n UNIT_UNDEFINED: Unit.Undefined,\n UNIT_POINT: Unit.Point,\n UNIT_PERCENT: Unit.Percent,\n UNIT_AUTO: Unit.Auto,\n WRAP_NO_WRAP: Wrap.NoWrap,\n WRAP_WRAP: Wrap.Wrap,\n WRAP_WRAP_REVERSE: Wrap.WrapReverse,\n}\nexport default constants","\nvar loadYoga = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(loadYoga) {\n loadYoga = loadYoga || {};\n\n\nvar h;h||(h=typeof loadYoga !== 'undefined' ? loadYoga : {});var ba,ca;h.ready=new Promise(function(a,b){ba=a;ca=b});var da=Object.assign({},h),q=\"\";\"undefined\"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);0!==q.indexOf(\"blob:\")?q=q.substr(0,q.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):q=\"\";var ea=h.print||console.log.bind(console),v=h.printErr||console.warn.bind(console);Object.assign(h,da);da=null;var w;h.wasmBinary&&(w=h.wasmBinary);\nvar noExitRuntime=h.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&x(\"no native wasm support detected\");var fa,ha=!1;function ia(a,b,c){c=b+c;for(var d=\"\";!(b>=c);){var e=a[b++];if(!e)break;if(e&128){var f=a[b++]&63;if(192==(e&224))d+=String.fromCharCode((e&31)<<6|f);else{var g=a[b++]&63;e=224==(e&240)?(e&15)<<12|f<<6|g:(e&7)<<18|f<<12|g<<6|a[b++]&63;65536>e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}\nvar ja,ka,z,A,la,C,D,ma,na;function oa(){var a=fa.buffer;ja=a;h.HEAP8=ka=new Int8Array(a);h.HEAP16=A=new Int16Array(a);h.HEAP32=C=new Int32Array(a);h.HEAPU8=z=new Uint8Array(a);h.HEAPU16=la=new Uint16Array(a);h.HEAPU32=D=new Uint32Array(a);h.HEAPF32=ma=new Float32Array(a);h.HEAPF64=na=new Float64Array(a)}var pa,qa=[],ra=[],sa=[];function ta(){var a=h.preRun.shift();qa.unshift(a)}var E=0,ua=null,F=null;\nfunction x(a){if(h.onAbort)h.onAbort(a);a=\"Aborted(\"+a+\")\";v(a);ha=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");ca(a);throw a;}function va(a){return a.startsWith(\"data:application/octet-stream;base64,\")}var G;G=\"data:application/octet-stream;base64,AGFzbQEAAAABvgM4YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gAABgA39/fABgAX8BfGADf399AX1gBX9/f39/AX9gAn9/AXxgAAF/YAZ/f31/fX8AYAR/f39/AX9gAn9/AX1gBn9/f39/fwF/YAV/f39/fwBgBH9/f38AYAN/fn8BfmAHf39/f39/fwBgBn9/f39/fwBgAn19AX1gAX0Bf2ABfwF9YAZ/fH9/f38Bf2ACf30AYAR/fHx/AGAIf39/f39/f38AYA1/f39/f39/f39/f39/AGAKf39/f39/f39/fwBgBX9/f39/AXxgBH9/fX0BfWAEfHx/fwF9YA5/fX1/f399fX9/f39/fwF/YAZ/f319f38AYAJ+fwF/YAR/fX1/AX1gA399fQF9YAF8AXxgBH98fHwAYAV/f319fQF9YA5/fX1/f399fX9/f39/fwBgB39/fX99f38AYA1/fX99f31/fX19fX1/AX9gBX9/fX19AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfWADf39/AXxgBH9/f3wAYAN/f30AYAZ/f31/fX8BfwKvAR0BYQFhAB0BYQFiAAMBYQFjABUBYQFkABIBYQFlAAcBYQFmAB4BYQFnAAABYQFoAB8BYQFpAAMBYQFqAAABYQFrABYBYQFsAAUBYQFtAAMBYQFuAAEBYQFvABYBYQFwAAYBYQFxAAABYQFyAAABYQFzACABYQF0ABMBYQF1AAsBYQF2ABUBYQF3AAIBYQF4AAMBYQF5AA8BYQF6AAIBYQFBAAEBYQFCABIBYQFDAAEDgwKBAgIXChAQCgoKIQIDEgAGBgcBBRgiGAYPCgMGIwMDBSQDGSUBDwoZAwMKAgUAAAIDAQMGAgcBCAwAFygHAAUAKQIBKistAwMGAgECAAEuCgUKLwcFEwIwCzECBwIAAgEGEwECAgEFAQAHAQURAQEBAQgIAQEAAg0CAgIFAQEBGwMNAQEBCwsGFAIBGhQGAgcCDgAAAAUyMzQMBQYINQUCAwUNDQ02AgMCAgIDBgICNwIMDAwBCQkJCQkJHAIAAAABAA4BBQICAQMCEAMMCQEBAQEBAQkJAQICAwICAgICAgMCCAEICAgEBAQEBAQEBAQABAQABAQEBAAEBAQBAQEICAEBBAcBcAHXAdcBBQcBAYACgIACBg0CfwFB8L8EC38BQQALByQIAUQCAAFFAFcBRgCrAQFHAKoBAUgASgFJAQABSgApAUsAoQEJ+QIBAEEBC9YBoAGmAaUBJp8BngGdASYmJiYmJt0B2gGEAcsBSMoByQEmJkiDAYIBgQHIAccBxgHFAUiAAcQBJiZIgwGCAYEBwwHCAcEBWn+cAX1amwF8mgHAAZkBNZgBNZcBlgF7lQE6lAE6kwG/AVS+AVS9AVRTUrwBuwG6AVh/kgG5AZEBfViQAYABjwE1jgE1jQG4AYwBiwGKAYkBiAGdApwCmwKaApkCmAKXApYCtwGVApQCkwKSApECkAKPAo4CjQKMAosCigKJAogChwKGAoUChAKDAoICgQKAAv8B/QH8ATr7AbYB+gH5AfgB9wH2AfUB9AHxAbUB8AG0Ae8B7gHtAewB6wHqAekB6AHnAbMB8wHyAeYB5QGyAeMBfOIBNeEBOuABOt8Be+QBOv4BNd4BNdwB2wE12QHYAdcBOtYBsQHVAdQB0wHSAdEB0AHPAbABzgHNAcwBU1JTUnZ3rQGsAXhuea8BrgF4qQGoAacBpAGjAaIBbgrrvQOBAjIBAX8gAEEBIAAbIQACQANAIAAQSiIBDQFB6D8oAgAiAQRAIAERBwAMAQsLEAQACyABCy8AIAAgACABlyABvEH/////B3FBgICA/AdLGyABIAC8Qf////8HcUGAgID8B00bC6gBAgF9AX8gAEEsaiEAIAFBAnRBwCFqKAIAIQQCQAJ/IAFBfnFBAkYEQCAAQQQgBEGPnrz8BxAzDAELIAAgBEGPnrz8BxAyCyIBQfDhg/wHRwRAIAFBj568/AdGIAFBqtWq/QdGcg0BIAG+IgMgA1wEQEMAAMB/DwsgAUH/////e3FBgICAgAJqviEDIAFBgICAgARxRQ0BCyADIAKUQwrXIzyUIQMLIAMLogECAX8BfSAAQZgBaiEAIAFBAnRBwCFqKAIAIQICfUMAAAAAAn8gAUF+cUECRgRAIABBBCACQY+evPwHEDMMAQsgACACQY+evPwHEDILIgFB8OGD/AdGDQAaQwAAAAAgAUGPnrz8B0YNABoCQCABQarVqv0HRg0AIAG+IgMgA1wNACABQf////97cUGAgICAAmq+DAELQwAAwH8LQwAAAAAQHguiAQIBfwF9IABBmAFqIQAgAUECdEHQIWooAgAhAgJ9QwAAAAACfyABQX5xQQJGBEAgAEEFIAJBj568/AcQMwwBCyAAIAJBj568/AcQMgsiAUHw4YP8B0YNABpDAAAAACABQY+evPwHRg0AGgJAIAFBqtWq/QdGDQAgAb4iAyADXA0AIAFB/////3txQYCAgIACar4MAQtDAADAfwtDAAAAABAeC6gBAgF9AX8gAEEsaiEAIAFBAnRB0CFqKAIAIQQCQAJ/IAFBfnFBAkYEQCAAQQUgBEGPnrz8BxAzDAELIAAgBEGPnrz8BxAyCyIBQfDhg/wHRwRAIAFBj568/AdGIAFBqtWq/QdGcg0BIAG+IgMgA1wEQEMAAMB/DwsgAUH/////e3FBgICAgAJqviEDIAFBgICAgARxRQ0BCyADIAKUQwrXIzyUIQMLIAMLggICA30BfyAAQfQAaiEGIAFBAnRB0CFqKAIAIQACQAJAAkACQAJ/IAFBfnFBAkYEQCAGQQUgAEGPnrz8BxAzDAELIAYgAEGPnrz8BxAyCyIBQfDhg/wHRgRADAELIAFBj568/AdGDQNB8CEhAAJAIAFBqtWq/QdHBEAgAb4iBCAEWw0BQfghIQALIAAqAgAhA0MAAMB/IQQgACgCBEEBaw4CAgEDCyABQf////97cUGAgICAAmq+IQMgAUGAgICABHFFDQELIAMgApRDCtcjPJQhAwsgA0MAAAAAYARAIAMPCyADIQQgA0MAAAAAXQ0BCyAEQwAAAAAgBCAEWxshBQsgBQuCAgIDfQF/IABB9ABqIQYgAUECdEHAIWooAgAhAAJAAkACQAJAAn8gAUF+cUECRgRAIAZBBCAAQY+evPwHEDMMAQsgBiAAQY+evPwHEDILIgFB8OGD/AdGBEAMAQsgAUGPnrz8B0YNA0HwISEAAkAgAUGq1ar9B0cEQCABviIEIARbDQFB+CEhAAsgACoCACEDQwAAwH8hBCAAKAIEQQFrDgICAQMLIAFB/////3txQYCAgIACar4hAyABQYCAgIAEcUUNAQsgAyAClEMK1yM8lCEDCyADQwAAAABgBEAgAw8LIAMhBCADQwAAAABdDQELIARDAAAAACAEIARbGyEFCyAFC4cFAgJ9AX8CQAJAAkACQAJAAkAgAUEBTQRAAkAgACgC1AEiAUHw4YP8B0YNACABQY+evPwHRg0CQfAhIQYCQCABQarVqv0HRwRAIAG+IgUgBVsNAUH4ISEGCyAGKgIAIQRDAADAfyEFIAYoAgRBAWsOAgMBBAsgAUH/////e3FBgICAgAJqviEEIAFBgICAgARxRQ0CCyAEIAOUQwrXIzyUIQUMAgsCQAJAAkAgACgC0AEiAUHw4YP8B0YNACABQY+evPwHRg0BQfAhIQYCQCABQarVqv0HRwRAIAG+IgUgBVsNAUH4ISEGCyAGKgIAIQRDAADAfyEFIAYoAgRBAWsOAgIBAwsgAUH/////e3FBgICAgAJqviEEIAFBgICAgARxRQ0BCyAEIAOUQwrXIzyUIQUMAQsgBCEFC0MAAAAAIQQCQCAAKALYASIAQfDhg/wHRg0AIABBj568/AdGDQRB8CEhAQJAIABBqtWq/QdHBEAgAL4iBCAEWw0BQfghIQELIAEqAgAhBCABKAIEQQFrDgIEAQYLIABB/////3txQYCAgIACar4hBCAAQYCAgIAEcUUNAwsgBCADlEMK1yM8lCEEDAILIAQhBQtDAAAAACEEAkAgACgC3AEiAEHw4YP8B0YNACAAQY+evPwHRg0CQfAhIQECQCAAQarVqv0HRwRAIAC+IgQgBFsNAUH4ISEBCyABKgIAIQQgASgCBEEBaw4CAgEECyAAQf////97cUGAgICAAmq+IQQgAEGAgICABHFFDQELIAQgA5RDCtcjPJQhBAsgBEMAAAAAYEUNAQsgAiAEXg0BCyAFQwAAAABgRQRAIAIPCyAFIAIgAiAFXRshBAsgBAsEACAAC74BAQN/IAAtAABBIHFFBEACQCABIQMCQCACIAAiASgCECIABH8gAAUgARB+DQEgASgCEAsgASgCFCIFa0sEQCABIAMgAiABKAIkEQYAGgwCCwJAIAEoAlBBAEgNACACIQADQCAAIgRFDQEgAyAEQQFrIgBqLQAAQQpHDQALIAEgAyAEIAEoAiQRBgAgBEkNASADIARqIQMgAiAEayECIAEoAhQhBQsgBSADIAIQKxogASABKAIUIAJqNgIUCwsLC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siA0GAAiADQYACSSIBGxAqGiABRQRAA0AgACAFQYACECcgA0GAAmsiA0H/AUsNAAsLIAAgBSADECcLIAVBgAJqJAALzAIBBX8gAARAIABBBGsiASgCACIFIQMgASECIABBCGsoAgAiACAAQX5xIgRHBEAgASAEayICKAIEIgAgAigCCDYCCCACKAIIIAA2AgQgBCAFaiEDCyABIAVqIgQoAgAiASABIARqQQRrKAIARwRAIAQoAgQiACAEKAIINgIIIAQoAgggADYCBCABIANqIQMLIAIgAzYCACADQXxxIAJqQQRrIANBAXI2AgAgAgJ/IAIoAgBBCGsiAUH/AE0EQCABQQN2QQFrDAELIAFBHSABZyIAa3ZBBHMgAEECdGtB7gBqIAFB/x9NDQAaQT8gAUEeIABrdkECcyAAQQF0a0HHAGoiACAAQT9PGwsiAUEEdCIAQdAuajYCBCACIABB2C5qIgAoAgA2AgggACACNgIAIAIoAgggAjYCBEHYNkHYNikDAEIBIAGthoQ3AwALC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRrIAE2AgAgAkEYayABNgIAIAJBHGsgATYCACAEIANBBHFBGHIiBGsiAkEgSQ0AIAGtQoGAgIAQfiEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAAC4AEAQN/IAJBgARPBEAgACABIAIQFyAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsOAEHILigCABEHABBQAAuXAgEDfyMAQRBrIgQkACAEIAE2AgwCQAJAIABFBEAgBCgCDCEBDAELIAQoAgwhASAAKAK4BCICRQ0AIAIoAgQhAyACLQAIQQhxBEAgAiAAQQVBAEG8ISABIAMREQAaDAILIAIgAEEFQbwhIAEgAxELABoMAQsCQEHoNi0AAEUEQEEcEB0iAkKAgID8AzcCFCACQgA3AgwgAkEANgIAIAJBADoACEEBIQMgAkEBNgIEQeQ2IAI2AgBB6DZBAToAAEHgNkHgNigCAEEBajYCAAwBC0HkNigCACICKAIEIQMgAi0ACEEIcUUNACACIABBBUEAQbwhIAEgAxERABoMAQsgAiAAQQVBvCEgASADEQsAGgsgBEEQaiQAC3cCAX8BfSAAQdAAaiEAIAFBAnRBwCFqKAIAIQICfyABQX5xQQJGBEAgAEEEIAJBgICA/gcQMwwBCyAAIAJBgICA/gcQMgshAUEBIQAgAUHw4YP8B0YgAUGPnrz8B0ZyIAFBqtWq/QdGcgR/IAAFIAG+IgMgA1sLC2oBAX0Cf0GAgID+ByAAi0MAAIB/WyAAIABccg0AGkGPnrz8ByAAQwAAACBdIABDAAAAoF5xIABDAAAAAFtyDQAaQ////18gAJgiASABIAAgAEP////fXRsgAEP///9fXhu8QYCAgIACawsLoAICAXwBfwJAIAAgAaIiABBWIgREAAAAAAAA8D+gIAQgBEQAAAAAAAAAAGMbIgQgBGIiBSAEmUQtQxzr4jYaP2NFckUEQCAAIAShIQAMAQsCQCAEIARiBEAgACAEoSEADAELIAAgBKEhACAERAAAAAAAAPC/oJlELUMc6+I2Gj9jRQ0AIABEAAAAAAAA8D+gIQAMAQsgAgRAIABEAAAAAAAA8D+gIQAMAQsgAw0AIAACfEQAAAAAAAAAACAFDQAaRAAAAAAAAPA/IAREAAAAAAAA4D9kDQAaRAAAAAAAAPA/RAAAAAAAAAAAIAREAAAAAAAA4L+gmUQtQxzr4jYaP2MbC6AhAAsgACAAYiABIAFicgRAQwAAwH8PCyAAIAGjtgtxAQF9An9BgICA/gcgAItDAACAf1sgACAAXHINABpB8OGD/AcgAEMAAAAgXSAAQwAAAKBecSAAQwAAAABbcg0AGkP//39fIACYIgEgASAAIABD//9/310bIABD//9/X14bvEGAgICAAmtBgICAgARyCwujAQEBfQJAIAAgAUECdGooAgAiAUHw4YP8B0YgAUGPnrz8B0ZyIAFBqtWq/QdGcg0AIAG+IgMgA1sNACAAKAIcIgFB8OGD/AdGIAFBj568/AdGciABQarVqv0HRnINACABviIDIANbDQAgACgCICIAQfDhg/wHRiAAQY+evPwHRnIgAEGq1ar9B0ZyRQRAIAIhASAAviIDIANcDQELIAAhAQsgAQvXAQEBfQJAIAAgAUECdGooAgAiAUHw4YP8B0YgAUGPnrz8B0ZyIAFBqtWq/QdGcg0AIAG+IgQgBFsNACAAIAJBAnRqKAIAIgFB8OGD/AdGIAFBj568/AdGciABQarVqv0HRnINACABviIEIARbDQAgACgCGCIBQfDhg/wHRiABQY+evPwHRnIgAUGq1ar9B0ZyDQAgAb4iBCAEWw0AIAAoAiAiAEHw4YP8B0YgAEGPnrz8B0ZyIABBqtWq/QdGckUEQCADIQEgAL4iBCAEXA0BCyAAIQELIAEL1AECAn0BfyAAQdAAaiEAIAFBAnRBwCFqKAIAIQUCQAJAAkACfyABQX5xQQJGBEAgAEEEIAVBj568/AcQMwwBCyAAIAVBj568/AcQMgsiAUHw4YP8B0YNACABQY+evPwHRg0CQfAhIQACQCABQarVqv0HRwRAIAG+IgMgA1sNAUH4ISEACyAAKgIAIQNDAADAfyEEIAAoAgRBAWsOAgMBAgsgAUH/////e3FBgICAgAJqviEDIAFBgICAgARxRQ0CCyADIAKUQwrXIzyUIQQLIAQPCyADCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRAQAL6AIBAn8CQCAAIAFGDQAgASAAIAJqIgRrQQAgAkEBdGtNBEAgACABIAIQKw8LIAAgAXNBA3EhAwJAAkAgACABSQRAIAMEQCAAIQMMAwsgAEEDcUUEQCAAIQMMAgsgACEDA0AgAkUNBCADIAEtAAA6AAAgAUEBaiEBIAJBAWshAiADQQFqIgNBA3ENAAsMAQsCQCADDQAgBEEDcQRAA0AgAkUNBSAAIAJBAWsiAmoiAyABIAJqLQAAOgAAIANBA3ENAAsLIAJBA00NAANAIAAgAkEEayICaiABIAJqKAIANgIAIAJBA0sNAAsLIAJFDQIDQCAAIAJBAWsiAmogASACai0AADoAACACDQALDAILIAJBA00NAANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIAJBBGsiAkEDSw0ACwsgAkUNAANAIAMgAS0AADoAACADQQFqIQMgAUEBaiEBIAJBAWsiAg0ACwsgAAvmBwIEfQZ/An8CQCAALQAEQQRxBEAgACgCuAIgDUcNAQtBACAAKAK8AiADRg0BGgsgAEKAgID8i4CAwL9/NwKcBCAAQgA3ApQEIABCgICA/IuAgMC/fzcCjAQgAEEANgLAAkEBCyEVIAxBAWohFgJAAkACQAJAIAAoAggEQCAAQQIgBhAfIQ4gAEECIAYQIiEPIABBACAGEB8hECAAQQAgBhAiIREgBCABIAUgAiAAKAKUBCAAQYwEaiIMKgIAIAAoApgEIAAqApAEIAAqApwEIAAqAqAEIA4gD5IiDiAQIBGSIg8gChBgDQIgACgCwAIiE0UNASAAQcQCaiEUA0AgBCABIAUgAiAUIBJBGGxqIgwoAgggDCoCACAMKAIMIAwqAgQgDCoCECAMKgIUIA4gDyAKEGANAyATIBJBAWoiEkcNAAsMAQsgCEUEQCAAKALAAiIXRQ0BIABBxAJqIRMDQAJAAkAgEyASQRhsIhRqIgwqAgAiDiAOXCABIAFcckUEQCAOIAGTi0MXt9E4XQ0BDAILIA4gDlsgASABW3INAQsCQCATIBRqIhQqAgQiDiAOXCACIAJcckUEQCAOIAKTi0MXt9E4XQ0BDAILIA4gDlsgAiACW3INAQsgFCgCCCAERw0AIBQoAgwgBUYNBAsgEkEBaiISIBdHDQALDAELAkAgAEGMBGoiDCoCACIOIA5cIAEgAVxyRQRAIA4gAZOLQxe30ThdDQEMAgsgDiAOWyABIAFbcg0BCyAMQQAgACgCmAQgBUYbQQAgACgClAQgBEYbQQACfyAAKgKQBCIOIA5cIhIgAiACXCITcgRAIBIgE3EMAQsgDiACk4tDF7fROF0LGyEMDAELIAAgASACIAMgBCAFIAYgByAIIAogCyAWIA0gCRBfIAAgAzYCvAIMAQsgFSAMRXJFBEAgACAMKgIQOAKEBCAAIAwqAhQ4AogEIAtBDEEQIAgbaiIDIAMoAgBBAWo2AgAMAgsgACABIAIgAyAEIAUgBiAHIAggCiALIBYgDSAJEF8gACADNgK8AiAMDQELIAAoAsACIgxBAWoiAyALKAIISwRAIAsgAzYCCAsgDEEIRgRAIABBADYCwAJBACEMCyAIBH8gAEGMBGoFIAAgDEEBajYCwAIgACAMQRhsakHEAmoLIgwgBTYCDCAMIAQ2AgggDCACOAIEIAwgATgCACAMIAAqAoQEOAIQIAwgACoCiAQ4AhRBACEMCwJAIAhFDQAgACAAKQKEBDcC9AEgACAALQAEIgNBAXIiBDoABCADQQRxRQ0AIAAgBEH7AXE6AAQLIAAgDTYCuAIgFSAMRXILYgIBfwF9AkAgAkF+cUECRgRAIAFBQGsoAgAiA0Hw4YP8B0YgA0GPnrz8B0ZyIANBqtWq/QdGcg0BIAO+IgQgBFsNAQsgASACQQJ0QdAhaigCAEECdGooAiwhAwsgACADEGgLXwIBfwF9AkAgAkF+cUECRgRAIAEoAjwiA0Hw4YP8B0YgA0GPnrz8B0ZyIANBqtWq/QdGcg0BIAO+IgQgBFsNAQsgASACQQJ0QcAhaigCAEECdGooAiwhAwsgACADEGgLNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRAgALiAICAn0CfwJAAkACQCAAIAFBAnRB4CFqKAIAQQJ0aigC2AEiCEHw4YP8B0YNACAIQY+evPwHRg0BQfAhIQkCQCAIQarVqv0HRwRAIAi+IgYgBlsNAUH4ISEJCyAJKgIAIQZDAADAfyEHIAkoAgRBAWsOAgIBAwsgCEH/////e3FBgICAgAJqviEGIAhBgICAgARxRQ0BCyAGIAKUQwrXIzyUIQcMAQsgBiEHCyAHIAAgASADEB8gACABIAMQIpKSIQMCQAJAAkACQCAEKAIADgMBAAADCyAFKgIAIgIgAiADIAIgA10bIAMgA1wbIQMMAQsgAyADXA0BIARBAjYCAAsgBSADOAIACwtvAQF/AkAgAEEYaiIDECYgAUECdGooArABIAJGDQAgAxAmIAFBAnRqIAI2ArABA0AgAC0ABCIBQQRxDQEgACABQQRyOgAEIAAoAhQiAQRAIAAgAREAAAsgAEGAgID+BzYCtAIgACgCqAQiAA0ACwsLVgECfSAAKAKoBEUEQEMAAAAADwsCQCAAKgIkIgEgAVsNAEMAAIA/IQEgACgCuAQtAAhBAXENAEMAAAAAIQEgACoCHCICQwAAAABdRQ0AIAKMIQELIAELhQECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBayIBIABCCoAiBUL2AX4gAHynQTByOgAAIABC/////58BViECIAUhACACDQALCyAFpyICBEADQCABQQFrIgEgAkEKbiIDQfYBbCACakEwcjoAACACQQlLIQQgAyECIAQNAAsLIAELNwECf0EEEB0iAiABNgIAQQQQHSIDIAE2AgBBmTcgAEG6N0HqJEHCASACQbo3Qe4kQcMBIAMQBwteAQF/IABBADYCDCAAIAM2AhACQCABBEAgAUGAgICABE8NASABQQJ0EB0hBAsgACAENgIAIAAgBCACQQJ0aiICNgIIIAAgBCABQQJ0ajYCDCAAIAI2AgQgAA8LEFAAC9QBAgJ9AX8gAEHQAGohACABQQJ0QdAhaigCACEFAkACQAJAAn8gAUF+cUECRgRAIABBBSAFQY+evPwHEDMMAQsgACAFQY+evPwHEDILIgFB8OGD/AdGDQAgAUGPnrz8B0YNAkHwISEAAkAgAUGq1ar9B0cEQCABviIDIANbDQFB+CEhAAsgACoCACEDQwAAwH8hBCAAKAIEQQFrDgIDAQILIAFB/////3txQYCAgIACar4hAyABQYCAgIAEcUUNAgsgAyAClEMK1yM8lCEECyAEDwsgAwu4AgIHfwJ9IwBBEGsiAyQAAkAgACgCDCIBBEAgACoCiAQhCSAAKgKEBCEIAn0gAC0ABEEgcQRAIAAgCCAJQQAgAREmAAwBCyAAIAggCSABEScACyIIIAhbDQEgA0HRGjYCACAAIAMQLRAsAAsCQAJAIAAoArAEIgEgACgCrAQiBkcEQEEBIAEgBmtBAnUiASABQQFNGyEHA0AgBiAEQQJ0aigCACIBKAKkBEUEQCABKAIYIgVBgIAMcUGAgAhHBEAgBUENdkEHcSIFBH8gBQUgACgCGEEKdkEHcQtBBUYEQCAALQAYQQhxDQULIAEtAARBAnENBCACIAEgAhshAgsgBEEBaiIEIAdHDQELCyACDQILIAAqAogEIQgMAgsgASECCyACEEIgAioC6AGSIQgLIANBEGokACAIC28BAX8CQCAAQRhqIgMQJiABQQJ0aigCwAEgAkYNACADECYgAUECdGogAjYCwAEDQCAALQAEIgFBBHENASAAIAFBBHI6AAQgACgCFCIBBEAgACABEQAACyAAQYCAgP4HNgK0AiAAKAKoBCIADQALCwtvAQF/AkAgAEEYaiIDECYgAUECdGooArgBIAJGDQAgAxAmIAFBAnRqIAI2ArgBA0AgAC0ABCIBQQRxDQEgACABQQRyOgAEIAAoAhQiAQRAIAAgAREAAAsgAEGAgID+BzYCtAIgACgCqAQiAA0ACwsL7wIBAn0CQAJAAkAgAUF+cUECRgRAIAAoArwBIgFB8OGD/AdGIAFBj568/AdGciABQarVqv0HRnINASABviIDIANbDQEgACgCxAEiAUHw4YP8B0YgAUGPnrz8B0ZyIAFBqtWq/QdGcg0BIAG+IgMgA1sNAQwCCyAAKALAASIBQfDhg/wHRiABQY+evPwHRnIgAUGq1ar9B0ZyDQAgAb4iAyADWw0AIAAoAsQBIgFB8OGD/AdGIAFBj568/AdGciABQarVqv0HRnINACABviIDIANcDQELQwAAAAAhAwJAAkAgAUHw4YP8B0YNACABQY+evPwHRg0DQfAhIQACQCABQarVqv0HRwRAIAG+IgMgA1sNAUH4ISEACyAAKgIAIQNDAADAfyEEIAAoAgRBAWsOAgQBAgsgAUH/////e3FBgICAgAJqviEDIAFBgICAgARxRQ0DCyADIAKUQwrXIzyUIQQLIAQPC0MAAAAAIQMLIAMLCgAgAEEwa0EKSQt3AgF/AX0gAEHQAGohACABQQJ0QdAhaigCACECAn8gAUF+cUECRgRAIABBBSACQYCAgP4HEDMMAQsgACACQYCAgP4HEDILIQFBASEAIAFB8OGD/AdGIAFBj568/AdGciABQarVqv0HRnIEfyAABSABviIDIANbCwsUACAABEAgACAAKAIAKAIEEQAACwsGACAAECkLogQCBn8CfgJ/QQghBAJAAkAgAEFHSw0AA0BBCCAEIARBCE0bIQRB2DYpAwAiBwJ/QQggAEEDakF8cSAAQQhNGyIAQf8ATQRAIABBA3ZBAWsMAQsgAEEdIABnIgFrdkEEcyABQQJ0a0HuAGogAEH/H00NABpBPyAAQR4gAWt2QQJzIAFBAXRrQccAaiIBIAFBP08bCyIDrYgiCFBFBEADQCAIIAh6IgiIIQcCfiADIAinaiIDQQR0IgJB2C5qKAIAIgEgAkHQLmoiBkcEQCABIAQgABBOIgUNBSABKAIEIgUgASgCCDYCCCABKAIIIAU2AgQgASAGNgIIIAEgAkHULmoiAigCADYCBCACIAE2AgAgASgCBCABNgIIIANBAWohAyAHQgGIDAELQdg2Qdg2KQMAQn4gA62JgzcDACAHQgGFCyIIQgBSDQALQdg2KQMAIQcLAkAgB1BFBEBBPyAHeadrIgZBBHQiAkHYLmooAgAhAQJAIAdCgICAgARUDQBB4wAhAyABIAJB0C5qIgJGDQADQCADRQ0BIAEgBCAAEE4iBQ0FIANBAWshAyABKAIIIgEgAkcNAAsgAiEBCyAAQTBqEE8NASABRQ0EIAEgBkEEdEHQLmoiAkYNBANAIAEgBCAAEE4iBQ0EIAEoAggiASACRw0ACwwECyAAQTBqEE9FDQMLQQAhBSAEIARBAWtxDQEgAEFHTQ0ACwsgBQwBC0EACwttAQF/AkAgAEEYaiIDECYgAUECdGooAhQgAkYNACADECYgAUECdGogAjYCFANAIAAtAAQiAUEEcQ0BIAAgAUEEcjoABCAAKAIUIgEEQCAAIAERAAALIABBgICA/gc2ArQCIAAoAqgEIgANAAsLC2sBAn9BCSECAkAgASAAQRhqIgMQJigCEEYEQAwBCyADIAIRAgAgATYCEANAIAAtAAQiAUEEcQ0BIAAgAUEEcjoABCAAKAIUIgEEQCAAIAERAAALIABBgICA/gc2ArQCIAAoAqgEIgANAAsLC7UBAQN/IwBBEGsiAyQAIANBCGogAEEYaiIEIAERAQACQCADKAIIKAIAQQcgAygCDCIFdHEgBXUgAkYNACADQQhqIAQgAREBACADKAIIIgEgASgCAEEHIAMoAgwiAXRBf3NxIAJBB3EgAXRyNgIAA0AgAC0ABCIBQQRxDQEgACABQQRyOgAEIAAoAhQiAQRAIAAgAREAAAsgAEGAgID+BzYCtAIgACgCqAQiAA0ACwsgA0EQaiQAC6ADAQN/IAEgAEEEaiIEakEBa0EAIAFrcSIFIAJqIAAgACgCACIBakEEa00EfyAAKAIEIgMgACgCCDYCCCAAKAIIIAM2AgQgBCAFRwRAIAAgAEEEaygCAEF+cWsiAyAFIARrIgQgAygCAGoiBTYCACAFQXxxIANqQQRrIAU2AgAgACAEaiIAIAEgBGsiATYCAAsCQCABIAJBGGpPBEAgACACakEIaiIDIAEgAmtBCGsiATYCACABQXxxIANqQQRrIAFBAXI2AgAgAwJ/IAMoAgBBCGsiAUH/AE0EQCABQQN2QQFrDAELIAFnIQQgAUEdIARrdkEEcyAEQQJ0a0HuAGogAUH/H00NABpBPyABQR4gBGt2QQJzIARBAXRrQccAaiIBIAFBP08bCyIBQQR0IgRB0C5qNgIEIAMgBEHYLmoiBCgCADYCCCAEIAM2AgAgAygCCCADNgIEQdg2Qdg2KQMAQgEgAa2GhDcDACAAIAJBCGoiATYCACABQXxxIABqQQRrIAE2AgAMAQsgACABakEEayABNgIACyAAQQRqBSADCwvmAwEFfwJ/QaAsKAIAIgEgAEEHakF4cSIDaiECAkAgA0EAIAEgAk8bDQAgAj8AQRB0SwRAIAIQFkUNAQtBoCwgAjYCACABDAELQdQ3QTA2AgBBfwsiAkF/RwRAIAAgAmoiA0EQayIBQRA2AgwgAUEQNgIAAkACf0HQNigCACIABH8gACgCCAVBAAsgAkYEQCACIAJBBGsoAgBBfnFrIgRBBGsoAgAhBSAAIAM2AghBcCAEIAVBfnFrIgAgACgCAGpBBGstAABBAXFFDQEaIAAoAgQiAyAAKAIINgIIIAAoAgggAzYCBCAAIAEgAGsiATYCAAwCCyACQRA2AgwgAkEQNgIAIAIgAzYCCCACIAA2AgRB0DYgAjYCAEEQCyACaiIAIAEgAGsiATYCAAsgAUF8cSAAakEEayABQQFyNgIAIAACfyAAKAIAQQhrIgFB/wBNBEAgAUEDdkEBawwBCyABQR0gAWciA2t2QQRzIANBAnRrQe4AaiABQf8fTQ0AGkE/IAFBHiADa3ZBAnMgA0EBdGtBxwBqIgEgAUE/TxsLIgFBBHQiA0HQLmo2AgQgACADQdguaiIDKAIANgIIIAMgADYCACAAKAIIIAA2AgRB2DZB2DYpAwBCASABrYaENwMACyACQX9HCwUAEAQAC0ABAX8CQEGENy0AAEEBcQRAQYA3KAIAIQIMAQtBAUHwIhALIQJBhDdBAToAAEGANyACNgIACyACIAAgAUEAEBMLDwAgASAAKAIAaiACOQMACw0AIAEgACgCAGorAwALCwAgAARAIAAQKQsLLwAgACAAIAGWIAG8Qf////8HcUGAgID8B0sbIAEgALxB/////wdxQYCAgPwHTRsLlgMCA34CfyAAvSICQjSIp0H/D3EiBEH/D0YEQCAARAAAAAAAAPA/oiIAIACjDwsgAkIBhiIBQoCAgICAgIDw/wBYBEAgAEQAAAAAAAAAAKIgACABQoCAgICAgIDw/wBRGw8LAn4gBEUEQEEAIQQgAkIMhiIBQgBZBEADQCAEQQFrIQQgAUIBhiIBQgBZDQALCyACQQEgBGuthgwBCyACQv////////8Hg0KAgICAgICACIQLIQEgBEH/B0oEQANAAkAgAUKAgICAgICACH0iA0IAUw0AIAMiAUIAUg0AIABEAAAAAAAAAACiDwsgAUIBhiEBIARBAWsiBEH/B0oNAAtB/wchBAsCQCABQoCAgICAgIAIfSIDQgBTDQAgAyIBQgBSDQAgAEQAAAAAAAAAAKIPCyABQv////////8HWARAA0AgBEEBayEEIAFCgICAgICAgARUIQUgAUIBhiEBIAUNAAsLIAJCgICAgICAgICAf4MgAUKAgICAgICACH0gBK1CNIaEIAFBASAEa62IIARBAEobhL8LigEBA38DQCAAQQR0IgFB1C5qIAFB0C5qIgI2AgAgAUHYLmogAjYCACAAQQFqIgBBwABHDQALQTAQTxpB8DZBEDYCAEH0NkEANgIAEIQBQfQ2QaA3KAIANgIAQaA3QfA2NgIAQaQ3QcYBNgIAQag3QQA2AgAQdkGoN0GgNygCADYCAEGgN0GkNzYCAAukAwEHfyAABEAjAEEgayIGJAAgACgCACIBKAKoBCIDBEAgAyABEGsaIAFBADYCqAQLIAEoArAEIgIgASgCrAQiA0cEQEEBIAIgA2tBAnUiAiACQQFNGyEEQQAhAgNAIAMgAkECdGooAgBBADYCqAQgAkEBaiICIARHDQALCyABIAM2ArAEAkAgAyABQbQEaiICKAIARg0AIAZBCGpBAEEAIAIQQCICKAIEIAEoArAEIAEoAqwEIgRrIgVrIgMgBCAFEDYhBSABKAKsBCEEIAEgBTYCrAQgAiAENgIEIAEoArAEIQUgASACKAIINgKwBCACIAU2AgggASgCtAQhByABIAIoAgw2ArQEIAIgBDYCACACIAc2AgwgBCAFRwRAIAIgBSAEIAVrQQNqQXxxajYCCAsgBEUNACAEEEkgASgCrAQhAwsgAwRAIAEgAzYCsAQgAxBJCyABEEkgACgCCCEBIABBADYCCCABBEAgASABKAIAKAIEEQAACyAAKAIEIQEgAEEANgIEIAEEQCABIAEoAgAoAgQRAAALIAZBIGokACAAECkLC5ABAAJ/IAEEQCABKAIAEGQMAQsCQEHoNi0AAARAQeQ2KAIAIQEMAQtBHBAdIgFCgICA/AM3AhQgAUIANwIMIAFBADYCACABQQA6AAggAUEBNgIEQeQ2IAE2AgBB6DZBAToAAEHgNkHgNigCAEEBajYCAAsgARBkCyEBIABCADcCBCAAIAE2AgAgASAANgIAIAALKgEBfyAABEAgACgCACIBBEAgARApC0HgNkHgNigCAEEBazYCACAAECkLC7sDAwR/BXwDfQJAIAFEAAAAAAAAAABhDQAgACoC+AEhDSAAKgL0ASEOIAAqAugBIQ8gACAAKgLkAbsiCSABQQAgAC0ABEEIcSIEQQN2IgUQMDgC5AEgACAPuyIKIAFBACAFEDA4AugBIA67IgsgAaIQViIIIAhhIAiZRC1DHOviNho/Y3EiBUUhBiAGIAhEAAAAAAAA8L+gmUQtQxzr4jYaP2NFIAUgCCAIYnIbIQYgDbsiDCABohBWIgggCGEgCJlELUMc6+I2Gj9jcSIFRSEHIAcgCEQAAAAAAADwv6CZRC1DHOviNho/Y0UgBSAIIAhichshB0EAIQUgACAJIAKgIgIgC6AgASAEQQBHIgQgBnEgBCAGRXEQMCACIAFBACAEEDCTOAL0ASAAIAogA6AiAyAMoCABIAQgB3EgBCAHRXEQMCADIAFBACAEEDCTOAL4ASAAKAKwBCIEIAAoAqwEIgZGDQBBASAEIAZrQQJ1IgQgBEEBTRshBgNAQQAhBCAFIAAoArAEIAAoAqwEIgdrQQJ1SQR/IAcgBUECdGooAgAFIAQLIAEgAiADEFsgBUEBaiIFIAZHDQALCwuPAQEDfwJAIAAoAhgiAkEIcUUNAEEBIQEgAkGAOHFBgChGDQBBACEBIAAoArAEIgMgACgCrAQiAkYNAEEBIAMgAmtBAnUiACAAQQFNGyEDQQAhAANAIAIgAEECdGooAgAoAhgiAUGAgAxxQYCACEcgAUGAwANxQYDAAkZxIgENASAAQQFqIgAgA0cNAAsLIAEL3wIBBn8jAEHAAmsiAiQAIAJBAEGgAhAqIgNCgICA/oeAgOD/ADcDECADQRhqQQBBMRAqGiADQYCAgP4HNgJQIANBoAJqIQQgA0HgAGohAgNAIAJCgICA/IuAgMC/fzcCECACQgA3AgggAkKAgID8i4CAwL9/NwIAIAJBGGoiAiAERw0ACyADQoCAgPyLgIDAv383A7gCIANCADcDsAIgA0KAgID8i4CAwL9/NwOoAiADQoCAgP6HgIDg/wA3A6ACIABB5AFqIANBwAIQKxogAEIANwL0ASAAIAAtAARBAXI6AAQgACgCrAQiAiAAKAKwBCIGRwRAQQAhBANAIAAgAigCACIFKAKoBEcEfyACIAAoArgEIgcoAgAgBy0ACCAFIAAgBCABEIcBIgU2AgAgBSAANgKoBCACKAIABSAFCyABEF0gBEEBaiEEIAJBBGoiAiAGRw0ACwsgA0HAAmokAAumAwIDfQN/IAIgA5MiByAHXCIKBH0gBwVDAAAAACECAkACQAJAAkAgACABQQJ0aigC0AEiCEHw4YP8B0YNACAIQY+evPwHRg0CQfAhIQkCQCAIQarVqv0HRwRAIAi+IgIgAlsNAUH4ISEJCyAJKgIAIQIgCSgCBEEBaw4CAgEECyAIQf////97cUGAgICAAmq+IQIgCEGAgICABHFFDQELIAIgBJRDCtcjPJQhAgsgAiACWw0ADAELIAIgA5MhBQtDAAAAACECAkACQAJAAkAgACABQQJ0aigC2AEiAUHw4YP8B0YNACABQY+evPwHRg0CQfAhIQACQCABQarVqv0HRwRAIAG+IgIgAlsNAUH4ISEACyAAKgIAIQJD//9/fyEGIAAoAgRBAWsOAgIBBAsgAUH/////e3FBgICAgAJqviECIAFBgICAgARxRQ0BCyACIASUQwrXIzyUIQILIAIgAlsNAEP//39/IQYMAQsgAiADkyEGCyAHIAcgBhBVIAogBiAGXHIbIgIgAlwiACAFIAVcckUEQCACIAUQHg8LIAUgAiAAGwsL43UDJX8YfQF+IwBBgANrIg4kAAJAAkACQCABIAFcQQAgBBtFBEAgAiACXEEAIAUbRQRAIApBAEEEIAgbaiIQIBAoAgBBAWo2AgAgACAALQCsAkH8AXEgACgCGEEDcSIQQQEgAyADQQFMGyIyIBAbIhxBA3FyOgCsAiAAQfwBaiIDIBxBAUdBA3QiEWogAEEDQQIgHEECRhsiJiAGEB8iNTgCACADIBxBAUZBA3QiEGogACAmIAYQIiI0OAIAIAAgAEEAIAYQHyI4OAKAAiAAIABBACAGECIiMzgCiAIgAEGMAmoiAyARaiAAICYQIDgCACADIBBqIAAgJhAhOAIAIAAgAEEAECAiOzgCkAIgACAAQQAQISI8OAKYAiARIABBnAJqIgNqIAAgJiAGECQ4AgAgAyAQaiAAICYgBhAjOAIAIAAgAEEAIAYQJCI3OAKgAiAAIABBACAGECMiPTgCqAIgNSA0kiE1IDggM5IhMyAAKAIIIgMEQCAAKgKcAiAAKgKkApIgACoCjAKSIAAqApQCkiE0IAIgM5NDAADAfyAFGyECIDcgPZIgO5IhMyABIDWTQwAAwH8gBBsiNSEBAkAgNSA1XA0AIDUgNJMiASABXARAQwAAAAAhAQwBCyABQwAAAAAQHiEBCyAzIDySITgCQCACIAIiM1wNACACIDiTIjMgM1wEQEMAAAAAITMMAQsgM0MAAAAAEB4hMwsgBEEBRyAFQQFHckUEQCAAAn0gAEECIDUgBhAlIjMgM1wiAyAAQQIgBhAkIABBAhAgkiAAQQIgBhAjIABBAhAhkpIiASABXHJFBEAgMyABEB4MAQsgASAzIAMbCzgChAQgAAJ9IABBACACIAcQJSICIAJcIgMgAEEAIAYQJCAAQQAQIJIgAEEAIAYQIyAAQQAQIZKSIgEgAVxyRQRAIAIgARAeDAELIAEgAiADGws4AogEDAYLAkAgAC0ABEEQcQRAIA5BGGogACABIAQgMyAFQQAgAxEsAAwBCyAOQRhqIAAgASAEIDMgBSADEQ4ACyAKIAooAhRBAWo2AhQgCiANQQJ0aiIDIAMoAhhBAWo2AhggAAJ9IABBAiA0IA4qAhiSIgEgNSAEQQJGGyABIAQbIAYQJSIzIDNcIgMgAEECIAYQJCAAQQIQIJIgAEECIAYQIyAAQQIQIZKSIgEgAVxyRQRAIDMgARAeDAELIAEgMyADGws4AoQEIAACfSAAQQAgOCAOKgIckiIBIAIgBUECRhsgASAFGyAHECUiAiACXCIDIABBACAGECQgAEEAECCSIABBACAGECMgAEEAECGSkiIBIAFcckUEQCACIAEQHgwBCyABIAIgAxsLOAKIBAwFCyAAKAKwBCIRIAAoAqwEIgNGBEAgAiAzkyECIAACfSAAQQIgBEF9cQR9IAEgNZMFIAAqApwCIAAqAqQCkiAAKgKMApIgACoClAKSCyAGECUiMyAzXCIDIABBAiAGECQgAEECECCSIABBAiAGECMgAEECECGSkiIBIAFcckUEQCAzIAEQHgwBCyABIDMgAxsLOAKEBCAAAn0gAEEAIAIgNyA9kiA7kiA8kiAFQX1xGyAHECUiAiACXCIDIABBACAGECQgAEEAECCSIABBACAGECMgAEEAECGSkiIBIAFcckUEQCACIAEQHgwBCyABIAIgAxsLOAKIBAwFCwJAIAgNACABIDWTIjRDAAAAAF9FIARBAkdyRSA0IDRbcSACIDOTIjhDAAAAAF9FIAVBAkdyRSA4IDhbcXJFIARBAUcgBUEBR3JxDQAgAAJ9IABBAkMAAAAAQwAAAAAgNCA0QwAAAABdGyA0IARBAkYbIDQgNFwbIAYQJSICIAJcIgMgAEECIAYQJCAAQQIQIJIgAEECIAYQIyAAQQIQIZKSIgEgAVxyRQRAIAIgARAeDAELIAEgAiADGws4AoQEIAACfSAAQQBDAAAAAEMAAAAAIDggOEMAAAAAXRsgOCAFQQJGGyA4IDhcGyAHECUiAiACXCIDIABBACAGECQgAEEAECCSIABBACAGECMgAEEAECGSkiIBIAFcckUEQCACIAEQHgwBCyABIAIgAxsLOAKIBAwFCyARIANrIi1BAnUhIgNAIAAgAygCACIQKAKoBEcEQCADIAAoArgEIg0oAgAgDS0ACCAQIAAgE0EAEIcBIg02AgAgDSAANgKoBAsgE0EBaiETIANBBGoiAyARRw0ACyAAIAAtAKwCQfsBcToArAJBAyETIAAoAhgiLkECdkEDcSEDAkACfwJAIBxBAkYEQEEAIQ0CQCADQQJrDgIEAAILQQIhEwwDC0ECIRNBACADQQFLDQEaCyATCyENIAMhEwsgAEEAIAEgNZMiSSAAIBMgBhAkIAAgExAgkiAAIBMgBhAjIAAgExAhkpIiQSAAIA0gBhAkIAAgDRAgkiI9IAAgDSAGECMgACANECGSkiI+IBNBAUsiHhsgBhBeITYgAEEBIAIgM5MiSiA+IEEgHhsgBxBeIjwgNiAeGyE7IDYgPCAeGyE4IAAoArAEISQgACgCrAQhEAJAIAQgBSAeGyIgQQFHDQAgECAkRg0DIBAhAwNAAkAgAygCACIREGZFDQBBACEXIA8NAgJAAkAgESgCqARFBEBDAAAAACEzDAELIBEqAiAiAiACXARAQwAAAAAhMyARKgIcIgJDAAAAAF5FDQELIAIhMyACIAJcDQELIDOLQxe30ThdDQMLIBEQPSIBIAFcBEAgESEPDAELIBEhDyABi0MXt9E4XQ0CCyAPIRcgA0EEaiIDICRHDQALCyAQICRGDQJBASAcIBxBAUwbIS8gNiA2XCIZIARBAUdyITAgPCA8WyESIDYgNlshGkMAAAAAITMDQCAQKAIAIhUQZwJAIBUoAhgiEUGAgIACcQRAIBVBABBdIBUgFS0ABCIPQQFyIgM6AAQgD0EEcUUNASAVIANB+wFxOgAEDAELIAgEQCAVIBFBA3EiAyAvIAMbIDggOyA2EGkgFSgCGCERCyARQYCADHFBgIAIRg0AAkAgFSAXRgRAIBdBADYCtAIgFyAMNgKwAkMAAAAAIQIMAQsgACgCGCIpQQJ2QQNxIQMCQAJAIBxBAkcNAEEDIQ8CQCADQQJrDgICAAELQQIhDwwBCyADIQ8LIDYgPCAPQQFLIiUbITdDAAAAACECAkACQAJAIBUoAigiGEHw4YP8B0YNACAYQY+evPwHRg0BQfAhIQMCQCAYQarVqv0HRwRAIBi+IgEgAVsNAUH4ISEDCyADKgIAIQICQAJAIAMoAgQiFA4EAAEBAAELQwAAwH8hASAVKgIcQwAAAABeRQ0EQoCAgP43QoCAgIAQIBUoArgELQAIQQFxGyJLQiCIpyEUIEunviECC0MAAMB/IQEgFEEBaw4CAgEDCyAYQf////97cUGAgICAAmq+IQIgGEGAgICABHFFDQELIDcgApRDCtcjPJQhAQwBCyACIQELIBUpArwEIkunviECQQAhFAJAAkAgS0IgiKciGw4EAQAAAQALIBtBAUcgFSoCvAQiNCA0XHJFBEAgAkMAAAAAXQ0BQQEhFAwBC0EBIRQgG0ECRyA0IDRccg0AQQAhFCACQwAAAABdDQAgGiEUCyAVKQLEBCJLp74hNUEAIQMCQAJAIEtCIIinIh0OBAEAAAEACyAdQQFHIBUqAsQEIjQgNFxyRQRAIDVDAAAAAF0NAUEBIQMMAQtBASEDIB1BAkcgNCA0XHINAEEAIQMgNUMAAAAAXQ0AIBIhAwsCQAJAIAEgAVwgNyA3XHJFBEAgFSoCtAIiAiACWwRAIBUoArgELQAMQQFxRQ0DIBUoArACIAxGDQMLIAEgFSAPIDYQJCAVIA8QIJIgFSAPIDYQIyAVIA8QIZKSIgJgRSABIAJdcQ0BIAEhAgwBCyAUICVxBEAgFUECIDYQJCAVQQIQIJIgFUECIDYQIyAVQQIQIZKSITRDAADAfyEBAkACQAJAIBtBAWsOAgEAAgsgNiAClEMK1yM8lCECCyA0IAIiAV8NAgsgASABWyA0IDRbckUEQCABIQIMAgsgASA0XQRAIDQhAgwCCyA0IAEgASABXBshAgwBCyAlIANBAXNyRQRAIBVBACA2ECQgFUEAECCSIBVBACA2ECMgFUEAECGSkiEBQwAAwH8hAgJAAkACQCAdQQFrDgIBAAILIDwgNZRDCtcjPJQhNQsgASA1IgJfDQILIAIgAlwgASABXHENASABIAJeBEAgASECDAILIAEgAiACIAJcGyECDAELIA5BgICA/gc2AugCIA5BgICA/gc2AhhBACEYIA5BADYC5AIgDkEANgLgAiAVQQIgNhAfIBVBAiA2ECKSITkgFUEAIDYQHyE6IBVBACA2ECIhN0MAAMB/ITRBACEhQwAAwH8hASAUBEACQAJAAkAgG0EBaw4CAAECCyACIQEMAQsgNiAClEMK1yM8lCEBCyAOQQE2AuQCIA4gOSABkiIBOAIYQQEhIQsgOiA3kiE3IAMEQEMAAMB/IQICQAJAAkAgHUEBaw4CAAECCyA1IQIMAQsgPCA1lEMK1yM8lCECCyAOQQE2AuACIA4gNyACkiI0OALoAkEBIRgLAkACQAJAIClBgIDAAXFBgICAAUYiHSAPQQJJIhtxRQRAIBkgHXINAiABIAFcDQEMAgsgGSABIAFbcg0CC0ECISEgDkECNgLkAiAOIDY4AhggNiEBCwJAIBtBASAdGwRAIDwgPFwgHXINAiA0IDRcDQEMAgsgNCA0WyA8IDxccg0BC0ECIRggDkECNgLgAiAOIDw4AugCIDwhNAsCQCAVKgLgASICIAJcIh0NAAJ/ICUgIUEBR3JFBEAgDkEBNgLgAiAOIDcgASA5kyAClZI4AugCQQEMAQsgGyAYQQFHcg0BIA5BATYC5AIgDiA0IDeTIAKUIDmSOAIYQQELIRhBASEhCwJAIBFBDXZBB3EiESApQQp2QQdxIBEbIhFBBUYgIUEBRnIgJSAUIDBycnIgEUEER3INACAOQQE2AuQCIA4gNjgCGCAdDQBBASEYIA5BATYC4AIgDiA2IDmTIAKVOALoAgsCQCAFQQFHIBtyIDwgPFxyIANyIBFBBEdyIBhBAUZyDQAgDkEBNgLgAiAOIDw4AugCIB0NACAOQQE2AuQCIA4gPCA3kyAClDgCGAsgFUECIDYgNiAOQeQCaiAOQRhqEDsgFUEAIDwgNiAOQeACaiAOQegCahA7IBUgDioCGCAOKgLoAiAcIA4oAuQCIA4oAuACIDYgPEEAQQUgCSAKIAsgDBA3GiAVIA9BAnRB4CFqKAIAQQJ0aioChAQiAiACXCIDIBUgDyA2ECQgFSAPECCSIBUgDyA2ECMgFSAPECGSkiIBIAFcckUEQCACIAEQHiECDAELIAEgAiADGyECCyAVIAI4ArQCCyAVIAw2ArACCyAzIAIgFSATIDYQHyAVIBMgNhAikpKSITMLIBBBBGoiECAkRw0ACwwDCyAOQYAYNgIAIAAgDhAtECwACyAOQdIYNgIQIAAgDkEQahAtECwAC0MAAAAAITMLIDNDAAAAAJIhASAHIAYgHhshRiAGIAcgHhshQ0EBICAgLUEFTwR9IAAgEyA7EEUgIkEBa7OUIAGSBSABCyA4XiIQGyAgIC5BgIAwcSIxGyAgICBBAkYbIScgBSAEIB4bIipBAUYiFSAIQQFzcSEpIBNBAkkhKyAqQX1xIR0gAEHQAWohJCANQQJ0IgVBwCFqISMgFSAxRXEhLSAqQQFHIAhyIS4gE0ECdCIDQcAhaiEsIANB4CFqISggOyA7WyIeQQF0IS8gBUHgIWohHyAgRSAQRXIhMCAOQTRqISUgACANIDsQRSFIQQAhEUEAIQNBACEYAkADQCADIRogDkEYakEAQSwQKhoCQCAAKAKwBCIFIAAoAqwEIgNGDQAgBSADayIDQQBIDQIgDkHoAmogA0ECdUEAICUQQCEQIA4oAuwCIA4oAjAgDigCLCIFayIDayAFIAMQNiEDIA4gDigCLCIPNgLsAiAOIAM2AiwgDikD8AIhSyAOIA4oAjAiBTYC8AIgDigCNCEDIA4gSzcDMCAOIAM2AvQCIBAgDzYCACAFIA9HBEAgDiAFIA8gBWtBA2pBfHFqNgLwAgsgD0UNACAPECkLIAAoAhgiEkECdkEDcSEDAkACQCASQQNxIgUgMiAFG0ECRw0AQQMhDwJAIANBAmsOAgIAAQtBAiEPDAELIAMhDwsgACAPIDYQRSE3AkAgESIQIAAoArAEIhQgACgCrAQiBWtBAnVPDQAgEkGAgDBxIRJDAAAAACECA0AgFCAFa0ECdSAQTQ0DIAUgEEECdGooAgAiGSgCGCIDQYCAgAJxIANBgIAMcUGAgAhGckUEQCAZIBo2AqQEIBkgDyA2EB8hMyAZIA8gNhAiIQEgDigCGCEDQwAAAAAgNyAQIBFGGyI1IDMgAZIiMyACIBkgDyAZKgK0AiI0IEMQJSIBkpKSIDheRSASRXJBASADG0UNAiAOIANBAWo2AhggDiA1IDMgAZKSIjMgDioCHJI4AhwgGRBmBEACQCAZKAKoBEUEQEMAAAAAIQEMAQsgGSoCICIBIAFbDQAgGSoCHCIBQwAAAAAgAUMAAAAAXhshAQsgDiABIA4qAiCSOAIgIA4gDioCJCAZED0gNJSTOAIkCwJAIA4oAjAiAyAOKAI0RwRAIAMgGTYCACAOIANBBGo2AjAMAQsgAyAOKAIsayIXQQJ1IgVBAWoiFEGAgICABE8NBSAOQegCakH/////AyAXQQF1IgMgFCADIBRLGyAXQfz///8HTxsgBSAlEEAhFCAOKALwAiAZNgIAIA4gDigC8AJBBGo2AvACIA4oAuwCIA4oAjAgDigCLCIFayIDayAFIAMQNiEDIA4gDigCLCIXNgLsAiAOIAM2AiwgDikD8AIhSyAOIA4oAjAiBTYC8AIgDigCNCEDIA4gSzcDMCAOIAM2AvQCIBQgFzYCACAFIBdHBEAgDiAFIBcgBWtBA2pBfHFqNgLwAgsgF0UNACAXECkLIAAoAqwEIQUgACgCsAQhFCACIDOSIQILIBBBAWoiECAUIAVrQQJ1SQ0ACwsgDioCICI6QwAAAABeRSA6QwAAgD9dRXJFBEAgDkGAgID8AzYCIEMAAIA/IToLIA4qAiQiP0MAAAAAXkUgP0MAAIA/XUVyRQRAIA5BgICA/AM2AiRDAACAPyE/CyAOIBA2AiggDioCHCEzIA4oAhghICAYBEAgGBApCyAOKgI4ITUgDigCMCEhIA4oAiwhGAJAAkACQAJAICdBAUYNAEMAAAAAIQICQAJAAkAgJCgCACIDQfDhg/wHRg0AIANBj568/AdGDQFB8CEhBQJAIANBqtWq/QdHBEAgA74iASABWw0BQfghIQULIAUqAgAhAkMAAMB/IQEgBSgCBEEBaw4CAgEDCyADQf////97cUGAgICAAmq+IQIgA0GAgICABHFFDQELIAIgBpRDCtcjPJQhAQwBCyACIQELQwAAAAAhAgJAAkACQCAAKALYASIDQfDhg/wHRg0AIANBj568/AdGDQFB8CEhBQJAIANBqtWq/QdHBEAgA74iAiACWw0BQfghIQULIAUqAgAhAkMAAMB/ITcgBSgCBEEBaw4CAgEDCyADQf////97cUGAgICAAmq+IQIgA0GAgICABHFFDQELIAIgBpRDCtcjPJQhNwwBCyACITcLQwAAAAAhAgJAAkACQCAAKALUASIDQfDhg/wHRg0AIANBj568/AdGDQFB8CEhBQJAIANBqtWq/QdHBEAgA74iAiACWw0BQfghIQULIAUqAgAhAkMAAMB/ITQgBSgCBEEBaw4CAgEDCyADQf////97cUGAgICAAmq+IQIgA0GAgICABHFFDQELIAIgB5RDCtcjPJQhNAwBCyACITQLQwAAAAAhAgJAAkACQCAAKALcASIDQfDhg/wHRg0AIANBj568/AdGDQFB8CEhBQJAIANBqtWq/QdHBEAgA74iAiACWw0BQfghIQULIAUqAgAhAkMAAMB/ITkgBSgCBEEBaw4CAgEDCyADQf////97cUGAgICAAmq+IQIgA0GAgICABHFFDQELIAIgB5RDCtcjPJQhOQwBCyACITkLIAEgNCATQQFLIgMbIEGTIgIgAlsgAiAzXnENASA3IDkgAxsgQZMiAiACWyACIDNdcQ0BIAAoArgELQAQQQFxDQAgMyECIDpDAAAAAFsNAiAAKAKoBEUNAgJAAkAgACoCICIBIAFbBEAgASECDAELIAAqAhwiAkMAAAAAXkUNAQsgAiACXARAIDghAgwECyAAKgIgIQELIAEgAVwEQCAzIQIgACoCHCIBQwAAAABeRQ0DCyA4IQIgAUMAAAAAXA0CIDMhAgwCCyA4IQILIAIgAlwNACACIDOTITUMAQsgM0MAAAAAXUUNACAzjCE1CyACITggKUUEQAJAIBggIUYEQEMAAAAAITQMAQtDAAAAACE5IBghBQNAIAUoAgAiDyATIA8qArQCIgEgQxAlITcCQCA1QwAAAABdBEAgNyAPED2MlCICQwAAAABeIAJDAAAAAF1yRQ0BAn0gDyATIDUgP5UgApQgN5IiNCA4ECUiMyAzXCIDIA8gEyA2ECQgDyATECCSIA8gEyA2ECMgDyATECGSkiICIAJcckUEQCAzIAIQHgwBCyACIDMgAxsLIQIgNCA0XCACIAJcciACIDRbcg0BIDkgAiA3k5IhOSAPED0gAZQgP5IhPwwBCyA1QwAAAABeRQ0AIA8oAqgERQ0AIA8qAiAiMyAzXARAIA8qAhwiM0MAAAAAXkUNAQsgM0MAAAAAXSAzQwAAAABeckUNAAJ9IA8gEyA1IDqVIDOUIDeSIjQgOBAlIgIgAlwiAyAPIBMgNhAkIA8gExAgkiAPIBMgNhAjIA8gExAhkpIiASABXHJFBEAgAiABEB4MAQsgASACIAMbCyEBIDQgNFwgASABXHIgASA0W3INACA6IDOTITogOSABIDeTkiE5CyAFQQRqIgUgIUcNAAsgNSA5kyJEID+VIUcgRCA6lSFAIAAtABpBDHFFIDByIBVxIg9FIRkgHygCACEbQwAAAAAhNCAYIRQDQCAUKAIAIhYgEyAWKgK0AiBDECUhNwJAIBYgEwJ9IERDAAAAAF0EQCA3IjMgFhA9jJQiAUMAAAAAWw0CIDcgAZIgRyABlCA3kiA/QwAAAABbGwwBCyA3ITMgREMAAAAAXkUNASAWKAKoBEUNASAWKgIgIgEgAVwEQCAWKgIcIgFDAAAAAF5FDQILIAFDAAAAAF0gAUMAAAAAXnJFDQEgQCABlCA3kgsgOBAlIgIgAlwiAyAWIBMgNhAkIBYgExAgkiAWIBMgNhAjIBYgExAhkpIiASABXHJFBEAgAiABEB4hMwwBCyABIAIgAxshMwsgFiATIDYQHyECIBYgEyA2ECIhASAWIA0gNhAfITkgFiANIDYQIiE6IA4gMyACIAGSIgKSIgE4AuACIA5BATYC2AIgOSA6kiE6AkAgFioC4AEiOSA5WwRAIA5BATYC3AIgDiA6IAEgApMiASA5lCABIDmVICsbkjgC5AIMAQsCQCA7IDtcIgUNAAJAAkACQAJAIBYgG0EDdGoiAykCvAQiS0IgiKciEg4EAQAAAQALIEunviEBIBJBAUcgAyoCvAQiAiACXHINASABQwAAAABdRSAZckUNAgwDCyAPRQ0CDAELIAFDAAAAAF1FIBJBAkcgAiACXHJyIBlyDQELIBYoAhhBDXZBB3EiAwR/IAMFIAAoAhhBCnZBB3ELQQRHDQAgDkEYaiAWIA0QOSAOKAIcQQNGDQAgDkHoAmogFiANEDggDigC7AJBA0YNACAOQQE2AtwCIA4gOzgC5AIMAQsCQAJAAkACQAJAIBYgG0EDdGoiAykCvAQiS0IgiKciEg4EAQAAAQALIEunviECIBJBAUcgAyoCvAQiASABXHJFBEAgAiIBQwAAAABdDQEMBAsgEkECRyABIAFccg0BIAUNACACQwAAAABdRQ0CCyAOIC82AtwCIA4gOzgC5AIMAwtDAADAfyEBAkAgEkEBaw4CAAECCyACIQEMAQsgOyAClEMK1yM8lCEBCyAOIDogAZIiATgC5AIgDiAVIBJBAkdyIAEgAVtxNgLcAgsgFiATIDggNiAOQdgCaiAOQeACahA7IBYgDSA7IDYgDkHcAmogDkHkAmoQOwJAAkACQAJAIBYgG0EDdGoiAykCvAQiS0IgiKciBQ4EAQAAAQALIEunviEBIAVBAUcgAyoCvAQiAiACXHJFBEAgAUMAAAAAXQ0BDAILIAVBAkcgAiACXHINASABQwAAAABdDQBBACEXIB4NAgtBACEXIBYoAhhBDXZBB3EiAwR/IAMFIAAoAhhBCnZBB3ELQQRHDQEgDkEYaiAWIA0QOSAOKAIcQQNGDQEgDkHoAmogFiANEDggDigC7AJBA0chFwwBC0EAIRcLIBYgDioC4AIiAiAOKgLkAiIBIBNBAUsiEhsgASACIBIbIAAtAKwCQQNxIA4oAtgCIgUgDigC3AIiAyASGyADIAUgEhsgNiA8IAggF0EBc3EiA0EEQQcgAxsgCSAKIAsgDBA3GiA0IDMgN5OSITQgAAJ/AkAgAC0ArAIiA0EEcQRAIANB+wFxIRcMAQsgA0H7AXEhF0EAIBYtAKwCQQRxRQ0BGgtBBAsgF3I6AKwCIBRBBGoiFCAhRw0ACwsgNSA0kyE1CyAAIAAtAKwCIgNB+wFxQQQgA0EEcSA1QwAAAABdG3I6AKwCIAAgEyAGECQgACATECCSITkgACATIAYQIyAAIBMQIZIhPyAAIBMgBhBFITMCQCA1QwAAAABeRSAnQQJHckUEQEMAAAAAITRDAAAAACECAkACQAJ9ICQgKCgCAEECdGooAgAiFEHw4YP8B0YiD0UEQCAUQY+evPwHRiIFDQIgFEGq1ar9B0YiAw0FIBS+IgEgAVwNBSAFDQIgAw0FIBRB/////3txQYCAgIACar4iAiAUQYCAgIAEcUUNARoLIEMgApRDCtcjPJQLIgEgAVwNA0MAAAAAIQICQCAPDQAgFEGPnrz8B0YNAUHwISEFAkAgFEGq1ar9B0cEQCAUviIBIAFbDQFB+CEhBQsgBSoCACECQwAAwH8hNyAFKAIEQQFrDgICAQMLIBRB/////3txQYCAgIACar4hAiAUQYCAgIAEcUUNAQsgQyAClEMK1yM8lCE3DAELIAIhNwsgNyA5kyA/kyA4IDWTkyIBIAFcDQEgAUMAAAAAEB4hNAwBCyA1ITQLAkAgECARTSIbRQRAIBEgACgCsAQgACgCrAQiF2tBAnUiAyADIBFJGyESQQAhFCARIQMDQCADIBJGDQQgFyADQQJ0aigCACIZKAIYQYCADHFBgIAIRwRAIA5BGGoiDyAZIBMQOSAOKAIcIQUgDyAZIBMQOCAUIAVBA0ZqIA4oAhxBA0ZqIRQLIANBAWoiAyAQRw0AC0MAAAAAITogMyECIBQNAQtDAAAAACE6QQAhFCAzIQICQAJAAkACQAJAIAAoAhhBBHZBB3FBAWsOBQABAgQDBQsgNEMAAAA/lCE6DAQLIDQhOgwDCyAgQQJJBEAMAwsgM0MAAAAAIDRDAAAAABAeIDQgNFwbICBBAWuzlZIhAgwCCyAzIDQgIEEBarOVIjqSIQIMAQsgNEMAAAA/lCAgs5UiOiA6kiAzkiECCyA5IDqSIQFDAAAAACE1IAAQXCEXIBsEfUMAAAAABSAQQQFrIRIgNCAUspUhREMAAAAAITlDAAAAACE3IBEhAwNAIAAoArAEIAAoAqwEIgVrQQJ1IANNDQMgDkEYaiAFIANBAnRqKAIAIhRB5AFqIg9BwAIQKxogAiAzQwAAAAAgAyASRhuTIQICQCAUKAIYIgVBgICAAnENAAJAIAVBgIAMcUGAgAhGBEAgFCATEC5FDQEgCEUNAiAUIBMgOBA0IUcgACATECAhQCAUIBMgNhAfITQgDyAsKAIAQQJ0aiA0IEcgQJKSOAIADAILIA5B6AJqIBQgExA5IAEgREMAAACAIA4oAuwCQQNGG5IhASAIBEAgDyAsKAIAQQJ0IgVqIAEgDkEYaiAFaioCAJI4AgALIA5B6AJqIBQgExA4IAEgREMAAACAIA4oAuwCQQNGG5IhASAuRQRAIAEgAiAUIBMgNhAfIBQgEyA2ECKSkiAOKgJokpIhASA7ITUMAgsgASACIBRBhARqIg8gKCgCAEECdGoqAgAgFCATIDYQHyAUIBMgNhAikpKSkiEBIBcEQCAUEEIhQCAUQQAgNhAfITQgFCoCiAQgFEEAIDYQHyAUQQAgNhAikpIgQCA0kiJAkyE0An0gOSA5XCIFIEAgQFxyRQRAIDkgQBAeDAELIEAgOSAFGwshOSA3IDdcIgUgNCA0XHJFBEAgNyA0EB4hNwwDCyA0IDcgBRshNwwCCyA1IDVcIgUgDyAfKAIAQQJ0aioCACAUIA0gNhAfIBQgDSA2ECKSkiI0IDRcckUEQCA1IDQQHiE1DAILIDQgNSAFGyE1DAELIAhFDQAgDyAsKAIAQQJ0IgVqIDogDkEYaiAFaioCACAAIBMQIJKSOAIACyADQQFqIgMgEEcNAAsgNyA5kgsgNSAXGyECIDshNCAdRQRAAn0gACANID4gApIgRhAlIjQgNFwiAyAAIA0gBhAkIAAgDRAgkiAAIA0gBhAjIAAgDRAhkpIiMyAzXHJFBEAgNCAzEB4MAQsgMyA0IAMbCyA+kyE0CwJ9IAAgDSA+IDsgAiAtG5IgRhAlIjMgM1wiAyAAIA0gBhAkIAAgDRAgkiAAIA0gBhAjIAAgDRAhkpIiAiACXHJFBEAgMyACEB4MAQsgAiAzIAMbCyA+kyEzIAhFIBtyRQRAA0AgACgCsAQgACgCrAQiA2tBAnUgEU0NAwJAIAMgEUECdGooAgAiDygCGCIDQYCAgAJxDQAgA0GAgAxxQYCACEYEQAJAIA8gDRAuRQRAICMoAgAhBQwBCyAPIA0gOxA0ITcgACANECAhNSAPIA0gNhAfIQIgDyAjKAIAIgVBAnRqIAIgNyA1kpIiAjgC5AEgAiACWw0CCyAPIAVBAnRqIAAgDRAgIA8gDSA2EB+SOALkAQwBCyADQQ12QQdxIgVFBEAgACgCGEEKdkEHcSEFCwJAAkAgBUEFRgRAQQVBASAAKAIYQQhxGyEFDAELIAVBBEcNACAOQRhqIA8gDRA5QQQhBSAOKAIcQQNGDQAgDkHoAmogDyANEDggDigC7AJBA0YNAAJAAkAgDyAfKAIAQQN0aiIDKQK8BCJLQiCIpyIFDgQBAAABAAsgS6e+ITUgBUEBRyADKgK8BCI3IDdcckUEQCA9IQIgNUMAAAAAXQ0BDAMLID0hAiAeIDVDAAAAAF1FcSAFQQJHIDcgN1xycg0CCyAPICgoAgBBAnRqKgKEBCE3IDMhAiAOIA8qAuABIjUgNVsEfSAPIA0gNhAfIA8gDSA2ECKSIDcgNZQgNyA1lSArG5IFIAILOALoAiAOIDcgDyATIDYQHyAPIBMgNhAikpI4AhggDkEBNgLkAiAOQQE2AuACIA8gEyA4IDYgDkHkAmogDkEYahA7IA8gDSA7IDYgDkHgAmogDkHoAmoQOyAOKgLoAiI1IA4qAhgiAiATQQFLIgMbITcgMUEARyAAKAIYQYAHcUGABEdxIgUgK3EgAiA1IAMbIgIgAlxyIQMgDyACIDcgHCADQQFzICsgBUVyIDcgN1txIDYgPEEBQQIgCSAKIAsgDBA3GiA9IQIMAQsgDyAfKAIAQQJ0aioChAQhNyAPIA0gNhAfITUgDyANIDYQIiECIA5BGGogDyANEDkgNCA3IDUgApKSkyE1AkAgDigCHEEDRw0AIA5B6AJqIA8gDRA4IA4oAuwCQQNHDQAgPUMAAAAAIDVDAAAAP5QiAkMAAAAAEB4gAiACXBuSIQIMAQsgDkEYaiAPIA0QOCA9IQIgDigCHEEDRg0AIA5BGGogDyANEDkgDigCHEEDRgRAID1DAAAAACA1QwAAAAAQHiA1IDVcG5IhAgwBCwJAAkAgBUEBaw4CAgABCyA9IDVDAAAAP5SSIQIMAQsgPSA1kiECCyAPICMoAgBBAnRqIgMgAiBCIAMqAuQBkpI4AuQBCyARQQFqIhEgEEcNAAsLIEhDAAAAACAaGyAzkiECAn0gRSBFXCIDID8gAZIiASABXHJFBEAgRSABEB4MAQsgASBFIAMbCyFFIEIgApIhQiAaQQFqIQMgIiAQIhFLDQALAkAgCEUNACAxRQRAIAAQXEUNAQtDAAAAACE5AkACQCA7IDtcDQAgOyBCkyEBAkACQAJAAkACQCAAKAIYQQd2QQdxQQJrDgYABAEFAwIFCyA9IAFDAAAAP5SSIT0MBAsgOyBCXkUNAyABIAOzlSE5DAMLIDsgQl4EQCA9IAEgA0EBdLOVkiE9IANBAkkNAyABIAOzlSE5DAQLID0gAUMAAAA/lJIhPQwCCyA7IEJeRSADQQJJcg0BIAEgGrOVITkMAgsgPSABkiE9CyADRQ0BC0EAIRRBACEDQQAhBQNAQwAAAAAhNUMAAAAAITNDAAAAACECQwAAAAAhAUMAAAAAITcgIiADIhBLBEACfwNAIAAoArAEIAAoAqwEIgVrQQJ1IBBNDQUCQCAFIBBBAnRqKAIAIhEoAhgiD0GAgIACcSAPQYCADHFBgIAIRnINACAQIBQgESgCpARHDQIaAkAgESAfKAIAQQJ0aioChAQiAUMAAAAAYEUNACACIAJcIgUgASARIA0gNhAfIBEgDSA2ECKSkiIBIAFcckUEQCACIAEQHiECDAELIAEgAiAFGyECCyAPQQ12QQdxIgUEfyAFBSAAKAIYQQp2QQdxC0EFRw0AIAAtABhBCHFFDQAgERBCITQgEUEAIDYQHyEBIBEqAogEIBFBACA2EB8gEUEAIDYQIpKSIDQgAZIiNJMhASACIAJcIg8CfSAzIDNcIgUgNCA0XHJFBEAgMyA0EB4MAQsgNCAzIAUbCyIzAn0gNSA1XCIFIAEgAVxyRQRAIDUgARAeDAELIAEgNSAFGwsiNZIiASABXHJFBEAgAiABEB4hAgwBCyABIAIgDxshAgsgEEEBaiIQICJHDQALICILIQUgMyE3IAIhAQsgPSBIQwAAAAAgFBuSIjogOSABkiICkiE9IAMgBUkEQCA6IDeSITMDQCAAKAKwBCAAKAKsBCIQa0ECdSADTQ0EAkAgECADQQJ0aigCACIRKAIYIhBBgICAAnEgEEGAgAxxQYCACEZyDQACQAJAAkACQAJAAkAgEEENdkEHcSIQBH8gEAUgACgCGEEKdkEHcQtBAWsOBQEDAgQABgsgAC0AGEEIcQ0ECyARIA0gNhAfIQEgESAjKAIAQQJ0aiA6IAGSOALkAQwECyARIA0gNhAiIQEgEUHkAWoiECAjKAIAQQJ0aiA9IAGTIBAgHygCAEECdGoqAqACkzgCAAwDCyARQeQBaiIQICMoAgBBAnRqIDogAiAQIB8oAgBBAnRqKgKgApNDAAAAP5SSOAIADAILIBEgDSA2EB8hASARICMoAgBBAnRqIDogAZI4AuQBAkACQCARIB8oAgBBA3RqIhApArwEIktCIIinIg8OBAEAAAEACyBLp74hASAPQQFHIBAqArwEIjQgNFxyRQRAIAFDAAAAAF0NAQwDCyAeIAFDAAAAAF1FcSAPQQJHIDQgNFxycg0CCwJAAkACfSATQQJPBEAgAiE1IBEqAoQEIgEgESATIDYQHyARIBMgNhAikpIMAQsgESoCiAQgESANIDYQHyARIA0gNhAikpIhNSARKgKEBCEBIAILIjQgNFwgASABXHJFBEAgNCABk4tDF7fROF0NAQwCCyA0IDRbIAEgAVtyDQELIBEqAogEIgEgAVwiECA1IDVcckUEQCA1IAGTi0MXt9E4XUUNAQwDCyA1IDVbDQAgEA0CCyARIDQgNSAcQQFBASA2IDxBAUEDIAkgCiALIAwQNxoMAQsgESAzIBEQQpMgEUEAIDsQNJI4AugBCyADQQFqIgMgBUcNAAsLIBQgGkchECAUQQFqIRQgBSEDIBANAAsLIABBhARqIhoCfSAAQQIgSSAGECUiAiACXCIDIABBAiAGECQgAEECECCSIABBAiAGECMgAEECECGSkiIBIAFcckUEQCACIAEQHgwBCyABIAIgAxsLOAIAIAACfSAAQQAgSiAHECUiAiACXCIDIABBACAGECQgAEEAECCSIABBACAGECMgAEEAECGSkiIBIAFcckUEQCACIAEQHgwBCyABIAIgAxsLOAKIBAJAAn0CQCAnBEAgACgCGEEUdkEDcSIDQQJGICdBAkdyDQELIAAgEyBFIEMQJSICIAJcIgMgACATIAYQJCAAIBMQIJIgACATIAYQIyAAIBMQIZKSIgEgAVxyRQRAIAIgARAeDAILIAEgAiADGwwBCyAnQQJHIANBAkdyDQECfSBBIDiSIgIgAlwiAyAAIBMgRSBDECUiASABXHJFBEAgAiABEFUMAQsgASACIAMbCyIBIAFcIgMgQSBBXHJFBEAgASBBEB4MAQsgQSABIAMbCyEBIBogKCgCAEECdGogATgCAAsCQAJ9AkAgKgRAICpBAkciBSAAKAIYQRR2QQNxIgNBAkZyDQELIAAgDSA+IEKSIEYQJSICIAJcIgMgACANIAYQJCAAIA0QIJIgACANIAYQIyAAIA0QIZKSIgEgAVxyRQRAIAIgARAeDAILIAEgAiADGwwBCyAFIANBAkdyDQECfSA+IDuSIgIgAlwiAyAAIA0gPiBCkiBGECUiASABXHJFBEAgAiABEFUMAQsgASACIAMbCyIBIAFcIgMgPiA+XHJFBEAgASA+EB4MAQsgPiABIAMbCyEBIBogHygCAEECdGogATgCAAsCQCAIRQ0AIAAoAhhBgIAwcUGAgCBGBEBBASAiICJBAU0bIRQgACgCsAQgACgCrAQiEWtBAnUhD0EAIQMDQEEAIRAgAyAPSQRAIBEgA0ECdGooAgAhEAsgECgCGEGAgAxxQYCACEcEQCAQQeQBaiIQICMoAgBBAnRqIgggGiAfKAIAQQJ0IgVqKgIAIAgqAgCTIAUgEGoqAqACkzgCAAsgA0EBaiIDIBRHDQALCyAAKAKsBCIFIAAoArAEIhRHBEAgJyAEIBNBAUsbQQBHIQ8DQAJAIAUoAgAiEigCGEGAgIwCcUGAgAhHDQAgNiEzIDwhOCAAKAK4BC0ADEECcQRAIAAqAogEITggACoChAQhMwsgACgCGEECdkEDcSEDAkACQCAcQQJGBEBBACERQQMhEAJAIANBAmsOAgMAAgtBAiEQDAILQQAhESADQQFNDQAgAyEQDAELIAMhECAmIRELIBJBAiAzEB8gEkECIDMQIpIhNSASQQAgMxAfIQcgEkEAIDMQIiEGAkACQAJAIBIpArwEIktCIIinIgMOBAEAAAEACyBLp74hAQJAIANBAUcgEioCvAQiAiACXHJFBEAgASICQwAAAABdRQ0BDAILAkAgA0ECRyACIAJcckUEQCAzIDNcIAFDAAAAAF1yDQMMAQtDAADAfyECAkAgA0EBaw4CAAECCyABIQIMAQsgMyABlEMK1yM8lCECCyA1IAKSIQIMAQtDAADAfyECIBJBAhAuRQ0AIBJBAhBHRQ0AIBJBAiAAKgKEBCAAQQIQICAAQQIQIZKTIBJBAiAzEDQgEkECIDMQQZKTIDMQJSICIAJcIgMgEkECIDMQJCASQQIQIJIgEkECIDMQIyASQQIQIZKSIgEgAVxyRQRAIAIgARAeIQIMAQsgASACIAMbIQILIAcgBpIhBwJAAn8CQAJAAkACQAJAIAIgAlwCfQJAAkAgEikCxAQiS0IgiKciAw4EAQAAAQALIEunviEGAkAgA0EBRyASKgLEBCIBIAFcckUEQCAGIgFDAAAAAF1FDQEMAgsCQCADQQJHIAEgAVxyRQRAIDggOFwgBkMAAAAAXXINAwwBC0MAAMB/IQECQCADQQFrDgIAAQILIAYhAQwBCyA4IAaUQwrXIzyUIQELIAcgAZIMAQsCQCASQQAQLgRAIBJBABBHDQELQwAAwH8hASACIAJbDQIMBgsgEkEAIAAqAogEIABBABAgIABBABAhkpMgEkEAIDgQNCASQQAgOBBBkpMgOBAlIgYgBlwiAyASQQAgMxAkIBJBABAgkiASQQAgMxAjIBJBABAhkpIiASABXHJFBEAgBiABEB4MAQsgASAGIAMbCyIBIAFcRg0CIBIqAuABIjQgNFwNAiACIAJcBEAgASAHkyA0lCA1kiECDAMLIAEgAVsNAgwBCyASKgLgASI0IDRcDQILIAcgAiA1kyA0lZIhAQsgAiACXA0BIAEgAVsNAwtBAAwBC0EBCyEDIBIgMyACIDNDAAAAAF4iCBsgAiADIA9xIBBBAklxIgQbIgIgASAcQQIgA0EBcyIDIAgbIAMgBBsgASABWyACIAFBAEEGIAkgCiALIAwQNxogEioChAQgEkECIDMQbJIhAiASKgKIBCASQQAgMxBskiEBCyASIAIgASAcQQFBASACIAFBAUEBIAkgCiALIAwQNxoCQAJ9AkAgEiAQEEdFDQAgEiAQEC4NACAaIBBBAnRB4CFqKAIAQQJ0IgNqKgIAIAMgEmoqAoQEkyAAIBAQIZMgEiAQIDggMyAQQQJJGyIBECKTIBIgECABEEGTDAELAkAgEiAQEC4NACAAKAIYQfAAcUEQRw0AIBogEEECdEHgIWooAgBBAnQiA2oqAgAgAyASaioChASTQwAAAD+UDAELAkAgEiAQEC4NACAAKAIYQfAAcUEgRw0AIBogEEECdEHgIWooAgBBAnQiA2oqAgAgAyASaioChASTDAELIAAoArgELQAMQQJxRQ0BIBIgEBAuRQ0BIBIgECAaIBBBAnRB4CFqKAIAQQJ0aioCACIBEDQgACAQECCSIBIgECABEB+SCyEBIBIgEEECdEHAIWooAgBBAnRqIAE4AuQBCwJ9AkAgEiAREEdFDQAgEiAREC4NACAaIBFBAnRB4CFqKAIAQQJ0IgNqKgIAIAMgEmoqAoQEkyAAIBEQIZMgEiARIDMgOCAQQQJJGyIBECKTIBIgESABEEGTDAELAkAgEiAREC4NACASKAIYQQ12QQdxIgMEfyADBSAAKAIYQQp2QQdxC0ECRw0AIBogEUECdEHgIWooAgBBAnQiA2oqAgAgAyASaioChASTQwAAAD+UDAELAkAgEiAREC4NAAJAIBIoAhhBDXZBB3EiAyAAKAIYIgRBCnZBB3EgAxsiA0EFRgRAIARBgIAwcUGAgCBGDQEMAgsgA0EDRiAEQYCAMHFBgIAgRkYNAQsgGiARQQJ0QeAhaigCAEECdCIDaioCACADIBJqKgKEBJMMAQsgACgCuAQtAAxBAnFFDQEgEiAREC5FDQEgEiARIBogEUECdEHgIWooAgBBAnRqKgIAIgEQNCAAIBEQIJIgEiARIAEQH5ILIQEgEiARQQJ0QcAhaigCAEECdGogATgC5AELIAVBBGoiBSAURw0ACwsgDSATckEBcUUNACANQQFxIQwgE0EBcSELQQEgIiAiQQFNGyEKIA1BAnRB0CFqIQkgE0ECdEHQIWohCCAAKAKwBCAAKAKsBCIFa0ECdSEEQQAhAANAIAAgBEYNAgJAIAUgAEECdGooAgAiEC0AGkHAAHENACALBEAgEEHkAWoiDSAIKAIAQQJ0aiAaICgoAgBBAnQiA2oqAgAgAyANaioCoAKTIA0gLCgCAEECdGoqAgCTOAIACyAMRQ0AIBBB5AFqIg0gCSgCAEECdGogGiAfKAIAQQJ0IgNqKgIAIAMgDWoqAqACkyANICMoAgBBAnRqKgIAkzgCAAsgAEEBaiIAIApHDQALCyAYRQ0BIBgQKQwBCxAEAAsgDkGAA2okAAuJBAMDfwR9AXwgCEMAAAAAXSAJQwAAAABdcgR/IA0FIAUhECABIREgAyESAn0gByAMRQ0AGiAHIAwqAhQiE0MAAAAAWw0AGiABuyATuyIUQQBBABAwIREgA7sgFEEAQQAQMCESIAW7IBRBAEEAEDAhECAHuyAUQQBBABAwCyETAn9BACAAIARHDQAaIBAgEFwiDCARIBFcIg1yBEAgDCANcQwBCyAQIBGTi0MXt9E4XQshDwJAIAIgBkcNACATIBNcIgwgEiASXCINcgRAIAwgDXEhDgwBCyATIBKTi0MXt9E4XSEOC0EBIQ1BASEMAkAgDw0AIAEgCpMhAQJAIABBAUYNACAAQQJHIgAgBHJFBEAgASAIYEUNAQwCC0EAIQwgASAFXUUgACAEQQJHciABIAFcIAUgBVxyIAggCFxycnINAUEBIQwgASAIYA0BCyABIAFcIgAgCCAIXCIEcgRAIAAgBHEhDAwBCyABIAiTi0MXt9E4XSEMCwJAIA4NACADIAuTIQECQCACQQFGDQAgAkECRyIAIAZyRQRAIAEgCWBFDQEMAgtBACENIAEgB11FIAAgBkECR3IgASABXCAHIAdcciAJIAlccnJyDQFBASENIAEgCWANAQsgASABXCIAIAkgCVwiAnIEQCAAIAJxIQ0MAQsgASAJk4tDF7fROF0hDQsgDCANcQsLbQEBfwJAIABBGGoiAxAmIAFBAnRqKAJcIAJGDQAgAxAmIAFBAnRqIAI2AlwDQCAALQAEIgFBBHENASAAIAFBBHI6AAQgACgCFCIBBEAgACABEQAACyAAQYCAgP4HNgK0AiAAKAKoBCIADQALCwttAQF/AkAgAEEYaiIDECYgAUECdGooAjggAkYNACADECYgAUECdGogAjYCOANAIAAtAAQiAUEEcQ0BIAAgAUEEcjoABCAAKAIUIgEEQCAAIAERAAALIABBgICA/gc2ArQCIAAoAqgEIgANAAsLCw4AIAAgASACQQJBAxBzCx0BAX9BzAQQHSAAEIYBIQEgAEEAR0H4FRCFASABC2oBA38jAEEQayICJAAgACAALQAEIgNBb3EiBDoABAJAIAEEfyAAKAKwBCAAKAKsBEcNASAEQQhyBSADQecBcQshAyAAIAE2AgggACADOgAEIAJBEGokAA8LIAJBoCA2AgAgACACEC0QLAALWwEBfQJ/QQAgACgCGEGAgAxxQYCACEYNABoCQCAAKAKoBEUNACAAKgIgIgEgAVwEQCAAKgIcIgFDAAAAAF5FDQELQQEgAUMAAAAAXA0BGgsgABA9QwAAAABcCwuTBQILfwN9IwBBEGsiBUKAgICAEDcCCCAAQcgBaiEGIABBvARqIQcgAEHQAWohCCAAQdgBaiEJQQAhAANAIAAhCgJ/AkACQAJAAkACQCAJIAVBCGogAEECdGooAgAiC0ECdCIDaigCACIAQfDhg/wHRiIEIABBj568/AdGciAAQarVqv0HRnJFBEAgAL4iDCAMXA0BCyADIAhqKAIAIQECfwJAIARFBEBDAADAfyEMQQMgAEGq1ar9B0YNAhogAEGPnrz8B0cNAUMAAAAAIQxBAQwCC0MAAAAAIQxBAgwBC0EAIAC+Ig0gDVwNABogAEH/////e3FBgICAgAJqviEMQQJBASAAQYCAgIAEcRsLIgICfwJAIAFB8OGD/AdHBEBDAADAfyENQQMgAUGq1ar9B0YNAhogAUGPnrz8B0cNAUMAAAAAIQ1BAQwCC0MAAAAAIQ1BAgwBC0EAIAG+Ig4gDlwNABogAUH/////e3FBgICAgAJqviENQQJBASABQYCAgIAEcRsLRyACRSAMIAxcIA0gDVxxciAMIA2Ti0MXt9E4XXJFcg0AQQAhASAEDQEgAEGPnrz8B0YNBCAAQarVqv0HRg0DIAC+IgwgDFwNAiAAQf////97cUGAgICAAmohAUECQQEgAEGAgICABHEbDAULQQAhASADIAZqKAIAIgBB8OGD/AdGDQAgAEGPnrz8B0YNAyAAQarVqv0HRg0CIAC+IgwgDFwNASAAQf////97cUGAgICAAmohAUECQQEgAEGAgICABHEbDAQLQQIMAwtBgICA/gchAUEADAILQYCAgP4HIQFBAwwBC0EBCyECIAcgC0EDdGoiACACNgIEIAAgATYCAEEBIQAgCkEBcUUNAAsLjQEBAX0CQCABQfDhg/wHRwRAIAFBj568/AdHBEAgAUGq1ar9B0cNAiAAQoCAgP43NwIADwsgAEKAgICAEDcCAA8LIABCgICAgCA3AgAPCyABviICIAJcBEAgAEKAgID+BzcCAA8LIABBAkEBIAFBgICAgARxGzYCBCAAIAFB/////3txQYCAgIACajYCAAuGAgIDfwF9QQIhBSAAKAIYQQJ2QQNxIQYCQAJ/AkAgACgCqARFIAFBAkdyRQRAQQAhAUEDIQUCQCAGQQJrDgIEAAILQQIhBQwDC0EAIAZBAUsNARoLIAULIQEgBiEFCyAAIAUgAhBqIQIgACABIAMQaiEDIAAgBSAEEB8hCCAAQeQBaiIGIAVBAnQiB0HAIWooAgBBAnRqIAIgCJI4AgAgACAFIAQQIiEIIAYgB0HQIWooAgBBAnRqIAIgCJI4AgAgACABIAQQHyECIAYgAUECdCIFQcAhaigCAEECdGogAyACkjgCACAAIAEgBBAiIQIgBiAFQdAhaigCAEECdGogAyACkjgCAAsqACAAIAEQLgRAIAAgASACEDQPCyAAIAEgAhBBIgIgAlsEfSACjAUgAgsLYAECfwJAAkAgACgCrAQiAiAAKAKwBCIDRg0AA0AgAigCACABRg0BIAJBBGoiAiADRw0ACwwBCyACIANGDQAgAiACQQRqIgEgAyABaxA2GiAAIANBBGs2ArAEQQEPC0EACxMAIAAgASACEB8gACABIAIQIpILHAAgACABQQggAqcgAkIgiKcgA6cgA0IgiKcQFQsFABBQAAs5ACAARQRAQQAPCwJ/IAFBgH9xQYC/A0YgAUH/AE1yRQRAQdQ3QRk2AgBBfwwBCyAAIAE6AABBAQsLxAIAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAoLDAoLAgMEBQwLDAwKCwcICQsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsACyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCwALIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAiADEQEACw8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBGBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELqBQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAHIQkDQCAJLQABQSVHBEAgCSEBDAILIAdBAWohByAJLQACIQogCUECaiIBIQkgCkElRg0ACwsgByANayIHIA5B/////wdzIhhKDQcgAARAIAAgDSAHECcLIAcNBiAIIAE2AkwgAUEBaiEHQX8hEgJAIAEsAAEiChBGRQ0AIAEtAAJBJEcNACABQQNqIQcgCkEwayESQQEhFQsgCCAHNgJMQQAhDAJAIAcsAAAiCUEgayIBQR9LBEAgByEKDAELIAchCkEBIAF0IgFBidEEcUUNAANAIAggB0EBaiIKNgJMIAEgDHIhDCAHLAABIglBIGsiAUEgTw0BIAohB0EBIAF0IgFBidEEcQ0ACwsCQCAJQSpGBEACfwJAIAosAAEiARBGRQ0AIAotAAJBJEcNACABQQJ0IARqQcABa0EKNgIAIApBA2ohCUEBIRUgCiwAAUEDdCADakGAA2soAgAMAQsgFQ0GIApBAWohCSAARQRAIAggCTYCTEEAIRVBACETDAMLIAIgAigCACIBQQRqNgIAQQAhFSABKAIACyETIAggCTYCTCATQQBODQFBACATayETIAxBgMAAciEMDAELIAhBzABqEHEiE0EASA0IIAgoAkwhCQtBACEHQX8hCwJ/IAktAABBLkcEQCAJIQFBAAwBCyAJLQABQSpGBEACfwJAIAksAAIiARBGRQ0AIAktAANBJEcNACABQQJ0IARqQcABa0EKNgIAIAlBBGohASAJLAACQQN0IANqQYADaygCAAwBCyAVDQYgCUECaiEBQQAgAEUNABogAiACKAIAIgpBBGo2AgAgCigCAAshCyAIIAE2AkwgC0F/c0EfdgwBCyAIIAlBAWo2AkwgCEHMAGoQcSELIAgoAkwhAUEBCyEPA0AgByERQRwhCiABIhAsAAAiB0H7AGtBRkkNCSAQQQFqIQEgByARQTpsakHvJmotAAAiB0EBa0EISQ0ACyAIIAE2AkwCQAJAIAdBG0cEQCAHRQ0LIBJBAE4EQCAEIBJBAnRqIAc2AgAgCCADIBJBA3RqKQMANwNADAILIABFDQggCEFAayAHIAIgBhBwDAILIBJBAE4NCgtBACEHIABFDQcLIAxB//97cSIJIAwgDEGAwABxGyEMQQAhEkGPCSEWIBQhCgJAAkACQAJ/AkACQAJAAkACfwJAAkACQAJAAkACQAJAIBAsAAAiB0FfcSAHIAdBD3FBA0YbIAcgERsiB0HYAGsOIQQUFBQUFBQUFA4UDwYODg4UBhQUFBQCBQMUFAkUARQUBAALAkAgB0HBAGsOBw4UCxQODg4ACyAHQdMARg0JDBMLIAgpA0AhGUGPCQwFC0EAIQcCQAJAAkACQAJAAkACQCARQf8BcQ4IAAECAwQaBQYaCyAIKAJAIA42AgAMGQsgCCgCQCAONgIADBgLIAgoAkAgDqw3AwAMFwsgCCgCQCAOOwEADBYLIAgoAkAgDjoAAAwVCyAIKAJAIA42AgAMFAsgCCgCQCAOrDcDAAwTC0EIIAsgC0EITRshCyAMQQhyIQxB+AAhBwsgFCENIAgpA0AiGVBFBEAgB0EgcSEQA0AgDUEBayINIBmnQQ9xQYArai0AACAQcjoAACAZQg9WIQkgGUIEiCEZIAkNAAsLIAxBCHFFIAgpA0BQcg0DIAdBBHZBjwlqIRZBAiESDAMLIBQhByAIKQNAIhlQRQRAA0AgB0EBayIHIBmnQQdxQTByOgAAIBlCB1YhDSAZQgOIIRkgDQ0ACwsgByENIAxBCHFFDQIgCyAUIA1rIgdBAWogByALSBshCwwCCyAIKQNAIhlCAFMEQCAIQgAgGX0iGTcDQEEBIRJBjwkMAQsgDEGAEHEEQEEBIRJBkAkMAQtBkQlBjwkgDEEBcSISGwshFiAZIBQQPiENCyAPQQAgC0EASBsNDiAMQf//e3EgDCAPGyEMIAgpA0AiGUIAUiALckUEQCAUIQ1BACELDAwLIAsgGVAgFCANa2oiByAHIAtIGyELDAsLQQAhDAJ/Qf////8HIAsgC0H/////B08bIgoiEUEARyEQAkACfwJAAkAgCCgCQCIHQbUhIAcbIg0iD0EDcUUgEUVyDQADQCAPLQAAIgxFDQIgEUEBayIRQQBHIRAgD0EBaiIPQQNxRQ0BIBENAAsLIBBFDQICQCAPLQAARSARQQRJckUEQANAIA8oAgAiB0F/cyAHQYGChAhrcUGAgYKEeHENAiAPQQRqIQ8gEUEEayIRQQNLDQALCyARRQ0DC0EADAELQQELIRADQCAQRQRAIA8tAAAhDEEBIRAMAQsgDyAMRQ0CGiAPQQFqIQ8gEUEBayIRRQ0BQQAhEAwACwALQQALIgcgDWsgCiAHGyIHIA1qIQogC0EATgRAIAkhDCAHIQsMCwsgCSEMIAchCyAKLQAADQ0MCgsgCwRAIAgoAkAMAgtBACEHIABBICATQQAgDBAoDAILIAhBADYCDCAIIAgpA0A+AgggCCAIQQhqIgc2AkBBfyELIAcLIQlBACEHAkADQCAJKAIAIg1FDQEgCEEEaiANEG8iCkEASCINIAogCyAHa0tyRQRAIAlBBGohCSALIAcgCmoiB0sNAQwCCwsgDQ0NC0E9IQogB0EASA0LIABBICATIAcgDBAoIAdFBEBBACEHDAELQQAhCiAIKAJAIQkDQCAJKAIAIg1FDQEgCEEEaiANEG8iDSAKaiIKIAdLDQEgACAIQQRqIA0QJyAJQQRqIQkgByAKSw0ACwsgAEEgIBMgByAMQYDAAHMQKCATIAcgByATSBshBwwICyAPQQAgC0EASBsNCEE9IQogACAIKwNAIBMgCyAMIAcgBREaACIHQQBODQcMCQsgCCAIKQNAPAA3QQEhCyAXIQ0gCSEMDAQLIActAAEhCSAHQQFqIQcMAAsACyAADQcgFUUNAkEBIQcDQCAEIAdBAnRqKAIAIgAEQCADIAdBA3RqIAAgAiAGEHBBASEOIAdBAWoiB0EKRw0BDAkLC0EBIQ4gB0EKTw0HA0AgBCAHQQJ0aigCAA0BIAdBAWoiB0EKRw0ACwwHC0EcIQoMBAsgCyAKIA1rIhAgCyAQShsiCSASQf////8Hc0oNAkE9IQogEyAJIBJqIgsgCyATSBsiByAYSg0DIABBICAHIAsgDBAoIAAgFiASECcgAEEwIAcgCyAMQYCABHMQKCAAQTAgCSAQQQAQKCAAIA0gEBAnIABBICAHIAsgDEGAwABzECgMAQsLQQAhDgwDC0E9IQoLQdQ3IAo2AgALQX8hDgsgCEHQAGokACAOC9YCAQR/IwBB0AFrIgUkACAFIAI2AswBIAVBoAFqIgJBAEEoECoaIAUgBSgCzAE2AsgBAkBBACABIAVByAFqIAVB0ABqIAIgAyAEEHJBAEgEQEF/IQQMAQtBASAGIAAoAkxBAE4bIQYgACgCACEHIAAoAkhBAEwEQCAAIAdBX3E2AgALAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhCCAAIAU2AiwMAQsgACgCEA0BC0F/IAAQfg0BGgsgACABIAVByAFqIAVB0ABqIAVBoAFqIAMgBBByCyECIAgEQCAAQQBBACAAKAIkEQYAGiAAQQA2AjAgACAINgIsIABBADYCHCAAKAIUIQEgAEIANwMQIAJBfyABGyECCyAAIAAoAgAiACAHQSBxcjYCAEF/IAIgAEEgcRshBCAGRQ0ACyAFQdABaiQAIAQLfgIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR/QQAFIABEAAAAAAAA8EOiIAEQdCEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALCxUAIABFBEBBAA8LQdQ3IAA2AgBBfwvPAwBBrDdB+xcQHEGtN0GwE0EBQQFBABAbQa43QdwQQQFBgH9B/wAQA0GvN0HVEEEBQYB/Qf8AEANBsDdB0xBBAUEAQf8BEANBsTdBhwpBAkGAgH5B//8BEANBsjdB/glBAkEAQf//AxADQbM3QaQKQQRBgICAgHhB/////wcQA0G0N0GbCkEEQQBBfxADQbU3QeMUQQRBgICAgHhB/////wcQA0G2N0HaFEEEQQBBfxADQbc3QfENQoCAgICAgICAgH9C////////////ABBtQbg3QfANQgBCfxBtQbk3QeoNQQQQDEG6N0HHF0EIEAxBuzdB9RQQDUG8N0HAHhANQb03QQRB6BQQCEG+N0ECQYEVEAhBvzdBBEGQFRAIQcA3QbUTEBpBwTdBAEH7HRABQcI3QQBB4R4QAUHDN0EBQZkeEAFBxDdBAkGLGxABQcU3QQNBqhsQAUHGN0EEQdIbEAFBxzdBBUHvGxABQcg3QQRBhh8QAUHJN0EFQaQfEAFBwjdBAEHVHBABQcM3QQFBtBwQAUHEN0ECQZcdEAFBxTdBA0H1HBABQcY3QQRB2h0QAUHHN0EFQbgdEAFByjdBBkGVHBABQcs3QQdByx8QAQslACAAQeQiNgIAIAAtAAQEQCAAKAIIQd8NEFELIAAoAggQBiAACwMAAAslACAAQdwjNgIAIAAtAAQEQCAAKAIIQd8NEFELIAAoAggQBiAACzcBAn9BBBAdIgIgATYCAEEEEB0iAyABNgIAQfs2IABBujdB6iRBxAEgAkG6N0HuJEHFASADEAcLNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEFAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRAwALCQAgASAAEQAAC1kBAX8gACAAKAJIIgFBAWsgAXI2AkggACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEACwcAIAARDQALNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRAAALMAEBfyMAQRBrIgIkACACIAE2AgggAkEIaiAAEQIAIQAgAigCCBAGIAJBEGokACAACwwAIAEgACgCABEAAAsJACAAQQE6AAQLtyYBAn9B+DZB+TZB+jZBAEGAIkERQYMiQQBBgyJBAEHhE0GFIkESEAVBCBAdIgBCiICAgBA3AwBB+DZB6hZBBkGQIkGoIkETIABBARAAQfw2Qf02Qf42Qfg2QYAiQRRBgCJBFUGAIkEWQdEPQYUiQRcQBUEEEB0iAEEYNgIAQfw2QbcSQQJBsCJBuCJBGSAAQQAQAEH4NkH2CkECQbwiQcQiQRpBGxACQfg2QdMXQQNBlCNBoCNBHEEdEAJBkDdBkTdBkjdBAEGAIkEeQYMiQQBBgyJBAEHxE0GFIkEfEAVBCBAdIgBCiICAgBA3AwBBkDdB3RlBAkGoI0G4IkEgIABBARAAQZM3QZQ3QZU3QZA3QYAiQSFBgCJBIkGAIkEjQegPQYUiQSQQBUEEEB0iAEElNgIAQZM3QbcSQQJBsCNBuCJBJiAAQQAQAEGQN0H2CkECQbgjQcQiQSdBKBACQZA3QdMXQQNBlCNBoCNBHEEpEAJBljdBlzdBmDdBAEGAIkEqQYMiQQBBgyJBAEGtFkGFIkErEAVBljdBAUHoI0GAIkEsQS0QDkGWN0HjFkEBQegjQYAiQSxBLRACQZY3QekIQQJB7CNBuCJBLkEvEAJBCBAdIgBBADYCBCAAQTA2AgBBljdBohlBBEGAJEGQJEExIABBABAAQQgQHSIAQQA2AgQgAEEyNgIAQZY3Qb0PQQNBmCRBpCRBMyAAQQAQAEEIEB0iAEEANgIEIABBNDYCAEGWN0GgD0EDQawkQbgkQTUgAEEAEABBCBAdIgBBADYCBCAAQTY2AgBBljdBvRpBA0HAJEG4JEE3IABBABAAQQgQHSIAQQA2AgQgAEE4NgIAQZY3QYgOQQNBrCRBuCRBNSAAQQAQAEEIEB0iAEEANgIEIABBOTYCAEGWN0HAGUEDQcwkQaAjQTogAEEAEABBCBAdIgBBADYCBCAAQTs2AgBBljdBhg9BAkHYJEHEIkE8IABBABAAQQgQHSIAQQA2AgQgAEE9NgIAQZY3QccaQQJB4CRBxCJBPiAAQQAQAEEIEB0iAEEANgIEIABBPzYCAEGWN0H5DUECQdgkQcQiQTwgAEEAEABBmTdB9wlB6CRBwABBhSJBwQAQCkHEDUEAED9BzAxBCBA/QeEQQRAQP0GXE0EYED9BgRRBIBA/QdIMQSgQP0GZNxAJQfs2QdIWQegkQcIAQYUiQcMAEApBgRRBABB6QdIMQQgQekH7NhAJQZo3Qd0WQegkQcQAQYUiQcUAEApBBBAdIgBBCDYCAEEEEB0iAUEINgIAQZo3QdcWQbo3QeokQcYAIABBujdB7iRBxwAgARAHQQQQHSIAQQA2AgBBBBAdIgFBADYCAEGaN0HHDEGzN0HEIkHIACAAQbM3QbgkQckAIAEQB0GaNxAJQZs3QZw3QZ03QQBBgCJBygBBgyJBAEGDIkEAQc4XQYUiQcsAEAVBmzdBAUH0JEGAIkHMAEHNABAOQZs3QbkMQQFB9CRBgCJBzABBzQAQAkGbN0GjFkECQfgkQcQiQc4AQc8AEAJBmzdB6QhBAkGAJUG4IkHQAEHRABACQQgQHSIAQQA2AgQgAEHSADYCAEGbN0HZDUECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEHUADYCAEGbN0G9F0EDQYglQbgkQdUAIABBABAAQQgQHSIAQQA2AgQgAEHWADYCAEGbN0HyFkEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHYADYCAEGbN0GfEkEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEHaADYCAEGbN0HNC0EEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEHbADYCAEGbN0HMCkEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHcADYCAEGbN0GaDkEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHdADYCAEGbN0G4FkEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHeADYCAEGbN0HLEkEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHfADYCAEGbN0H0EEEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHgADYCAEGbN0GoCkEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHhADYCAEGbN0HtEkEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEHiADYCAEGbN0HgC0EEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEHjADYCAEGbN0G8EUEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHkADYCAEGbN0HECUEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHlADYCAEGbN0HxCEEDQZQlQbgkQdcAIABBABAAQQgQHSIAQQA2AgQgAEHmADYCAEGbN0GHCUEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHoADYCAEGbN0G2DkEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHpADYCAEGbN0G5C0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHqADYCAEGbN0GrEUECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEHrADYCAEGbN0GsCUEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHsADYCAEGbN0HFE0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHtADYCAEGbN0GfFEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHuADYCAEGbN0GEDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHvADYCAEGbN0HKEUECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEHwADYCAEGbN0HzDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHxADYCAEGbN0GUC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEHyADYCAEGbN0GdEUECQYAlQbgiQdMAIABBABAAQQgQHSIAQQA2AgQgAEHzADYCAEGbN0GxFEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH0ADYCAEGbN0GUDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH1ADYCAEGbN0GHDUEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH2ADYCAEGbN0GlC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH3ADYCAEGbN0GHFEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH4ADYCAEGbN0HxC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH5ADYCAEGbN0HZDEEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH6ADYCAEGbN0GAC0EDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH7ADYCAEGbN0GBEkEDQbglQe4kQecAIABBABAAQQgQHSIAQQA2AgQgAEH8ADYCAEGbN0GtEEEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH9ADYCAEGbN0GfFUEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH+ADYCAEGbN0GnDEEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEH/ADYCAEGbN0GMEUEEQaAlQbAlQdkAIABBABAAQQgQHSIAQQA2AgQgAEGAATYCAEGbN0GCF0ECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGCATYCAEGbN0GrEkEDQcwlQaAjQYMBIABBABAAQQgQHSIAQQA2AgQgAEGEATYCAEGbN0HcCkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGFATYCAEGbN0GoDkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGGATYCAEGbN0HFFkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGHATYCAEGbN0HcEkECQcQlQcQiQYEBIABBABAAQQgQHSIAQQA2AgQgAEGI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ADoAACAAIAAoAiwiATYCHCAAIAE2AhQgAgsEAEIACwQAQQALigUCBn4CfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQkgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAhSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMIQgSGIAgpAwAiA0I8iIQhAiAIKQMQIAgpAxiEQgBSrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAhBIGokACAJIAIgBkKAgICAgICAgIB/g4S/OQMAC5gYAxJ/AXwDfiMAQbAEayIMJAAgDEEANgIsAkAgAb0iGUIAUwRAQQEhEUGZCSETIAGaIgG9IRkMAQsgBEGAEHEEQEEBIRFBnAkhEwwBC0GfCUGaCSAEQQFxIhEbIRMgEUUhFQsCQCAZQoCAgICAgID4/wCDQoCAgICAgID4/wBRBEAgAEEgIAIgEUEDaiIDIARB//97cRAoIAAgEyARECcgAEGTE0GDGyAFQSBxIgUbQbQWQYcbIAUbIAEgAWIbQQMQJyAAQSAgAiADIARBgMAAcxAo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ABECAAsFAEGbNwsPACABIAAoAgBqIAI2AgALDQAgASAAKAIAaigCAAsYAQF/QRAQHSIAQgA3AwggAEEANgIAIAALGAEBf0EQEB0iAEIANwMAIABCADcDCCAACwwAQTAQHUEAQTAQKgs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALERsACwUAQZY3CyEAIAAgASgCACABIAEsAAtBAEgbQZM3IAIoAgAQDzYCAAsqAQF/QQwQHSIBQQA6AAQgASAAKAIANgIIIABBADYCACABQcgjNgIAIAELBQBBkzcLBQBBkDcLIQAgACABKAIAIAEgASwAC0EASBtB/DYgAigCABAPNgIAC9gBAQR/IwBBIGsiAyQAIAEoAgAiBEHw////B0kEQAJAAkAgBEELTwRAIARBD3JBAWoiBRAdIQYgAyAFQYCAgIB4cjYCECADIAY2AgggAyAENgIMIAQgBmohBQwBCyADIAQ6ABMgA0EIaiIGIARqIQUgBEUNAQsgBiABQQRqIAQQKxoLIAVBADoAACADIAI2AgAgA0EYaiADQQhqIAMgABEDACADKAIYEBAgAygCGCIAEAYgAygCABAGIAMsABNBAEgEQCADKAIIECkLIANBIGokACAADwsQBAALKgEBf0EMEB0iAUEAOgAEIAEgACgCADYCCCAAQQA2AgAgAUHQIjYCACABCwUAQfw2C2kBAn8jAEEQayIGJAAgASAAKAIEIgdBAXVqIQEgACgCACEAIAYgASACIAMgBCAFIAdBAXEEfyABKAIAIABqKAIABSAACxEOAEEQEB0iACAGKQMINwMIIAAgBikDADcDACAGQRBqJAAgAAsFAEH4NgubAQIBfwF9IwBBEGsiAiQAIAAoAgAhACABQQZIBEACfwJAAkACQCABQQRrDgIAAQILIABBpAJqIAAtAKwCQQNxQQJGDQIaIABBnAJqDAILIABBnAJqIAAtAKwCQQNxQQJGDQEaIABBpAJqDAELIAAgAUECdGpBnAJqCyoCACEDIAJBEGokACADuw8LIAJB0A42AgAgACACEC0QLAALmwECAX8BfSMAQRBrIgIkACAAKAIAIQAgAUEGSARAAn8CQAJAAkAgAUEEaw4CAAECCyAAQZQCaiAALQCsAkEDcUECRg0CGiAAQYwC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bXNlbHZlcyBhcyBkaXJ0eQBpc0RpcnR5AG1hcmtEaXJ0eQBkZXN0cm95AHNldERpc3BsYXkAZ2V0RGlzcGxheQBzZXRGbGV4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAc2V0RmxleEdyb3cAZ2V0RmxleEdyb3cAc2V0T3ZlcmZsb3cAZ2V0T3ZlcmZsb3cAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AHNldEFsaWduQ29udGVudABnZXRBbGlnbkNvbnRlbnQAZ2V0UGFyZW50AGltcGxlbWVudABzZXRNYXhIZWlnaHRQZXJjZW50AHNldEhlaWdodFBlcmNlbnQAc2V0TWluSGVpZ2h0UGVyY2VudABzZXRGbGV4QmFzaXNQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHVzZUxlZ2FjeVN0cmV0Y2hCZWhhdmlvdXIAc2V0VXNlTGVnYWN5U3RyZXRjaEJlaGF2aW91cgBzZXRQb2ludFNjYWxlRmFjdG9yAE1lYXN1cmVDYWxsYmFja1dyYXBwZXIARGlydGllZENhbGxiYWNrV3JhcHBlcgBDYW5ub3QgcmVzZXQgYSBub2RlIHN0aWxsIGF0dGFjaGVkIHRvIGEgb3duZXIAc2V0Qm9yZGVyAGdldEJvcmRlcgBnZXRDb21wdXRlZEJvcmRlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRNYXJnaW5BdXRvAHNldFdpZHRoQXV0bwBTY2FsZSBmYWN0b3Igc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gemVybwBzZXRBc3BlY3RSYXRpbwBnZXRBc3BlY3RSYXRpbwBzZXRQb3NpdGlvbgBnZXRQb3NpdGlvbgBub3RpZnlPbkRlc3RydWN0aW9uAHNldEZsZXhEaXJlY3Rpb24AZ2V0RmxleERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAd2lkdGgAc2V0TWF4V2lkdGgAZ2V0TWF4V2lkdGgAc2V0V2lkdGgAZ2V0V2lkdGgAc2V0TWluV2lkdGgAZ2V0TWluV2lkdGgAZ2V0Q29tcHV0ZWRXaWR0aAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAEF0dGVtcHRpbmcgdG8gY29uc3RydWN0IFlHTm9kZSB3aXRoIG51bGwgY29uZmlnAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBjcmVhdGVXaXRoQ29uZmlnAGluZgBzZXRBbGlnblNlbGYAZ2V0QWxpZ25TZWxmAFNpemUAdmFsdWUAVmFsdWUAY3JlYXRlAG1lYXN1cmUAc2V0UG9zaXRpb25UeXBlAGdldFBvc2l0aW9uVHlwZQBpc1JlZmVyZW5jZUJhc2VsaW5lAHNldElzUmVmZXJlbmNlQmFzZWxpbmUAY29weVN0eWxlAGRvdWJsZQBOb2RlAGV4dGVuZABpbnNlcnRDaGlsZABnZXRDaGlsZAByZW1vdmVDaGlsZAB2b2lkAGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodE1lYXN1cmVNb2RlIG11c3QgYmUgWUdNZWFzdXJlTW9kZVVuZGVmaW5lZABhdmFpbGFibGVXaWR0aCBpcyBpbmRlZmluaXRlIHNvIHdpZHRoTWVhc3VyZU1vZGUgbXVzdCBiZSBZR01lYXN1cmVNb2RlVW5kZWZpbmVkAHNldEV4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGlzRXhwZXJpbWVudGFsRmVhdHVyZUVuYWJsZWQAZGlydGllZABDYW5ub3QgcmVzZXQgYSBub2RlIHdoaWNoIHN0aWxsIGhhcyBjaGlsZHJlbiBhdHRhY2hlZAB1bnNldE1lYXN1cmVGdW5jAHVuc2V0RGlydGllZEZ1bmMAc2V0RXJyYXRhAGdldEVycmF0YQBFeHBlY3QgY3VzdG9tIGJhc2VsaW5lIGZ1bmN0aW9uIHRvIG5vdCByZXR1cm4gTmFOAE5BTgBJTkYAZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVp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\";if(!va(G)){var wa=G;G=h.locateFile?h.locateFile(wa,q):q+wa}\nfunction xa(){var a=G;try{if(a==G&&w)return new Uint8Array(w);if(va(a))try{var b=ya(a.slice(37)),c=new Uint8Array(b.length);for(a=0;a=b?\"_\"+a:a}\nfunction Ca(a,b){a=Ba(a);return function(){return b.apply(this,arguments)}}var H=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Da=[];function Ea(a){var b=Error,c=Ca(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+\"\\n\"+d.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message};return c}var J=void 0;\nfunction K(a){throw new J(a);}var L=a=>{a||K(\"Cannot use deleted val. handle = \"+a);return H[a].value},Fa=a=>{switch(a){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var b=Da.length?Da.pop():H.length;H[b]={fa:1,value:a};return b}},Ga=void 0,Ha=void 0;function M(a){for(var b=\"\";z[a];)b+=Ha[z[a++]];return b}var N=[];function Ia(){for(;N.length;){var a=N.pop();a.L.Z=!1;a[\"delete\"]()}}var O=void 0,P={};\nfunction Ja(a,b){for(void 0===b&&K(\"ptr should not be undefined\");a.P;)b=a.aa(b),a=a.P;return b}var Q={};function Ka(a){a=La(a);var b=M(a);R(a);return b}function Ma(a,b){var c=Q[a];void 0===c&&K(b+\" has unknown type \"+Ka(a));return c}function Na(){}var Oa=!1;function Pa(a){--a.count.value;0===a.count.value&&(a.S?a.T.V(a.S):a.O.M.V(a.N))}function Qa(a,b,c){if(b===c)return a;if(void 0===c.P)return null;a=Qa(a,b,c.P);return null===a?null:c.ma(a)}var Ra={};function Sa(a,b){b=Ja(a,b);return P[b]}\nvar Ta=void 0;function Ua(a){throw new Ta(a);}function Va(a,b){b.O&&b.N||Ua(\"makeClassHandle requires ptr and ptrType\");!!b.T!==!!b.S&&Ua(\"Both smartPtrType and smartPtr must be specified\");b.count={value:1};return S(Object.create(a,{L:{value:b}}))}function S(a){if(\"undefined\"===typeof FinalizationRegistry)return S=b=>b,a;Oa=new FinalizationRegistry(b=>{Pa(b.L)});S=b=>{var c=b.L;c.S&&Oa.register(b,{L:c},b);return b};Na=b=>{Oa.unregister(b)};return S(a)}var Wa={};\nfunction Xa(a){for(;a.length;){var b=a.pop();a.pop()(b)}}function T(a){return this.fromWireType(C[a>>2])}var U={},Ya={};function V(a,b,c){function d(k){k=c(k);k.length!==a.length&&Ua(\"Mismatched type converter count\");for(var m=0;m{Q.hasOwnProperty(k)?e[m]=Q[k]:(f.push(k),U.hasOwnProperty(k)||(U[k]=[]),U[k].push(()=>{e[m]=Q[k];++g;g===f.length&&d(e)}))});0===f.length&&d(e)}\nfunction Za(a){switch(a){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+a);}}\nfunction W(a,b,c={}){if(!(\"argPackAdvance\"in b))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");var d=b.name;a||K('type \"'+d+'\" must have a positive integer typeid pointer');if(Q.hasOwnProperty(a)){if(c.ta)return;K(\"Cannot register type '\"+d+\"' twice\")}Q[a]=b;delete Ya[a];U.hasOwnProperty(a)&&(b=U[a],delete U[a],b.forEach(e=>e()))}function $a(a){K(a.L.O.M.name+\" instance already deleted\")}function X(){}\nfunction ab(a,b,c){if(void 0===a[b].R){var d=a[b];a[b]=function(){a[b].R.hasOwnProperty(arguments.length)||K(\"Function '\"+c+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+a[b].R+\")!\");return a[b].R[arguments.length].apply(this,arguments)};a[b].R=[];a[b].R[d.Y]=d}}\nfunction bb(a,b){h.hasOwnProperty(a)?(K(\"Cannot register public name '\"+a+\"' twice\"),ab(h,a,a),h.hasOwnProperty(void 0)&&K(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"),h[a].R[void 0]=b):h[a]=b}function cb(a,b,c,d,e,f,g,k){this.name=a;this.constructor=b;this.W=c;this.V=d;this.P=e;this.oa=f;this.aa=g;this.ma=k;this.ia=[]}\nfunction db(a,b,c){for(;b!==c;)b.aa||K(\"Expected null or instance of \"+c.name+\", got an instance of \"+b.name),a=b.aa(a),b=b.P;return a}function eb(a,b){if(null===b)return this.da&&K(\"null is not a valid \"+this.name),0;b.L||K('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.L.N||K(\"Cannot pass deleted object as a pointer of type \"+this.name);return db(b.L.N,b.L.O.M,this.M)}\nfunction gb(a,b){if(null===b){this.da&&K(\"null is not a valid \"+this.name);if(this.ca){var c=this.ea();null!==a&&a.push(this.V,c);return c}return 0}b.L||K('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.L.N||K(\"Cannot pass deleted object as a pointer of type \"+this.name);!this.ba&&b.L.O.ba&&K(\"Cannot convert argument of type \"+(b.L.T?b.L.T.name:b.L.O.name)+\" to parameter type \"+this.name);c=db(b.L.N,b.L.O.M,this.M);if(this.ca)switch(void 0===b.L.S&&K(\"Passing raw pointer to smart pointer is illegal\"),\nthis.Aa){case 0:b.L.T===this?c=b.L.S:K(\"Cannot convert argument of type \"+(b.L.T?b.L.T.name:b.L.O.name)+\" to parameter type \"+this.name);break;case 1:c=b.L.S;break;case 2:if(b.L.T===this)c=b.L.S;else{var d=b.clone();c=this.wa(c,Fa(function(){d[\"delete\"]()}));null!==a&&a.push(this.V,c)}break;default:K(\"Unsupporting sharing policy\")}return c}\nfunction hb(a,b){if(null===b)return this.da&&K(\"null is not a valid \"+this.name),0;b.L||K('Cannot pass \"'+fb(b)+'\" as a '+this.name);b.L.N||K(\"Cannot pass deleted object as a pointer of type \"+this.name);b.L.O.ba&&K(\"Cannot convert argument of type \"+b.L.O.name+\" to parameter type \"+this.name);return db(b.L.N,b.L.O.M,this.M)}\nfunction Y(a,b,c,d){this.name=a;this.M=b;this.da=c;this.ba=d;this.ca=!1;this.V=this.wa=this.ea=this.ja=this.Aa=this.va=void 0;void 0!==b.P?this.toWireType=gb:(this.toWireType=d?eb:hb,this.U=null)}function ib(a,b){h.hasOwnProperty(a)||Ua(\"Replacing nonexistant public symbol\");h[a]=b;h[a].Y=void 0}\nfunction jb(a,b){var c=[];return function(){c.length=0;Object.assign(c,arguments);if(a.includes(\"j\")){var d=h[\"dynCall_\"+a];d=c&&c.length?d.apply(null,[b].concat(c)):d.call(null,b)}else d=pa.get(b).apply(null,c);return d}}function Z(a,b){a=M(a);var c=a.includes(\"j\")?jb(a,b):pa.get(b);\"function\"!=typeof c&&K(\"unknown function pointer with signature \"+a+\": \"+b);return c}var mb=void 0;\nfunction nb(a,b){function c(f){e[f]||Q[f]||(Ya[f]?Ya[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};b.forEach(c);throw new mb(a+\": \"+d.map(Ka).join([\", \"]));}\nfunction ob(a,b,c,d,e){var f=b.length;2>f&&K(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var g=null!==b[1]&&null!==c,k=!1;for(c=1;c>2]);return c}function qb(a){4>2])};case 3:return function(c){return this.fromWireType(na[c>>3])};default:throw new TypeError(\"Unknown float type: \"+a);}}\nfunction sb(a,b,c){switch(b){case 0:return c?function(d){return ka[d]}:function(d){return z[d]};case 1:return c?function(d){return A[d>>1]}:function(d){return la[d>>1]};case 2:return c?function(d){return C[d>>2]}:function(d){return D[d>>2]};default:throw new TypeError(\"Unknown integer type: \"+a);}}function tb(a,b){for(var c=\"\",d=0;!(d>=b/2);++d){var e=A[a+2*d>>1];if(0==e)break;c+=String.fromCharCode(e)}return c}\nfunction ub(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;A[b>>1]=0;return b-d}function vb(a){return 2*a.length}function wb(a,b){for(var c=0,d=\"\";!(c>=b/4);){var e=C[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}\nfunction xb(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=f){var g=a.charCodeAt(++e);f=65536+((f&1023)<<10)|g&1023}C[b>>2]=f;b+=4;if(b+4>c)break}C[b>>2]=0;return b-d}function yb(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var zb={};function Ab(a){var b=zb[a];return void 0===b?M(a):b}var Bb=[];function Cb(a){var b=Bb.length;Bb.push(a);return b}\nfunction Db(a,b){for(var c=Array(a),d=0;d>2],\"parameter \"+d);return c}var Eb=[],Fb=[null,[],[]];J=h.BindingError=Ea(\"BindingError\");h.count_emval_handles=function(){for(var a=0,b=5;bHb;++Hb)Gb[Hb]=String.fromCharCode(Hb);Ha=Gb;h.getInheritedInstanceCount=function(){return Object.keys(P).length};\nh.getLiveInheritedInstances=function(){var a=[],b;for(b in P)P.hasOwnProperty(b)&&a.push(P[b]);return a};h.flushPendingDeletes=Ia;h.setDelayFunction=function(a){O=a;N.length&&O&&O(Ia)};Ta=h.InternalError=Ea(\"InternalError\");X.prototype.isAliasOf=function(a){if(!(this instanceof X&&a instanceof X))return!1;var b=this.L.O.M,c=this.L.N,d=a.L.O.M;for(a=a.L.N;b.P;)c=b.aa(c),b=b.P;for(;d.P;)a=d.aa(a),d=d.P;return b===d&&c===a};\nX.prototype.clone=function(){this.L.N||$a(this);if(this.L.$)return this.L.count.value+=1,this;var a=S,b=Object,c=b.create,d=Object.getPrototypeOf(this),e=this.L;a=a(c.call(b,d,{L:{value:{count:e.count,Z:e.Z,$:e.$,N:e.N,O:e.O,S:e.S,T:e.T}}}));a.L.count.value+=1;a.L.Z=!1;return a};X.prototype[\"delete\"]=function(){this.L.N||$a(this);this.L.Z&&!this.L.$&&K(\"Object already scheduled for deletion\");Na(this);Pa(this.L);this.L.$||(this.L.S=void 0,this.L.N=void 0)};X.prototype.isDeleted=function(){return!this.L.N};\nX.prototype.deleteLater=function(){this.L.N||$a(this);this.L.Z&&!this.L.$&&K(\"Object already scheduled for deletion\");N.push(this);1===N.length&&O&&O(Ia);this.L.Z=!0;return this};Y.prototype.pa=function(a){this.ja&&(a=this.ja(a));return a};Y.prototype.ga=function(a){this.V&&this.V(a)};Y.prototype.argPackAdvance=8;Y.prototype.readValueFromPointer=T;Y.prototype.deleteObject=function(a){if(null!==a)a[\"delete\"]()};\nY.prototype.fromWireType=function(a){function b(){return this.ca?Va(this.M.W,{O:this.va,N:c,T:this,S:a}):Va(this.M.W,{O:this,N:a})}var c=this.pa(a);if(!c)return this.ga(a),null;var d=Sa(this.M,c);if(void 0!==d){if(0===d.L.count.value)return d.L.N=c,d.L.S=a,d.clone();d=d.clone();this.ga(a);return d}d=this.M.oa(c);d=Ra[d];if(!d)return b.call(this);d=this.ba?d.ka:d.pointerType;var e=Qa(c,this.M,d.M);return null===e?b.call(this):this.ca?Va(d.M.W,{O:d,N:e,T:this,S:a}):Va(d.M.W,{O:d,N:e})};\nmb=h.UnboundTypeError=Ea(\"UnboundTypeError\");\nvar ya=\"function\"==typeof atob?atob:function(a){var b=\"\",c=0;a=a.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var d=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));var g=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(a.charAt(c++));d=d<<2|e>>4;\ne=(e&15)<<4|f>>2;var k=(f&3)<<6|g;b+=String.fromCharCode(d);64!==f&&(b+=String.fromCharCode(e));64!==g&&(b+=String.fromCharCode(k))}while(cg.sa).concat(e.map(g=>g.ya));V([a],f,g=>{var k={};e.forEach((m,l)=>{var n=g[l],p=m.qa,r=m.ra,u=g[l+e.length],t=m.xa,y=m.za;k[m.na]={read:B=>n.fromWireType(p(r,B)),write:(B,aa)=>{var I=[];t(y,B,u.toWireType(I,aa));Xa(I)}}});return[{name:b.name,fromWireType:function(m){var l={},n;for(n in k)l[n]=k[n].read(m);d(m);return l},toWireType:function(m,\nl){for(var n in k)if(!(n in l))throw new TypeError('Missing field: \"'+n+'\"');var p=c();for(n in k)k[n].write(p,l[n]);null!==m&&m.push(d,p);return p},argPackAdvance:8,readValueFromPointer:T,U:d}]})},v:function(){},B:function(a,b,c,d,e){var f=Za(c);b=M(b);W(a,{name:b,fromWireType:function(g){return!!g},toWireType:function(g,k){return k?d:e},argPackAdvance:8,readValueFromPointer:function(g){if(1===c)var k=ka;else if(2===c)k=A;else if(4===c)k=C;else throw new TypeError(\"Unknown boolean type size: \"+\nb);return this.fromWireType(k[g>>f])},U:null})},f:function(a,b,c,d,e,f,g,k,m,l,n,p,r){n=M(n);f=Z(e,f);k&&(k=Z(g,k));l&&(l=Z(m,l));r=Z(p,r);var u=Ba(n);bb(u,function(){nb(\"Cannot construct \"+n+\" due to unbound types\",[d])});V([a,b,c],d?[d]:[],function(t){t=t[0];if(d){var y=t.M;var B=y.W}else B=X.prototype;t=Ca(u,function(){if(Object.getPrototypeOf(this)!==aa)throw new J(\"Use 'new' to construct \"+n);if(void 0===I.X)throw new J(n+\" has no accessible constructor\");var kb=I.X[arguments.length];if(void 0===\nkb)throw new J(\"Tried to invoke ctor of \"+n+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(I.X).toString()+\") parameters instead!\");return kb.apply(this,arguments)});var aa=Object.create(B,{constructor:{value:t}});t.prototype=aa;var I=new cb(n,t,aa,r,y,f,k,l);y=new Y(n,I,!0,!1);B=new Y(n+\"*\",I,!1,!1);var lb=new Y(n+\" const*\",I,!1,!0);Ra[a]={pointerType:B,ka:lb};ib(u,t);return[y,B,lb]})},c:function(a,b,c,d,e,f,g){var k=pb(c,d);b=M(b);f=Z(e,f);V([],[a],function(m){function l(){nb(\"Cannot call \"+\nn+\" due to unbound types\",k)}m=m[0];var n=m.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);var p=m.M.constructor;void 0===p[b]?(l.Y=c-1,p[b]=l):(ab(p,b,n),p[b].R[c-1]=l);V([],k,function(r){r=ob(n,[r[0],null].concat(r.slice(1)),null,f,g);void 0===p[b].R?(r.Y=c-1,p[b]=r):p[b].R[c-1]=r;return[]});return[]})},o:function(a,b,c,d,e,f){0{nb(\"Cannot construct \"+k.name+\" due to unbound types\",g)};V([],g,function(l){l.splice(1,0,null);k.M.X[b-1]=ob(m,l,null,e,f);return[]});return[]})},a:function(a,b,c,d,e,f,g,k){var m=pb(c,d);b=M(b);f=Z(e,f);V([],[a],function(l){function n(){nb(\"Cannot call \"+p+\" due to unbound types\",m)}l=l[0];var p=l.name+\".\"+b;b.startsWith(\"@@\")&&(b=Symbol[b.substring(2)]);\nk&&l.M.ia.push(b);var r=l.M.W,u=r[b];void 0===u||void 0===u.R&&u.className!==l.name&&u.Y===c-2?(n.Y=c-2,n.className=l.name,r[b]=n):(ab(r,b,p),r[b].R[c-2]=n);V([],m,function(t){t=ob(p,t,l,f,g);void 0===r[b].R?(t.Y=c-2,r[b]=t):r[b].R[c-2]=t;return[]});return[]})},A:function(a,b){b=M(b);W(a,{name:b,fromWireType:function(c){var d=L(c);qb(c);return d},toWireType:function(c,d){return Fa(d)},argPackAdvance:8,readValueFromPointer:T,U:null})},m:function(a,b,c){c=Za(c);b=M(b);W(a,{name:b,fromWireType:function(d){return d},\ntoWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:rb(b,c),U:null})},d:function(a,b,c,d,e){b=M(b);-1===e&&(e=4294967295);e=Za(c);var f=k=>k;if(0===d){var g=32-8*c;f=k=>k<>>g}c=b.includes(\"unsigned\")?function(k,m){return m>>>0}:function(k,m){return m};W(a,{name:b,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:sb(b,e,0!==d),U:null})},b:function(a,b,c){function d(f){f>>=2;var g=D;return new e(ja,g[f+1],g[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,\nInt32Array,Uint32Array,Float32Array,Float64Array][b];c=M(c);W(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ta:!0})},n:function(a,b){b=M(b);var c=\"std::string\"===b;W(a,{name:b,fromWireType:function(d){var e=D[d>>2],f=d+4;if(c)for(var g=f,k=0;k<=e;++k){var m=f+k;if(k==e||0==z[m]){g=g?ia(z,g,m-g):\"\";if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=m+1}}else{l=Array(e);for(k=0;k=m?k++:2047>=m?k+=2:55296<=m&&57343>=m?(k+=4,++f):k+=3}f=k}else f=e.length;k=Ib(4+f+1);m=k+4;D[k>>2]=f;if(c&&g){if(g=m,m=f+1,f=z,0=n){var p=e.charCodeAt(++l);n=65536+\n((n&1023)<<10)|p&1023}if(127>=n){if(g>=m)break;f[g++]=n}else{if(2047>=n){if(g+1>=m)break;f[g++]=192|n>>6}else{if(65535>=n){if(g+2>=m)break;f[g++]=224|n>>12}else{if(g+3>=m)break;f[g++]=240|n>>18;f[g++]=128|n>>12&63}f[g++]=128|n>>6&63}f[g++]=128|n&63}}f[g]=0}}else if(g)for(g=0;gla;var k=1}else 4===b&&(d=wb,e=xb,f=yb,g=()=>D,k=2);W(a,{name:c,fromWireType:function(m){for(var l=D[m>>2],n=g(),p,r=m+4,u=0;u<=l;++u){var t=m+4+u*b;if(u==l||0==n[t>>k])r=d(r,t-r),void 0===p?p=r:(p+=String.fromCharCode(0),p+=r),r=t+b}R(m);return p},toWireType:function(m,l){\"string\"!=typeof l&&K(\"Cannot pass non-string to C++ string type \"+c);var n=f(l),p=Ib(4+n+b);D[p>>2]=n>>k;e(l,p+4,n+b);null!==m&&m.push(R,p);return p},argPackAdvance:8,\nreadValueFromPointer:T,U:function(m){R(m)}})},k:function(a,b,c,d,e,f){Wa[a]={name:M(b),ea:Z(c,d),V:Z(e,f),ha:[]}},h:function(a,b,c,d,e,f,g,k,m,l){Wa[a].ha.push({na:M(b),sa:c,qa:Z(d,e),ra:f,ya:g,xa:Z(k,m),za:l})},C:function(a,b){b=M(b);W(a,{ua:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(a,b,c,d,e){a=Bb[a];b=L(b);c=Ab(c);var f=[];D[d>>2]=Fa(f);return a(b,c,f,e)},t:function(a,b,c,d){a=Bb[a];b=L(b);c=Ab(c);a(b,c,null,d)},g:qb,l:function(a,b){var c=Db(a,b),\nd=c[0];b=d.name+\"_$\"+c.slice(1).map(function(g){return g.name}).join(\"_\")+\"$\";var e=Eb[b];if(void 0!==e)return e;var f=Array(a-1);e=Cb((g,k,m,l)=>{for(var n=0,p=0;p>>=0;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);var e=Math;d=Math.max(a,d);e=e.min.call(e,2147483648,d+(65536-d%65536)%65536);a:{try{fa.grow(e-ja.byteLength+65535>>>16);oa();var f=1;break a}catch(g){}f=void 0}if(f)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(a,b,c,d){for(var e=0,f=0;f>2],k=D[b+4>>2];b+=8;for(var m=0;m>2]=e;return 0}};\n(function(){function a(e){h.asm=e.exports;fa=h.asm.D;oa();pa=h.asm.I;ra.unshift(h.asm.E);E--;h.monitorRunDependencies&&h.monitorRunDependencies(E);0==E&&(null!==ua&&(clearInterval(ua),ua=null),F&&(e=F,F=null,e()))}function b(e){a(e.instance)}function c(e){return za().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){v(\"failed to asynchronously prepare wasm: \"+f);x(f)})}var d={a:Jb};E++;h.monitorRunDependencies&&h.monitorRunDependencies(E);if(h.instantiateWasm)try{return h.instantiateWasm(d,\na)}catch(e){v(\"Module.instantiateWasm callback failed with error: \"+e),ca(e)}(function(){return w||\"function\"!=typeof WebAssembly.instantiateStreaming||va(G)||\"function\"!=typeof fetch?c(b):fetch(G,{credentials:\"same-origin\"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(f){v(\"wasm streaming compile failed: \"+f);v(\"falling back to ArrayBuffer instantiation\");return c(b)})})})().catch(ca);return{}})();\nh.___wasm_call_ctors=function(){return(h.___wasm_call_ctors=h.asm.E).apply(null,arguments)};var La=h.___getTypeName=function(){return(La=h.___getTypeName=h.asm.F).apply(null,arguments)};h.__embind_initialize_bindings=function(){return(h.__embind_initialize_bindings=h.asm.G).apply(null,arguments)};var Ib=h._malloc=function(){return(Ib=h._malloc=h.asm.H).apply(null,arguments)},R=h._free=function(){return(R=h._free=h.asm.J).apply(null,arguments)};\nh.dynCall_jiji=function(){return(h.dynCall_jiji=h.asm.K).apply(null,arguments)};var Kb;F=function Lb(){Kb||Mb();Kb||(F=Lb)};\nfunction Mb(){function a(){if(!Kb&&(Kb=!0,h.calledRun=!0,!ha)){Aa(ra);ba(h);if(h.onRuntimeInitialized)h.onRuntimeInitialized();if(h.postRun)for(\"function\"==typeof h.postRun&&(h.postRun=[h.postRun]);h.postRun.length;){var b=h.postRun.shift();sa.unshift(b)}Aa(sa)}}if(!(0>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports,require(\"react\"),require(\"prop-types\"),require(\"classnames\"),require(\"date-fns/isDate\"),require(\"date-fns/isValid\"),require(\"date-fns/format\"),require(\"date-fns/addMinutes\"),require(\"date-fns/addHours\"),require(\"date-fns/addDays\"),require(\"date-fns/addWeeks\"),require(\"date-fns/addMonths\"),require(\"date-fns/addQuarters\"),require(\"date-fns/addYears\"),require(\"date-fns/subDays\"),require(\"date-fns/subWeeks\"),require(\"date-fns/subMonths\"),require(\"date-fns/subQuarters\"),require(\"date-fns/subYears\"),require(\"date-fns/getSeconds\"),require(\"date-fns/getMinutes\"),require(\"date-fns/getHours\"),require(\"date-fns/getDay\"),require(\"date-fns/getDate\"),require(\"date-fns/getISOWeek\"),require(\"date-fns/getMonth\"),require(\"date-fns/getQuarter\"),require(\"date-fns/getYear\"),require(\"date-fns/getTime\"),require(\"date-fns/setSeconds\"),require(\"date-fns/setMinutes\"),require(\"date-fns/setHours\"),require(\"date-fns/setMonth\"),require(\"date-fns/setQuarter\"),require(\"date-fns/setYear\"),require(\"date-fns/min\"),require(\"date-fns/max\"),require(\"date-fns/differenceInCalendarDays\"),require(\"date-fns/differenceInCalendarMonths\"),require(\"date-fns/differenceInCalendarYears\"),require(\"date-fns/startOfDay\"),require(\"date-fns/startOfWeek\"),require(\"date-fns/startOfMonth\"),require(\"date-fns/startOfQuarter\"),require(\"date-fns/startOfYear\"),require(\"date-fns/endOfDay\"),require(\"date-fns/endOfWeek\"),require(\"date-fns/endOfMonth\"),require(\"date-fns/endOfYear\"),require(\"date-fns/isEqual\"),require(\"date-fns/isSameDay\"),require(\"date-fns/isSameMonth\"),require(\"date-fns/isSameYear\"),require(\"date-fns/isSameQuarter\"),require(\"date-fns/isAfter\"),require(\"date-fns/isBefore\"),require(\"date-fns/isWithinInterval\"),require(\"date-fns/toDate\"),require(\"date-fns/parse\"),require(\"date-fns/parseISO\"),require(\"react-onclickoutside\"),require(\"react-dom\"),require(\"@floating-ui/react\"),require(\"date-fns/set\")):\"function\"==typeof define&&define.amd?define([\"exports\",\"react\",\"prop-types\",\"classnames\",\"date-fns/isDate\",\"date-fns/isValid\",\"date-fns/format\",\"date-fns/addMinutes\",\"date-fns/addHours\",\"date-fns/addDays\",\"date-fns/addWeeks\",\"date-fns/addMonths\",\"date-fns/addQuarters\",\"date-fns/addYears\",\"date-fns/subDays\",\"date-fns/subWeeks\",\"date-fns/subMonths\",\"date-fns/subQuarters\",\"date-fns/subYears\",\"date-fns/getSeconds\",\"date-fns/getMinutes\",\"date-fns/getHours\",\"date-fns/getDay\",\"date-fns/getDate\",\"date-fns/getISOWeek\",\"date-fns/getMonth\",\"date-fns/getQuarter\",\"date-fns/getYear\",\"date-fns/getTime\",\"date-fns/setSeconds\",\"date-fns/setMinutes\",\"date-fns/setHours\",\"date-fns/setMonth\",\"date-fns/setQuarter\",\"date-fns/setYear\",\"date-fns/min\",\"date-fns/max\",\"date-fns/differenceInCalendarDays\",\"date-fns/differenceInCalendarMonths\",\"date-fns/differenceInCalendarYears\",\"date-fns/startOfDay\",\"date-fns/startOfWeek\",\"date-fns/startOfMonth\",\"date-fns/startOfQuarter\",\"date-fns/startOfYear\",\"date-fns/endOfDay\",\"date-fns/endOfWeek\",\"date-fns/endOfMonth\",\"date-fns/endOfYear\",\"date-fns/isEqual\",\"date-fns/isSameDay\",\"date-fns/isSameMonth\",\"date-fns/isSameYear\",\"date-fns/isSameQuarter\",\"date-fns/isAfter\",\"date-fns/isBefore\",\"date-fns/isWithinInterval\",\"date-fns/toDate\",\"date-fns/parse\",\"date-fns/parseISO\",\"react-onclickoutside\",\"react-dom\",\"@floating-ui/react\",\"date-fns/set\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).DatePicker={},e.React,e.PropTypes,e.classNames,e.isDate,e.isValid$1,e.format,e.addMinutes,e.addHours,e.addDays,e.addWeeks,e.addMonths,e.addQuarters,e.addYears,e.subDays,e.subWeeks,e.subMonths,e.subQuarters,e.subYears,e.getSeconds,e.getMinutes,e.getHours,e.getDay,e.getDate,e.getISOWeek,e.getMonth,e.getQuarter,e.getYear,e.getTime,e.setSeconds,e.setMinutes,e.setHours,e.setMonth,e.setQuarter,e.setYear,e.min,e.max,e.differenceInCalendarDays,e.differenceInCalendarMonths,e.differenceInCalendarYears,e.startOfDay,e.startOfWeek,e.startOfMonth,e.startOfQuarter,e.startOfYear,e.endOfDay,e.endOfWeek,e.endOfMonth,e.endOfYear,e.isEqual$1,e.isSameDay$1,e.isSameMonth$1,e.isSameYear$1,e.isSameQuarter$1,e.isAfter,e.isBefore,e.isWithinInterval,e.toDate,e.parse,e.parseISO,e.onClickOutside,e.ReactDOM,e.react,e.set)}(this,(function(e,t,r,n,a,o,s,i,p,c,l,d,u,h,f,m,y,g,D,v,k,w,b,S,M,C,_,Y,E,P,N,O,x,I,T,R,L,F,A,W,K,Q,q,B,H,j,V,U,$,z,G,J,X,Z,ee,te,re,ne,ae,oe,se,ie,pe,ce){\"use strict\";function le(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var de=le(t),ue=le(n),he=le(se),fe=le(ie);function me(e,t,r){return t=Ye(t),function(e,t){if(t&&(\"object\"==typeof t||\"function\"==typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return Pe(e)}(e,ye()?Reflect.construct(t,r||[],Ye(e).constructor):t.apply(e,r))}function ye(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(ye=function(){return!!e})()}function ge(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function De(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,a=t.excludeDates,o=t.excludeDateIntervals,s=t.includeDates,i=t.includeDateIntervals,p=t.filterDate;return pt(e,{minDate:r,maxDate:n})||a&&a.some((function(t){return Ue(e,t.date?t.date:t)}))||o&&o.some((function(t){var r=t.start,n=t.end;return re.isWithinInterval(e,{start:r,end:n})}))||s&&!s.some((function(t){return Ue(e,t)}))||i&&!i.some((function(t){var r=t.start,n=t.end;return re.isWithinInterval(e,{start:r,end:n})}))||p&&!p(Te(e))||!1}function tt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeDates,n=t.excludeDateIntervals;return n&&n.length>0?n.some((function(t){var r=t.start,n=t.end;return re.isWithinInterval(e,{start:r,end:n})})):r&&r.some((function(t){return Ue(e,t.date?t.date:t)}))||!1}function rt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,a=t.excludeDates,o=t.includeDates,s=t.filterDate;return pt(e,{minDate:q.startOfMonth(r),maxDate:U.endOfMonth(n)})||a&&a.some((function(t){return je(e,t)}))||o&&!o.some((function(t){return je(e,t)}))||s&&!s(Te(e))||!1}function nt(e,t,r,n){var a=Y.getYear(e),o=C.getMonth(e),s=Y.getYear(t),i=C.getMonth(t),p=Y.getYear(n);return a===s&&a===p?o<=r&&r<=i:a=r||pa:void 0}function at(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,a=t.excludeDates,o=t.includeDates,s=t.filterDate;return pt(e,{minDate:r,maxDate:n})||a&&a.some((function(t){return Ve(e,t)}))||o&&!o.some((function(t){return Ve(e,t)}))||s&&!s(Te(e))||!1}function ot(e,t,r){if(!o.isValid(t)||!o.isValid(r))return!1;var n=Y.getYear(t),a=Y.getYear(r);return n<=e&&a>=e}function st(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate,a=t.excludeDates,o=t.includeDates,s=t.filterDate,i=new Date(e,0,1);return pt(i,{minDate:H.startOfYear(r),maxDate:$.endOfYear(n)})||a&&a.some((function(e){return He(i,e)}))||o&&!o.some((function(e){return He(i,e)}))||s&&!s(Te(i))||!1}function it(e,t,r,n){var a=Y.getYear(e),o=_.getQuarter(e),s=Y.getYear(t),i=_.getQuarter(t),p=Y.getYear(n);return a===s&&a===p?o<=r&&r<=i:a=r||pa:void 0}function pt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.maxDate;return r&&F.differenceInCalendarDays(e,r)<0||n&&F.differenceInCalendarDays(e,n)>0}function ct(e,t){return t.some((function(t){return w.getHours(t)===w.getHours(e)&&k.getMinutes(t)===k.getMinutes(e)}))}function lt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.excludeTimes,n=t.includeTimes,a=t.filterTime;return r&&ct(e,r)||n&&!ct(e,n)||a&&!a(e)||!1}function dt(e,t){var r=t.minTime,n=t.maxTime;if(!r||!n)throw new Error(\"Both minTime and maxTime props required\");var a,o=Te(),s=O.setHours(N.setMinutes(o,k.getMinutes(e)),w.getHours(e)),i=O.setHours(N.setMinutes(o,k.getMinutes(r)),w.getHours(r)),p=O.setHours(N.setMinutes(o,k.getMinutes(n)),w.getHours(n));try{a=!re.isWithinInterval(s,{start:i,end:p})}catch(e){a=!1}return a}function ut(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.includeDates,a=y.subMonths(e,1);return r&&A.differenceInCalendarMonths(r,a)>0||n&&n.every((function(e){return A.differenceInCalendarMonths(e,a)>0}))||!1}function ht(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,n=t.includeDates,a=d.addMonths(e,1);return r&&A.differenceInCalendarMonths(a,r)>0||n&&n.every((function(e){return A.differenceInCalendarMonths(a,e)>0}))||!1}function ft(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.includeDates,a=D.subYears(e,1);return r&&W.differenceInCalendarYears(r,a)>0||n&&n.every((function(e){return W.differenceInCalendarYears(e,a)>0}))||!1}function mt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,n=t.includeDates,a=h.addYears(e,1);return r&&W.differenceInCalendarYears(a,r)>0||n&&n.every((function(e){return W.differenceInCalendarYears(a,e)>0}))||!1}function yt(e){var t=e.minDate,r=e.includeDates;if(r&&t){var n=r.filter((function(e){return F.differenceInCalendarDays(e,t)>=0}));return R.min(n)}return r?R.min(r):t}function gt(e){var t=e.maxDate,r=e.includeDates;if(r&&t){var n=r.filter((function(e){return F.differenceInCalendarDays(e,t)<=0}));return L.max(n)}return r?L.max(r):t}function Dt(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--highlighted\",r=new Map,n=0,o=e.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"react-datepicker__day--holidays\",r=new Map;return e.forEach((function(e){var n=e.date,o=e.holidayName;if(a.isDate(n)){var s=Le(n,\"MM.dd.yyyy\"),i=r.get(s)||{};if(!(\"className\"in i)||i.className!==t||(p=i.holidayNames,c=[o],p.length!==c.length||!p.every((function(e,t){return e===c[t]})))){var p,c;i.className=t;var l=i.holidayNames;i.holidayNames=l?[].concat(Ne(l),[o]):[o],r.set(s,i)}}})),r}function kt(e,t,r,n,a){for(var o=a.length,s=[],c=0;c1&&void 0!==arguments[1]?arguments[1]:xe,r=Math.ceil(Y.getYear(e)/t)*t;return{startPeriod:r-(t-1),endPeriod:r}}function St(e){var t=e.getSeconds(),r=e.getMilliseconds();return ne.toDate(e.getTime()-1e3*t-r)}function Mt(e){if(!a.isDate(e))throw new Error(\"Invalid date\");var t=new Date(e);return t.setHours(0,0,0,0),t}function Ct(e,t){if(!a.isDate(e)||!a.isDate(t))throw new Error(\"Invalid date received\");var r=Mt(e),n=Mt(t);return te.isBefore(r,n)}function _t(e){return\" \"===e.key}function Yt(e,t,r,n){for(var a=[],o=0;o<2*t+1;o++){var s=e+t-o,i=!0;r&&(i=Y.getYear(r)<=s),n&&i&&(i=Y.getYear(n)>=s),i&&a.push(s)}return a}var Et=function(e){function r(e){var n;we(this,r),Me(Pe(n=me(this,r,[e])),\"renderOptions\",(function(){var e=n.props.year,t=n.state.yearsList.map((function(t){return de.default.createElement(\"div\",{className:e===t?\"react-datepicker__year-option react-datepicker__year-option--selected_year\":\"react-datepicker__year-option\",key:t,onClick:n.onChange.bind(Pe(n),t),\"aria-selected\":e===t?\"true\":void 0},e===t?de.default.createElement(\"span\",{className:\"react-datepicker__year-option--selected\"},\"✓\"):\"\",t)})),r=n.props.minDate?Y.getYear(n.props.minDate):null,a=n.props.maxDate?Y.getYear(n.props.maxDate):null;return a&&n.state.yearsList.find((function(e){return e===a}))||t.unshift(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"upcoming\",onClick:n.incrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\"}))),r&&n.state.yearsList.find((function(e){return e===r}))||t.push(de.default.createElement(\"div\",{className:\"react-datepicker__year-option\",key:\"previous\",onClick:n.decrementYears},de.default.createElement(\"a\",{className:\"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\"}))),t})),Me(Pe(n),\"onChange\",(function(e){n.props.onChange(e)})),Me(Pe(n),\"handleClickOutside\",(function(){n.props.onCancel()})),Me(Pe(n),\"shiftYears\",(function(e){var t=n.state.yearsList.map((function(t){return t+e}));n.setState({yearsList:t})})),Me(Pe(n),\"incrementYears\",(function(){return n.shiftYears(1)})),Me(Pe(n),\"decrementYears\",(function(){return n.shiftYears(-1)}));var a=e.yearDropdownItemNumber,o=e.scrollableYearDropdown,s=a||(o?10:5);return n.state={yearsList:Yt(n.props.year,s,n.props.minDate,n.props.maxDate)},n.dropdownRef=t.createRef(),n}return _e(r,e),Se(r,[{key:\"componentDidMount\",value:function(){var e=this.dropdownRef.current;if(e){var t=e.children?Array.from(e.children):null,r=t?t.find((function(e){return e.ariaSelected})):null;e.scrollTop=r?r.offsetTop+(r.clientHeight-e.clientHeight)/2:(e.scrollHeight-e.clientHeight)/2}}},{key:\"render\",value:function(){var e=ue.default({\"react-datepicker__year-dropdown\":!0,\"react-datepicker__year-dropdown--scrollable\":this.props.scrollableYearDropdown});return de.default.createElement(\"div\",{className:e,ref:this.dropdownRef},this.renderOptions())}}]),r}(de.default.Component),Pt=he.default(Et),Nt=function(e){function t(){var e;we(this,t);for(var r=arguments.length,n=new Array(r),a=0;a0&&void 0!==arguments[0]?arguments[0]:{},n=!1;0===e.getTabIndex()&&!r.isInputFocused&&e.isSameDay(e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(n=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(n=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement.classList.contains(\"react-datepicker__day\")&&(n=!0),e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()&&(n=!1),e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()&&(n=!1)),n&&(null===(t=e.dayEl.current)||void 0===t||t.focus({preventScroll:!0}))})),Me(Pe(e),\"renderDayContents\",(function(){return e.props.monthShowsDuplicateDaysEnd&&e.isAfterMonth()||e.props.monthShowsDuplicateDaysStart&&e.isBeforeMonth()?null:e.props.renderDayContents?e.props.renderDayContents(S.getDate(e.props.day),e.props.day):S.getDate(e.props.day)})),Me(Pe(e),\"render\",(function(){return de.default.createElement(\"div\",{ref:e.dayEl,className:e.getClassNames(e.props.day),onKeyDown:e.handleOnKeyDown,onClick:e.handleClick,onMouseEnter:e.handleMouseEnter,tabIndex:e.getTabIndex(),\"aria-label\":e.getAriaLabel(),role:\"option\",title:e.getTitle(),\"aria-disabled\":e.isDisabled(),\"aria-current\":e.isCurrentDay()?\"date\":void 0,\"aria-selected\":e.isSelected()||e.isInRange()},e.renderDayContents(),\"\"!==e.getTitle()&&de.default.createElement(\"span\",{className:\"overlay\"},e.getTitle()))})),e}return _e(t,e),Se(t,[{key:\"componentDidMount\",value:function(){this.handleFocusDay()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusDay(e)}}]),t}(de.default.Component),Wt=function(e){function t(){var e;we(this,t);for(var r=arguments.length,n=new Array(r),a=0;a0&&void 0!==arguments[0]?arguments[0]:{},r=!1;0===e.getTabIndex()&&!t.isInputFocused&&Ue(e.props.date,e.props.preSelection)&&(document.activeElement&&document.activeElement!==document.body||(r=!0),e.props.inline&&!e.props.shouldFocusDayInline&&(r=!1),e.props.containerRef&&e.props.containerRef.current&&e.props.containerRef.current.contains(document.activeElement)&&document.activeElement&&document.activeElement.classList.contains(\"react-datepicker__week-number\")&&(r=!0)),r&&e.weekNumberEl.current&&e.weekNumberEl.current.focus({preventScroll:!0})})),e}return _e(t,e),Se(t,[{key:\"componentDidMount\",value:function(){this.handleFocusWeekNumber()}},{key:\"componentDidUpdate\",value:function(e){this.handleFocusWeekNumber(e)}},{key:\"render\",value:function(){var e=this.props,t=e.weekNumber,r=e.ariaLabelPrefix,n=void 0===r?\"week \":r,a={\"react-datepicker__week-number\":!0,\"react-datepicker__week-number--clickable\":!!e.onClick,\"react-datepicker__week-number--selected\":Ue(this.props.date,this.props.selected),\"react-datepicker__week-number--keyboard-selected\":this.isKeyboardSelected()};return de.default.createElement(\"div\",{ref:this.weekNumberEl,className:ue.default(a),\"aria-label\":\"\".concat(n,\" \").concat(this.props.weekNumber),onClick:this.handleClick,onKeyDown:this.handleOnKeyDown,tabIndex:this.getTabIndex()},t)}}],[{key:\"defaultProps\",get:function(){return{ariaLabelPrefix:\"week \"}}}]),t}(de.default.Component),Kt=function(e){function t(){var e;we(this,t);for(var r=arguments.length,n=new Array(r),a=0;a=6,i=!r&&!e.isWeekInMonth(o);if(s||i){if(!e.props.peekNextMonth)break;a=!0}}return t})),Me(Pe(e),\"onMonthClick\",(function(t,r){e.handleDayClick(Ke(x.setMonth(e.props.day,r)),t)})),Me(Pe(e),\"onMonthMouseEnter\",(function(t){e.handleDayMouseEnter(Ke(x.setMonth(e.props.day,t)))})),Me(Pe(e),\"handleMonthNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.MONTH_REFS[t].current&&e.MONTH_REFS[t].current.focus())})),Me(Pe(e),\"onMonthKeyDown\",(function(t,r){var n=e.props,a=n.selected,o=n.preSelection,s=n.disabledKeyboardNavigation,i=n.showTwoColumnMonthYearPicker,p=n.showFourColumnMonthYearPicker,c=n.setPreSelection,l=n.handleOnMonthKeyDown,u=t.key;if(\"Tab\"!==u&&t.preventDefault(),!s){var h=jt(p,i),f=Ht[h].verticalNavigationOffset,m=Ht[h].grid;switch(u){case\"Enter\":e.onMonthClick(t,r),c(a);break;case\"ArrowRight\":e.handleMonthNavigation(11===r?0:r+1,d.addMonths(o,1));break;case\"ArrowLeft\":e.handleMonthNavigation(0===r?11:r-1,y.subMonths(o,1));break;case\"ArrowUp\":e.handleMonthNavigation(m[0].includes(r)?r+12-f:r-f,y.subMonths(o,f));break;case\"ArrowDown\":e.handleMonthNavigation(m[m.length-1].includes(r)?r-12+f:r+f,d.addMonths(o,f))}}l&&l(t)})),Me(Pe(e),\"onQuarterClick\",(function(t,r){e.handleDayClick(qe(I.setQuarter(e.props.day,r)),t)})),Me(Pe(e),\"onQuarterMouseEnter\",(function(t){e.handleDayMouseEnter(qe(I.setQuarter(e.props.day,t)))})),Me(Pe(e),\"handleQuarterNavigation\",(function(t,r){e.isDisabled(r)||e.isExcluded(r)||(e.props.setPreSelection(r),e.QUARTER_REFS[t-1].current&&e.QUARTER_REFS[t-1].current.focus())})),Me(Pe(e),\"onQuarterKeyDown\",(function(t,r){var n=t.key;if(!e.props.disabledKeyboardNavigation)switch(n){case\"Enter\":e.onQuarterClick(t,r),e.props.setPreSelection(e.props.selected);break;case\"ArrowRight\":e.handleQuarterNavigation(4===r?1:r+1,u.addQuarters(e.props.preSelection,1));break;case\"ArrowLeft\":e.handleQuarterNavigation(1===r?4:r-1,g.subQuarters(e.props.preSelection,1))}})),Me(Pe(e),\"getMonthClassNames\",(function(t){var r=e.props,n=r.day,a=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,c=r.preSelection,l=r.monthClassName,d=r.excludeDates,u=r.includeDates,h=l?l(x.setMonth(n,t)):void 0,f=x.setMonth(n,t);return ue.default(\"react-datepicker__month-text\",\"react-datepicker__month-\".concat(t),h,{\"react-datepicker__month-text--disabled\":(i||p||d||u)&&rt(f,e.props),\"react-datepicker__month-text--selected\":e.isSelectedMonth(n,t,s),\"react-datepicker__month-text--keyboard-selected\":!e.props.disabledKeyboardNavigation&&C.getMonth(c)===t,\"react-datepicker__month-text--in-selecting-range\":e.isInSelectingRangeMonth(t),\"react-datepicker__month-text--in-range\":nt(a,o,t,n),\"react-datepicker__month-text--range-start\":e.isRangeStartMonth(t),\"react-datepicker__month-text--range-end\":e.isRangeEndMonth(t),\"react-datepicker__month-text--selecting-range-start\":e.isSelectingMonthRangeStart(t),\"react-datepicker__month-text--selecting-range-end\":e.isSelectingMonthRangeEnd(t),\"react-datepicker__month-text--today\":e.isCurrentMonth(n,t)})})),Me(Pe(e),\"getTabIndex\",(function(t){var r=C.getMonth(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),Me(Pe(e),\"getQuarterTabIndex\",(function(t){var r=_.getQuarter(e.props.preSelection);return e.props.disabledKeyboardNavigation||t!==r?\"-1\":\"0\"})),Me(Pe(e),\"getAriaLabel\",(function(t){var r=e.props,n=r.chooseDayAriaLabelPrefix,a=void 0===n?\"Choose\":n,o=r.disabledDayAriaLabelPrefix,s=void 0===o?\"Not available\":o,i=r.day,p=x.setMonth(i,t),c=e.isDisabled(p)||e.isExcluded(p)?s:a;return\"\".concat(c,\" \").concat(Le(p,\"MMMM yyyy\"))})),Me(Pe(e),\"getQuarterClassNames\",(function(t){var r=e.props,n=r.day,a=r.startDate,o=r.endDate,s=r.selected,i=r.minDate,p=r.maxDate,c=r.preSelection,l=r.disabledKeyboardNavigation;return ue.default(\"react-datepicker__quarter-text\",\"react-datepicker__quarter-\".concat(t),{\"react-datepicker__quarter-text--disabled\":(i||p)&&at(I.setQuarter(n,t),e.props),\"react-datepicker__quarter-text--selected\":e.isSelectedQuarter(n,t,s),\"react-datepicker__quarter-text--keyboard-selected\":!l&&_.getQuarter(c)===t,\"react-datepicker__quarter-text--in-selecting-range\":e.isInSelectingRangeQuarter(t),\"react-datepicker__quarter-text--in-range\":it(a,o,t,n),\"react-datepicker__quarter-text--range-start\":e.isRangeStartQuarter(t),\"react-datepicker__quarter-text--range-end\":e.isRangeEndQuarter(t)})})),Me(Pe(e),\"getMonthContent\",(function(t){var r=e.props,n=r.showFullMonthYearPicker,a=r.renderMonthContent,o=r.locale,s=r.day,i=Ze(t,o),p=Xe(t,o);return a?a(t,i,p,s):n?p:i})),Me(Pe(e),\"getQuarterContent\",(function(t){var r=e.props,n=r.renderQuarterContent,a=function(e,t){return Le(I.setQuarter(Te(),e),\"QQQ\",t)}(t,r.locale);return n?n(t,a):a})),Me(Pe(e),\"renderMonths\",(function(){var t=e.props,r=t.showTwoColumnMonthYearPicker,n=t.showFourColumnMonthYearPicker,a=t.day,o=t.selected;return Ht[jt(n,r)].grid.map((function(t,r){return de.default.createElement(\"div\",{className:\"react-datepicker__month-wrapper\",key:r},t.map((function(t,r){return de.default.createElement(\"div\",{ref:e.MONTH_REFS[t],key:r,onClick:function(r){e.onMonthClick(r,t)},onKeyDown:function(r){_t(r)&&(r.preventDefault(),r.key=\"Enter\"),e.onMonthKeyDown(r,t)},onMouseEnter:function(){return e.onMonthMouseEnter(t)},tabIndex:e.getTabIndex(t),className:e.getMonthClassNames(t),role:\"option\",\"aria-label\":e.getAriaLabel(t),\"aria-current\":e.isCurrentMonth(a,t)?\"date\":void 0,\"aria-selected\":e.isSelectedMonth(a,t,o)},e.getMonthContent(t))})))}))})),Me(Pe(e),\"renderQuarters\",(function(){var t=e.props,r=t.day,n=t.selected;return de.default.createElement(\"div\",{className:\"react-datepicker__quarter-wrapper\"},[1,2,3,4].map((function(t,a){return de.default.createElement(\"div\",{key:a,ref:e.QUARTER_REFS[a],role:\"option\",onClick:function(r){e.onQuarterClick(r,t)},onKeyDown:function(r){e.onQuarterKeyDown(r,t)},onMouseEnter:function(){return e.onQuarterMouseEnter(t)},className:e.getQuarterClassNames(t),\"aria-selected\":e.isSelectedQuarter(r,t,n),tabIndex:e.getQuarterTabIndex(t),\"aria-current\":e.isCurrentQuarter(r,t)?\"date\":void 0},e.getQuarterContent(t))})))})),Me(Pe(e),\"getClassNames\",(function(){var t=e.props,r=t.selectingDate,n=t.selectsStart,a=t.selectsEnd,o=t.showMonthYearPicker,s=t.showQuarterYearPicker,i=t.showWeekPicker;return ue.default(\"react-datepicker__month\",{\"react-datepicker__month--selecting-range\":r&&(n||a)},{\"react-datepicker__monthPicker\":o},{\"react-datepicker__quarterPicker\":s},{\"react-datepicker__weekPicker\":i})})),e}return _e(t,e),Se(t,[{key:\"render\",value:function(){var e=this.props,t=e.showMonthYearPicker,r=e.showQuarterYearPicker,n=e.day,a=e.ariaLabelPrefix,o=void 0===a?\"month \":a;return de.default.createElement(\"div\",{className:this.getClassNames(),onMouseLeave:this.handleMouseLeave,\"aria-label\":\"\".concat(o,\" \").concat(Le(n,\"yyyy-MM\")),role:\"listbox\"},t?this.renderMonths():r?this.renderQuarters():this.renderWeeks())}}]),t}(de.default.Component),Ut=function(e){function t(){var e;we(this,t);for(var r=arguments.length,n=new Array(r),a=0;a0&&void 0!==arguments[0]?arguments[0]:{}).className||\"\").split(/\\s+/);return Jt.some((function(t){return e.indexOf(t)>=0}))})(e.target)&&r.props.onDropdownFocus()})),Me(Pe(r),\"getDateInView\",(function(){var e=r.props,t=e.preSelection,n=e.selected,a=e.openToDate,o=yt(r.props),s=gt(r.props),i=Te(),p=a||n||t;return p||(o&&te.isBefore(i,o)?o:s&&ee.isAfter(i,s)?s:i)})),Me(Pe(r),\"increaseMonth\",(function(){r.setState((function(e){var t=e.date;return{date:d.addMonths(t,1)}}),(function(){return r.handleMonthChange(r.state.date)}))})),Me(Pe(r),\"decreaseMonth\",(function(){r.setState((function(e){var t=e.date;return{date:y.subMonths(t,1)}}),(function(){return r.handleMonthChange(r.state.date)}))})),Me(Pe(r),\"handleDayClick\",(function(e,t,n){r.props.onSelect(e,t,n),r.props.setPreSelection&&r.props.setPreSelection(e)})),Me(Pe(r),\"handleDayMouseEnter\",(function(e){r.setState({selectingDate:e}),r.props.onDayMouseEnter&&r.props.onDayMouseEnter(e)})),Me(Pe(r),\"handleMonthMouseLeave\",(function(){r.setState({selectingDate:null}),r.props.onMonthMouseLeave&&r.props.onMonthMouseLeave()})),Me(Pe(r),\"handleYearMouseEnter\",(function(e,t){r.setState({selectingDate:T.setYear(Te(),t)}),r.props.onYearMouseEnter&&r.props.onYearMouseEnter(e,t)})),Me(Pe(r),\"handleYearMouseLeave\",(function(e,t){r.props.onYearMouseLeave&&r.props.onYearMouseLeave(e,t)})),Me(Pe(r),\"handleYearChange\",(function(e){r.props.onYearChange&&(r.props.onYearChange(e),r.setState({isRenderAriaLiveMessage:!0})),r.props.adjustDateOnChange&&(r.props.onSelect&&r.props.onSelect(e),r.props.setOpen&&r.props.setOpen(!0)),r.props.setPreSelection&&r.props.setPreSelection(e)})),Me(Pe(r),\"handleMonthChange\",(function(e){r.handleCustomMonthChange(e),r.props.adjustDateOnChange&&(r.props.onSelect&&r.props.onSelect(e),r.props.setOpen&&r.props.setOpen(!0)),r.props.setPreSelection&&r.props.setPreSelection(e)})),Me(Pe(r),\"handleCustomMonthChange\",(function(e){r.props.onMonthChange&&(r.props.onMonthChange(e),r.setState({isRenderAriaLiveMessage:!0}))})),Me(Pe(r),\"handleMonthYearChange\",(function(e){r.handleYearChange(e),r.handleMonthChange(e)})),Me(Pe(r),\"changeYear\",(function(e){r.setState((function(t){var r=t.date;return{date:T.setYear(r,e)}}),(function(){return r.handleYearChange(r.state.date)}))})),Me(Pe(r),\"changeMonth\",(function(e){r.setState((function(t){var r=t.date;return{date:x.setMonth(r,e)}}),(function(){return r.handleMonthChange(r.state.date)}))})),Me(Pe(r),\"changeMonthYear\",(function(e){r.setState((function(t){var r=t.date;return{date:T.setYear(x.setMonth(r,C.getMonth(e)),Y.getYear(e))}}),(function(){return r.handleMonthYearChange(r.state.date)}))})),Me(Pe(r),\"header\",(function(){var e=We(arguments.length>0&&void 0!==arguments[0]?arguments[0]:r.state.date,r.props.locale,r.props.calendarStartDay),t=[];return r.props.showWeekNumbers&&t.push(de.default.createElement(\"div\",{key:\"W\",className:\"react-datepicker__day-name\"},r.props.weekLabel||\"#\")),t.concat([0,1,2,3,4,5,6].map((function(t){var n=c.addDays(e,t),a=r.formatWeekday(n,r.props.locale),o=r.props.weekDayClassName?r.props.weekDayClassName(n):void 0;return de.default.createElement(\"div\",{key:t,className:ue.default(\"react-datepicker__day-name\",o)},a)})))})),Me(Pe(r),\"formatWeekday\",(function(e,t){return r.props.formatWeekDay?function(e,t,r){return t(Le(e,\"EEEE\",r))}(e,r.props.formatWeekDay,t):r.props.useWeekdaysShort?function(e,t){return Le(e,\"EEE\",t)}(e,t):function(e,t){return Le(e,\"EEEEEE\",t)}(e,t)})),Me(Pe(r),\"decreaseYear\",(function(){r.setState((function(e){var t=e.date;return{date:D.subYears(t,r.props.showYearPicker?r.props.yearItemNumber:1)}}),(function(){return r.handleYearChange(r.state.date)}))})),Me(Pe(r),\"clearSelectingDate\",(function(){r.setState({selectingDate:null})})),Me(Pe(r),\"renderPreviousButton\",(function(){if(!r.props.renderCustomHeader){var e;switch(!0){case r.props.showMonthYearPicker:e=ft(r.state.date,r.props);break;case r.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.minDate,n=t.yearItemNumber,a=void 0===n?xe:n,o=bt(Qe(D.subYears(e,a)),a).endPeriod,s=r&&Y.getYear(r);return s&&s>o||!1}(r.state.date,r.props);break;default:e=ut(r.state.date,r.props)}if((r.props.forceShowMonthNavigation||r.props.showDisabledMonthNavigation||!e)&&!r.props.showTimeSelectOnly){var t=[\"react-datepicker__navigation\",\"react-datepicker__navigation--previous\"],n=r.decreaseMonth;(r.props.showMonthYearPicker||r.props.showQuarterYearPicker||r.props.showYearPicker)&&(n=r.decreaseYear),e&&r.props.showDisabledMonthNavigation&&(t.push(\"react-datepicker__navigation--previous--disabled\"),n=null);var a=r.props.showMonthYearPicker||r.props.showQuarterYearPicker||r.props.showYearPicker,o=r.props,s=o.previousMonthButtonLabel,i=o.previousYearButtonLabel,p=r.props,c=p.previousMonthAriaLabel,l=void 0===c?\"string\"==typeof s?s:\"Previous Month\":c,d=p.previousYearAriaLabel,u=void 0===d?\"string\"==typeof i?i:\"Previous Year\":d;return de.default.createElement(\"button\",{type:\"button\",className:t.join(\" \"),onClick:n,onKeyDown:r.props.handleOnKeyDown,\"aria-label\":a?u:l},de.default.createElement(\"span\",{className:[\"react-datepicker__navigation-icon\",\"react-datepicker__navigation-icon--previous\"].join(\" \")},a?r.props.previousYearButtonLabel:r.props.previousMonthButtonLabel))}}})),Me(Pe(r),\"increaseYear\",(function(){r.setState((function(e){var t=e.date;return{date:h.addYears(t,r.props.showYearPicker?r.props.yearItemNumber:1)}}),(function(){return r.handleYearChange(r.state.date)}))})),Me(Pe(r),\"renderNextButton\",(function(){if(!r.props.renderCustomHeader){var e;switch(!0){case r.props.showMonthYearPicker:e=mt(r.state.date,r.props);break;case r.props.showYearPicker:e=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.maxDate,n=t.yearItemNumber,a=void 0===n?xe:n,o=bt(h.addYears(e,a),a).startPeriod,s=r&&Y.getYear(r);return s&&s0&&void 0!==arguments[0]?arguments[0]:r.state.date,t=[\"react-datepicker__current-month\"];return r.props.showYearDropdown&&t.push(\"react-datepicker__current-month--hasYearDropdown\"),r.props.showMonthDropdown&&t.push(\"react-datepicker__current-month--hasMonthDropdown\"),r.props.showMonthYearDropdown&&t.push(\"react-datepicker__current-month--hasMonthYearDropdown\"),de.default.createElement(\"div\",{className:t.join(\" \")},Le(e,r.props.dateFormat,r.props.locale))})),Me(Pe(r),\"renderYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(r.props.showYearDropdown&&!e)return de.default.createElement(Nt,{adjustDateOnChange:r.props.adjustDateOnChange,date:r.state.date,onSelect:r.props.onSelect,setOpen:r.props.setOpen,dropdownMode:r.props.dropdownMode,onChange:r.changeYear,minDate:r.props.minDate,maxDate:r.props.maxDate,year:Y.getYear(r.state.date),scrollableYearDropdown:r.props.scrollableYearDropdown,yearDropdownItemNumber:r.props.yearDropdownItemNumber})})),Me(Pe(r),\"renderMonthDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(r.props.showMonthDropdown&&!e)return de.default.createElement(It,{dropdownMode:r.props.dropdownMode,locale:r.props.locale,onChange:r.changeMonth,month:C.getMonth(r.state.date),useShortMonthInDropdown:r.props.useShortMonthInDropdown})})),Me(Pe(r),\"renderMonthYearDropdown\",(function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(r.props.showMonthYearDropdown&&!e)return de.default.createElement(Ft,{dropdownMode:r.props.dropdownMode,locale:r.props.locale,dateFormat:r.props.dateFormat,onChange:r.changeMonthYear,minDate:r.props.minDate,maxDate:r.props.maxDate,date:r.state.date,scrollableMonthYearDropdown:r.props.scrollableMonthYearDropdown})})),Me(Pe(r),\"handleTodayButtonClick\",(function(e){r.props.onSelect(Be(),e),r.props.setPreSelection&&r.props.setPreSelection(Be())})),Me(Pe(r),\"renderTodayButton\",(function(){if(r.props.todayButton&&!r.props.showTimeSelectOnly)return de.default.createElement(\"div\",{className:\"react-datepicker__today-button\",onClick:function(e){return r.handleTodayButtonClick(e)}},r.props.todayButton)})),Me(Pe(r),\"renderDefaultHeader\",(function(e){var t=e.monthDate,n=e.i;return de.default.createElement(\"div\",{className:\"react-datepicker__header \".concat(r.props.showTimeSelect?\"react-datepicker__header--has-time-select\":\"\")},r.renderCurrentMonth(t),de.default.createElement(\"div\",{className:\"react-datepicker__header__dropdown react-datepicker__header__dropdown--\".concat(r.props.dropdownMode),onFocus:r.handleDropdownFocus},r.renderMonthDropdown(0!==n),r.renderMonthYearDropdown(0!==n),r.renderYearDropdown(0!==n)),de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},r.header(t)))})),Me(Pe(r),\"renderCustomHeader\",(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.monthDate,n=e.i;if(r.props.showTimeSelect&&!r.state.monthContainer||r.props.showTimeSelectOnly)return null;var a=ut(r.state.date,r.props),o=ht(r.state.date,r.props),s=ft(r.state.date,r.props),i=mt(r.state.date,r.props),p=!r.props.showMonthYearPicker&&!r.props.showQuarterYearPicker&&!r.props.showYearPicker;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker__header--custom\",onFocus:r.props.onDropdownFocus},r.props.renderCustomHeader(De(De({},r.state),{},{customHeaderCount:n,monthDate:t,changeMonth:r.changeMonth,changeYear:r.changeYear,decreaseMonth:r.decreaseMonth,increaseMonth:r.increaseMonth,decreaseYear:r.decreaseYear,increaseYear:r.increaseYear,prevMonthButtonDisabled:a,nextMonthButtonDisabled:o,prevYearButtonDisabled:s,nextYearButtonDisabled:i})),p&&de.default.createElement(\"div\",{className:\"react-datepicker__day-names\"},r.header(t)))})),Me(Pe(r),\"renderYearHeader\",(function(){var e=r.state.date,t=r.props,n=t.showYearPicker,a=bt(e,t.yearItemNumber),o=a.startPeriod,s=a.endPeriod;return de.default.createElement(\"div\",{className:\"react-datepicker__header react-datepicker-year-header\"},n?\"\".concat(o,\" - \").concat(s):Y.getYear(e))})),Me(Pe(r),\"renderHeader\",(function(e){switch(!0){case void 0!==r.props.renderCustomHeader:return r.renderCustomHeader(e);case r.props.showMonthYearPicker||r.props.showQuarterYearPicker||r.props.showYearPicker:return r.renderYearHeader(e);default:return r.renderDefaultHeader(e)}})),Me(Pe(r),\"renderMonths\",(function(){var e;if(!r.props.showTimeSelectOnly&&!r.props.showYearPicker){for(var t=[],n=r.props.showPreviousMonths?r.props.monthsShown-1:0,a=y.subMonths(r.state.date,n),o=null!==(e=r.props.monthSelectedIn)&&void 0!==e?e:n,s=0;s0;t.push(de.default.createElement(\"div\",{key:c,ref:function(e){r.monthContainer=e},className:\"react-datepicker__month-container\"},r.renderHeader({monthDate:p,i:s}),de.default.createElement(Vt,{chooseDayAriaLabelPrefix:r.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:r.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:r.props.weekAriaLabelPrefix,ariaLabelPrefix:r.props.monthAriaLabelPrefix,onChange:r.changeMonthYear,day:p,dayClassName:r.props.dayClassName,calendarStartDay:r.props.calendarStartDay,monthClassName:r.props.monthClassName,onDayClick:r.handleDayClick,handleOnKeyDown:r.props.handleOnDayKeyDown,handleOnMonthKeyDown:r.props.handleOnKeyDown,onDayMouseEnter:r.handleDayMouseEnter,onMouseLeave:r.handleMonthMouseLeave,onWeekSelect:r.props.onWeekSelect,orderInDisplay:s,formatWeekNumber:r.props.formatWeekNumber,locale:r.props.locale,minDate:r.props.minDate,maxDate:r.props.maxDate,excludeDates:r.props.excludeDates,excludeDateIntervals:r.props.excludeDateIntervals,highlightDates:r.props.highlightDates,holidays:r.props.holidays,selectingDate:r.state.selectingDate,includeDates:r.props.includeDates,includeDateIntervals:r.props.includeDateIntervals,inline:r.props.inline,shouldFocusDayInline:r.props.shouldFocusDayInline,fixedHeight:r.props.fixedHeight,filterDate:r.props.filterDate,preSelection:r.props.preSelection,setPreSelection:r.props.setPreSelection,selected:r.props.selected,selectsStart:r.props.selectsStart,selectsEnd:r.props.selectsEnd,selectsRange:r.props.selectsRange,selectsDisabledDaysInRange:r.props.selectsDisabledDaysInRange,selectsMultiple:r.props.selectsMultiple,selectedDates:r.props.selectedDates,showWeekNumbers:r.props.showWeekNumbers,startDate:r.props.startDate,endDate:r.props.endDate,peekNextMonth:r.props.peekNextMonth,setOpen:r.props.setOpen,shouldCloseOnSelect:r.props.shouldCloseOnSelect,renderDayContents:r.props.renderDayContents,renderMonthContent:r.props.renderMonthContent,renderQuarterContent:r.props.renderQuarterContent,renderYearContent:r.props.renderYearContent,disabledKeyboardNavigation:r.props.disabledKeyboardNavigation,showMonthYearPicker:r.props.showMonthYearPicker,showFullMonthYearPicker:r.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:r.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:r.props.showFourColumnMonthYearPicker,showYearPicker:r.props.showYearPicker,showQuarterYearPicker:r.props.showQuarterYearPicker,showWeekPicker:r.props.showWeekPicker,isInputFocused:r.props.isInputFocused,containerRef:r.containerRef,monthShowsDuplicateDaysEnd:l,monthShowsDuplicateDaysStart:u})))}return t}})),Me(Pe(r),\"renderYears\",(function(){if(!r.props.showTimeSelectOnly)return r.props.showYearPicker?de.default.createElement(\"div\",{className:\"react-datepicker__year--container\"},r.renderHeader(),de.default.createElement($t,Ce({onDayClick:r.handleDayClick,selectingDate:r.state.selectingDate,clearSelectingDate:r.clearSelectingDate,date:r.state.date},r.props,{onYearMouseEnter:r.handleYearMouseEnter,onYearMouseLeave:r.handleYearMouseLeave}))):void 0})),Me(Pe(r),\"renderTimeSection\",(function(){if(r.props.showTimeSelect&&(r.state.monthContainer||r.props.showTimeSelectOnly))return de.default.createElement(Ut,{selected:r.props.selected,openToDate:r.props.openToDate,onChange:r.props.onTimeChange,timeClassName:r.props.timeClassName,format:r.props.timeFormat,includeTimes:r.props.includeTimes,intervals:r.props.timeIntervals,minTime:r.props.minTime,maxTime:r.props.maxTime,excludeTimes:r.props.excludeTimes,filterTime:r.props.filterTime,timeCaption:r.props.timeCaption,todayButton:r.props.todayButton,showMonthDropdown:r.props.showMonthDropdown,showMonthYearDropdown:r.props.showMonthYearDropdown,showYearDropdown:r.props.showYearDropdown,withPortal:r.props.withPortal,monthRef:r.state.monthContainer,injectTimes:r.props.injectTimes,locale:r.props.locale,handleOnKeyDown:r.props.handleOnKeyDown,showTimeSelectOnly:r.props.showTimeSelectOnly})})),Me(Pe(r),\"renderInputTimeSection\",(function(){var e=new Date(r.props.selected),t=Re(e)&&Boolean(r.props.selected)?\"\".concat(wt(e.getHours()),\":\").concat(wt(e.getMinutes())):\"\";if(r.props.showTimeInput)return de.default.createElement(zt,{date:e,timeString:t,timeInputLabel:r.props.timeInputLabel,onChange:r.props.onTimeChange,customTimeInput:r.props.customTimeInput})})),Me(Pe(r),\"renderAriaLiveRegion\",(function(){var e,t=bt(r.state.date,r.props.yearItemNumber),n=t.startPeriod,a=t.endPeriod;return e=r.props.showYearPicker?\"\".concat(n,\" - \").concat(a):r.props.showMonthYearPicker||r.props.showQuarterYearPicker?Y.getYear(r.state.date):\"\".concat(Xe(C.getMonth(r.state.date),r.props.locale),\" \").concat(Y.getYear(r.state.date)),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},r.state.isRenderAriaLiveMessage&&e)})),Me(Pe(r),\"renderChildren\",(function(){if(r.props.children)return de.default.createElement(\"div\",{className:\"react-datepicker__children-container\"},r.props.children)})),r.containerRef=de.default.createRef(),r.state={date:r.getDateInView(),selectingDate:null,monthContainer:null,isRenderAriaLiveMessage:!1},r}return _e(t,e),Se(t,[{key:\"componentDidMount\",value:function(){var e=this;this.props.showTimeSelect&&(this.assignMonthContainer=void e.setState({monthContainer:e.monthContainer}))}},{key:\"componentDidUpdate\",value:function(e){var t=this;if(!this.props.preSelection||Ue(this.props.preSelection,e.preSelection)&&this.props.monthSelectedIn===e.monthSelectedIn)this.props.openToDate&&!Ue(this.props.openToDate,e.openToDate)&&this.setState({date:this.props.openToDate});else{var r=!je(this.state.date,this.props.preSelection);this.setState({date:this.props.preSelection},(function(){return r&&t.handleCustomMonthChange(t.state.date)}))}}},{key:\"render\",value:function(){var e=this.props.container||Gt;return de.default.createElement(\"div\",{style:{display:\"contents\"},ref:this.containerRef},de.default.createElement(e,{className:ue.default(\"react-datepicker\",this.props.className,{\"react-datepicker--time-only\":this.props.showTimeSelectOnly})},this.renderAriaLiveRegion(),this.renderPreviousButton(),this.renderNextButton(),this.renderMonths(),this.renderYears(),this.renderTodayButton(),this.renderTimeSection(),this.renderInputTimeSection(),this.renderChildren()))}}],[{key:\"defaultProps\",get:function(){return{onDropdownFocus:function(){},monthsShown:1,forceShowMonthNavigation:!1,timeCaption:\"Time\",previousYearButtonLabel:\"Previous Year\",nextYearButtonLabel:\"Next Year\",previousMonthButtonLabel:\"Previous Month\",nextMonthButtonLabel:\"Next Month\",customTimeInput:null,yearItemNumber:xe}}}]),t}(de.default.Component),Zt=function(e){var t=e.icon,r=e.className,n=void 0===r?\"\":r,a=e.onClick,o=\"react-datepicker__calendar-icon\";return de.default.isValidElement(t)?de.default.cloneElement(t,{className:\"\".concat(t.props.className||\"\",\" \").concat(o,\" \").concat(n),onClick:function(e){\"function\"==typeof t.props.onClick&&t.props.onClick(e),\"function\"==typeof a&&a(e)}}):\"string\"==typeof t?de.default.createElement(\"i\",{className:\"\".concat(o,\" \").concat(t,\" \").concat(n),\"aria-hidden\":\"true\",onClick:a}):de.default.createElement(\"svg\",{className:\"\".concat(o,\" \").concat(n),xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 448 512\",onClick:a},de.default.createElement(\"path\",{d:\"M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z\"}))},er=function(e){function t(e){var r;return we(this,t),(r=me(this,t,[e])).el=document.createElement(\"div\"),r}return _e(t,e),Se(t,[{key:\"componentDidMount\",value:function(){this.portalRoot=(this.props.portalHost||document).getElementById(this.props.portalId),this.portalRoot||(this.portalRoot=document.createElement(\"div\"),this.portalRoot.setAttribute(\"id\",this.props.portalId),(this.props.portalHost||document.body).appendChild(this.portalRoot)),this.portalRoot.appendChild(this.el)}},{key:\"componentWillUnmount\",value:function(){this.portalRoot.removeChild(this.el)}},{key:\"render\",value:function(){return fe.default.createPortal(this.props.children,this.el)}}]),t}(de.default.Component),tr=function(e){return!e.disabled&&-1!==e.tabIndex},rr=function(e){function t(e){var r;return we(this,t),Me(Pe(r=me(this,t,[e])),\"getTabChildren\",(function(){return Array.prototype.slice.call(r.tabLoopRef.current.querySelectorAll(\"[tabindex], a, button, input, select, textarea\"),1,-1).filter(tr)})),Me(Pe(r),\"handleFocusStart\",(function(){var e=r.getTabChildren();e&&e.length>1&&e[e.length-1].focus()})),Me(Pe(r),\"handleFocusEnd\",(function(){var e=r.getTabChildren();e&&e.length>1&&e[0].focus()})),r.tabLoopRef=de.default.createRef(),r}return _e(t,e),Se(t,[{key:\"render\",value:function(){return this.props.enableTabLoop?de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop\",ref:this.tabLoopRef},de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__start\",tabIndex:\"0\",onFocus:this.handleFocusStart}),this.props.children,de.default.createElement(\"div\",{className:\"react-datepicker__tab-loop__end\",tabIndex:\"0\",onFocus:this.handleFocusEnd})):this.props.children}}],[{key:\"defaultProps\",get:function(){return{enableTabLoop:!0}}}]),t}(de.default.Component);var nr,ar=function(e){function t(){return we(this,t),me(this,t,arguments)}return _e(t,e),Se(t,[{key:\"render\",value:function(){var e,t=this.props,r=t.className,n=t.wrapperClassName,a=t.hidePopper,o=t.popperComponent,s=t.targetComponent,i=t.enableTabLoop,p=t.popperOnKeyDown,c=t.portalId,l=t.portalHost,d=t.popperProps,u=t.showArrow;if(!a){var h=ue.default(\"react-datepicker-popper\",r);e=de.default.createElement(rr,{enableTabLoop:i},de.default.createElement(\"div\",{ref:d.refs.setFloating,style:d.floatingStyles,className:h,\"data-placement\":d.placement,onKeyDown:p},o,u&&de.default.createElement(pe.FloatingArrow,{ref:d.arrowRef,context:d.context,fill:\"currentColor\",strokeWidth:1,height:8,width:16,style:{transform:\"translateY(-1px)\"},className:\"react-datepicker__triangle\"})))}this.props.popperContainer&&(e=de.default.createElement(this.props.popperContainer,{},e)),c&&!a&&(e=de.default.createElement(er,{portalId:c,portalHost:l},e));var f=ue.default(\"react-datepicker-wrapper\",n);return de.default.createElement(de.default.Fragment,null,de.default.createElement(\"div\",{ref:d.refs.setReference,className:f},s),e)}}],[{key:\"defaultProps\",get:function(){return{hidePopper:!0}}}]),t}(de.default.Component),or=(nr=ar,function(e){var t=De(De({},e),{},{popperModifiers:e.popperModifiers||[],popperProps:e.popperProps||{},hidePopper:\"boolean\"!=typeof e.hidePopper||e.hidePopper}),r=de.default.useRef(),n=pe.useFloating(De({open:!t.hidePopper,whileElementsMounted:pe.autoUpdate,placement:t.popperPlacement,middleware:[pe.flip({padding:15}),pe.offset(10),pe.arrow({element:r})].concat(Ne(t.popperModifiers))},t.popperProps));return de.default.createElement(nr,Ce({},t,{popperProps:De(De({},n),{},{arrowRef:r})}))}),sr=\"react-datepicker-ignore-onclickoutside\",ir=he.default(Xt);var pr=\"Date input not valid.\",cr=function(e){function t(e){var r;return we(this,t),Me(Pe(r=me(this,t,[e])),\"getPreSelection\",(function(){return r.props.openToDate?r.props.openToDate:r.props.selectsEnd&&r.props.startDate?r.props.startDate:r.props.selectsStart&&r.props.endDate?r.props.endDate:Te()})),Me(Pe(r),\"modifyHolidays\",(function(){var e;return null===(e=r.props.holidays)||void 0===e?void 0:e.reduce((function(e,t){var r=new Date(t.date);return o.isValid(r)?[].concat(Ne(e),[De(De({},t),{},{date:r})]):e}),[])})),Me(Pe(r),\"calcInitialState\",(function(){var e,t=r.getPreSelection(),n=yt(r.props),a=gt(r.props),o=n&&te.isBefore(t,K.startOfDay(n))?n:a&&ee.isAfter(t,j.endOfDay(a))?a:t;return{open:r.props.startOpen||!1,preventFocus:!1,preSelection:null!==(e=r.props.selectsRange?r.props.startDate:r.props.selected)&&void 0!==e?e:o,highlightDates:Dt(r.props.highlightDates),focused:!1,shouldFocusDayInline:!1,isRenderAriaLiveMessage:!1}})),Me(Pe(r),\"clearPreventFocusTimeout\",(function(){r.preventFocusTimeout&&clearTimeout(r.preventFocusTimeout)})),Me(Pe(r),\"setFocus\",(function(){r.input&&r.input.focus&&r.input.focus({preventScroll:!0})})),Me(Pe(r),\"setBlur\",(function(){r.input&&r.input.blur&&r.input.blur(),r.cancelFocusInput()})),Me(Pe(r),\"setOpen\",(function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];r.setState({open:e,preSelection:e&&r.state.open?r.state.preSelection:r.calcInitialState().preSelection,lastPreSelectChange:dr},(function(){e||r.setState((function(e){return{focused:!!t&&e.focused}}),(function(){!t&&r.setBlur(),r.setState({inputValue:null})}))}))})),Me(Pe(r),\"inputOk\",(function(){return a.isDate(r.state.preSelection)})),Me(Pe(r),\"isCalendarOpen\",(function(){return void 0===r.props.open?r.state.open&&!r.props.disabled&&!r.props.readOnly:r.props.open})),Me(Pe(r),\"handleFocus\",(function(e){r.state.preventFocus||(r.props.onFocus(e),r.props.preventOpenOnFocus||r.props.readOnly||r.setOpen(!0)),r.setState({focused:!0})})),Me(Pe(r),\"sendFocusBackToInput\",(function(){r.preventFocusTimeout&&r.clearPreventFocusTimeout(),r.setState({preventFocus:!0},(function(){r.preventFocusTimeout=setTimeout((function(){r.setFocus(),r.setState({preventFocus:!1})}))}))})),Me(Pe(r),\"cancelFocusInput\",(function(){clearTimeout(r.inputFocusTimeout),r.inputFocusTimeout=null})),Me(Pe(r),\"deferFocusInput\",(function(){r.cancelFocusInput(),r.inputFocusTimeout=setTimeout((function(){return r.setFocus()}),1)})),Me(Pe(r),\"handleDropdownFocus\",(function(){r.cancelFocusInput()})),Me(Pe(r),\"handleBlur\",(function(e){(!r.state.open||r.props.withPortal||r.props.showTimeInput)&&r.props.onBlur(e),r.setState({focused:!1})})),Me(Pe(r),\"handleCalendarClickOutside\",(function(e){r.props.inline||r.setOpen(!1),r.props.onClickOutside(e),r.props.withPortal&&e.preventDefault()})),Me(Pe(r),\"handleChange\",(function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&(d=ae.parse(o,i.slice(0,o.length),new Date,{useAdditionalWeekYearTokens:!0,useAdditionalDayOfYearTokens:!0})),Re(d)||(d=new Date(o))),Re(d)&&h?d:null));r.props.showTimeSelectOnly&&r.props.selected&&f&&!Ue(f,r.props.selected)&&(f=ce.set(r.props.selected,{hours:w.getHours(f),minutes:k.getMinutes(f),seconds:v.getSeconds(f)})),!f&&a.target.value||(r.props.showWeekPicker&&(f=We(f,r.props.locale,r.props.calendarStartDay)),r.setSelected(f,a,!0))}})),Me(Pe(r),\"handleSelect\",(function(e,t,n){if(r.props.shouldCloseOnSelect&&!r.props.showTimeSelect&&r.sendFocusBackToInput(),r.props.onChangeRaw&&r.props.onChangeRaw(t),r.props.showWeekPicker&&(e=We(e,r.props.locale,r.props.calendarStartDay)),r.setSelected(e,t,!1,n),r.props.showDateSelect&&r.setState({isRenderAriaLiveMessage:!0}),!r.props.shouldCloseOnSelect||r.props.showTimeSelect)r.setPreSelection(e);else if(!r.props.inline){r.props.selectsRange||r.setOpen(!1);var a=r.props,o=a.startDate,s=a.endDate;!o||s||Ct(e,o)||r.setOpen(!1)}})),Me(Pe(r),\"setSelected\",(function(e,t,n,a){var o=e;if(r.props.showYearPicker){if(null!==o&&st(Y.getYear(o),r.props))return}else if(r.props.showMonthYearPicker){if(null!==o&&rt(o,r.props))return}else if(null!==o&&et(o,r.props))return;var s=r.props,i=s.onChange,p=s.selectsRange,c=s.startDate,l=s.endDate,d=s.selectsMultiple,u=s.selectedDates;if(!$e(r.props.selected,o)||r.props.allowSameDay||p||d)if(null!==o&&(!r.props.selected||n&&(r.props.showTimeSelect||r.props.showTimeSelectOnly||r.props.showTimeInput)||(o=Ae(o,{hour:w.getHours(r.props.selected),minute:k.getMinutes(r.props.selected),second:v.getSeconds(r.props.selected)})),r.props.inline||r.setState({preSelection:o}),r.props.focusSelectedMonth||r.setState({monthSelectedIn:a})),p){var h=c&&!l,f=c&&l;!c&&!l?i([o,null],t):h&&(Ct(o,c)?i([o,null],t):i([c,o],t)),f&&i([o,null],t)}else if(d){if(null!=u&&u.length)if(u.some((function(e){return Ue(e,o)})))i(u.filter((function(e){return!Ue(e,o)})),t);else i([].concat(Ne(u),[o]),t);else i([o],t)}else i(o,t);n||(r.props.onSelect(o,t),r.setState({inputValue:null}))})),Me(Pe(r),\"setPreSelection\",(function(e){var t=void 0!==r.props.minDate,n=void 0!==r.props.maxDate,a=!0;if(e){r.props.showWeekPicker&&(e=We(e,r.props.locale,r.props.calendarStartDay));var o=K.startOfDay(e);if(t&&n)a=ze(e,r.props.minDate,r.props.maxDate);else if(t){var s=K.startOfDay(r.props.minDate);a=ee.isAfter(e,s)||$e(o,s)}else if(n){var i=j.endOfDay(r.props.maxDate);a=te.isBefore(e,i)||$e(o,i)}}a&&r.setState({preSelection:e})})),Me(Pe(r),\"toggleCalendar\",(function(){r.setOpen(!r.state.open)})),Me(Pe(r),\"handleTimeChange\",(function(e){var t=r.props.selected?r.props.selected:r.getPreSelection(),n=r.props.selected?e:Ae(t,{hour:w.getHours(e),minute:k.getMinutes(e)});r.setState({preSelection:n}),r.props.onChange(n),r.props.shouldCloseOnSelect&&(r.sendFocusBackToInput(),r.setOpen(!1)),r.props.showTimeInput&&r.setOpen(!0),(r.props.showTimeSelectOnly||r.props.showTimeSelect)&&r.setState({isRenderAriaLiveMessage:!0}),r.setState({inputValue:null})})),Me(Pe(r),\"onInputClick\",(function(){r.props.disabled||r.props.readOnly||r.setOpen(!0),r.props.onInputClick()})),Me(Pe(r),\"onInputKeyDown\",(function(e){r.props.onKeyDown(e);var t=e.key;if(r.state.open||r.props.inline||r.props.preventOpenOnFocus){if(r.state.open){if(\"ArrowDown\"===t||\"ArrowUp\"===t){e.preventDefault();var n=r.props.showWeekPicker&&r.props.showWeekNumbers?'.react-datepicker__week-number[tabindex=\"0\"]':'.react-datepicker__day[tabindex=\"0\"]',a=r.calendar.componentNode&&r.calendar.componentNode.querySelector(n);return void(a&&a.focus({preventScroll:!0}))}var o=Te(r.state.preSelection);\"Enter\"===t?(e.preventDefault(),r.inputOk()&&r.state.lastPreSelectChange===dr?(r.handleSelect(o,e),!r.props.shouldCloseOnSelect&&r.setPreSelection(o)):r.setOpen(!1)):\"Escape\"===t?(e.preventDefault(),r.sendFocusBackToInput(),r.setOpen(!1)):\"Tab\"===t&&r.setOpen(!1),r.inputOk()||r.props.onInputError({code:1,msg:pr})}}else\"ArrowDown\"!==t&&\"ArrowUp\"!==t&&\"Enter\"!==t||r.onInputClick()})),Me(Pe(r),\"onPortalKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),r.setState({preventFocus:!0},(function(){r.setOpen(!1),setTimeout((function(){r.setFocus(),r.setState({preventFocus:!1})}))})))})),Me(Pe(r),\"onDayKeyDown\",(function(e){r.props.onKeyDown(e);var t,n=e.key,a=e.shiftKey,o=Te(r.state.preSelection);if(\"Enter\"===n)e.preventDefault(),r.handleSelect(o,e),!r.props.shouldCloseOnSelect&&r.setPreSelection(o);else if(\"Escape\"===n)e.preventDefault(),r.setOpen(!1),r.inputOk()||r.props.onInputError({code:1,msg:pr});else if(!r.props.disabledKeyboardNavigation){var s;switch(n){case\"ArrowLeft\":s=r.props.showWeekPicker?m.subWeeks(o,1):f.subDays(o,1);break;case\"ArrowRight\":s=r.props.showWeekPicker?l.addWeeks(o,1):c.addDays(o,1);break;case\"ArrowUp\":s=m.subWeeks(o,1);break;case\"ArrowDown\":s=l.addWeeks(o,1);break;case\"PageUp\":s=a?D.subYears(o,1):y.subMonths(o,1);break;case\"PageDown\":s=a?h.addYears(o,1):d.addMonths(o,1);break;case\"Home\":s=We(o,r.props.locale,r.props.calendarStartDay);break;case\"End\":t=o,s=V.endOfWeek(t);break;default:s=null}if(!s)return void(r.props.onInputError&&r.props.onInputError({code:1,msg:pr}));if(e.preventDefault(),r.setState({lastPreSelectChange:dr}),r.props.adjustDateOnChange&&r.setSelected(s),r.setPreSelection(s),r.props.inline){var i=C.getMonth(o),p=C.getMonth(s),u=Y.getYear(o),g=Y.getYear(s);i!==p||u!==g?r.setState({shouldFocusDayInline:!0}):r.setState({shouldFocusDayInline:!1})}}})),Me(Pe(r),\"onPopperKeyDown\",(function(e){\"Escape\"===e.key&&(e.preventDefault(),r.sendFocusBackToInput())})),Me(Pe(r),\"onClearClick\",(function(e){e&&e.preventDefault&&e.preventDefault(),r.sendFocusBackToInput(),r.props.selectsRange?r.props.onChange([null,null],e):r.props.onChange(null,e),r.setState({inputValue:null})})),Me(Pe(r),\"clear\",(function(){r.onClearClick()})),Me(Pe(r),\"onScroll\",(function(e){\"boolean\"==typeof r.props.closeOnScroll&&r.props.closeOnScroll?e.target!==document&&e.target!==document.documentElement&&e.target!==document.body||r.setOpen(!1):\"function\"==typeof r.props.closeOnScroll&&r.props.closeOnScroll(e)&&r.setOpen(!1)})),Me(Pe(r),\"renderCalendar\",(function(){return r.props.inline||r.isCalendarOpen()?de.default.createElement(ir,{ref:function(e){r.calendar=e},locale:r.props.locale,calendarStartDay:r.props.calendarStartDay,chooseDayAriaLabelPrefix:r.props.chooseDayAriaLabelPrefix,disabledDayAriaLabelPrefix:r.props.disabledDayAriaLabelPrefix,weekAriaLabelPrefix:r.props.weekAriaLabelPrefix,monthAriaLabelPrefix:r.props.monthAriaLabelPrefix,adjustDateOnChange:r.props.adjustDateOnChange,setOpen:r.setOpen,shouldCloseOnSelect:r.props.shouldCloseOnSelect,dateFormat:r.props.dateFormatCalendar,useWeekdaysShort:r.props.useWeekdaysShort,formatWeekDay:r.props.formatWeekDay,dropdownMode:r.props.dropdownMode,selected:r.props.selected,preSelection:r.state.preSelection,onSelect:r.handleSelect,onWeekSelect:r.props.onWeekSelect,openToDate:r.props.openToDate,minDate:r.props.minDate,maxDate:r.props.maxDate,selectsStart:r.props.selectsStart,selectsEnd:r.props.selectsEnd,selectsRange:r.props.selectsRange,selectsMultiple:r.props.selectsMultiple,selectedDates:r.props.selectedDates,startDate:r.props.startDate,endDate:r.props.endDate,excludeDates:r.props.excludeDates,excludeDateIntervals:r.props.excludeDateIntervals,filterDate:r.props.filterDate,onClickOutside:r.handleCalendarClickOutside,formatWeekNumber:r.props.formatWeekNumber,highlightDates:r.state.highlightDates,holidays:vt(r.modifyHolidays()),includeDates:r.props.includeDates,includeDateIntervals:r.props.includeDateIntervals,includeTimes:r.props.includeTimes,injectTimes:r.props.injectTimes,inline:r.props.inline,shouldFocusDayInline:r.state.shouldFocusDayInline,peekNextMonth:r.props.peekNextMonth,showMonthDropdown:r.props.showMonthDropdown,showPreviousMonths:r.props.showPreviousMonths,useShortMonthInDropdown:r.props.useShortMonthInDropdown,showMonthYearDropdown:r.props.showMonthYearDropdown,showWeekNumbers:r.props.showWeekNumbers,showYearDropdown:r.props.showYearDropdown,withPortal:r.props.withPortal,forceShowMonthNavigation:r.props.forceShowMonthNavigation,showDisabledMonthNavigation:r.props.showDisabledMonthNavigation,scrollableYearDropdown:r.props.scrollableYearDropdown,scrollableMonthYearDropdown:r.props.scrollableMonthYearDropdown,todayButton:r.props.todayButton,weekLabel:r.props.weekLabel,outsideClickIgnoreClass:sr,fixedHeight:r.props.fixedHeight,monthsShown:r.props.monthsShown,monthSelectedIn:r.state.monthSelectedIn,onDropdownFocus:r.handleDropdownFocus,onMonthChange:r.props.onMonthChange,onYearChange:r.props.onYearChange,dayClassName:r.props.dayClassName,weekDayClassName:r.props.weekDayClassName,monthClassName:r.props.monthClassName,timeClassName:r.props.timeClassName,showDateSelect:r.props.showDateSelect,showTimeSelect:r.props.showTimeSelect,showTimeSelectOnly:r.props.showTimeSelectOnly,onTimeChange:r.handleTimeChange,timeFormat:r.props.timeFormat,timeIntervals:r.props.timeIntervals,minTime:r.props.minTime,maxTime:r.props.maxTime,excludeTimes:r.props.excludeTimes,filterTime:r.props.filterTime,timeCaption:r.props.timeCaption,className:r.props.calendarClassName,container:r.props.calendarContainer,yearItemNumber:r.props.yearItemNumber,yearDropdownItemNumber:r.props.yearDropdownItemNumber,previousMonthAriaLabel:r.props.previousMonthAriaLabel,previousMonthButtonLabel:r.props.previousMonthButtonLabel,nextMonthAriaLabel:r.props.nextMonthAriaLabel,nextMonthButtonLabel:r.props.nextMonthButtonLabel,previousYearAriaLabel:r.props.previousYearAriaLabel,previousYearButtonLabel:r.props.previousYearButtonLabel,nextYearAriaLabel:r.props.nextYearAriaLabel,nextYearButtonLabel:r.props.nextYearButtonLabel,timeInputLabel:r.props.timeInputLabel,disabledKeyboardNavigation:r.props.disabledKeyboardNavigation,renderCustomHeader:r.props.renderCustomHeader,popperProps:r.props.popperProps,renderDayContents:r.props.renderDayContents,renderMonthContent:r.props.renderMonthContent,renderQuarterContent:r.props.renderQuarterContent,renderYearContent:r.props.renderYearContent,onDayMouseEnter:r.props.onDayMouseEnter,onMonthMouseLeave:r.props.onMonthMouseLeave,onYearMouseEnter:r.props.onYearMouseEnter,onYearMouseLeave:r.props.onYearMouseLeave,selectsDisabledDaysInRange:r.props.selectsDisabledDaysInRange,showTimeInput:r.props.showTimeInput,showMonthYearPicker:r.props.showMonthYearPicker,showFullMonthYearPicker:r.props.showFullMonthYearPicker,showTwoColumnMonthYearPicker:r.props.showTwoColumnMonthYearPicker,showFourColumnMonthYearPicker:r.props.showFourColumnMonthYearPicker,showYearPicker:r.props.showYearPicker,showQuarterYearPicker:r.props.showQuarterYearPicker,showWeekPicker:r.props.showWeekPicker,excludeScrollbar:r.props.excludeScrollbar,handleOnKeyDown:r.props.onKeyDown,handleOnDayKeyDown:r.onDayKeyDown,isInputFocused:r.state.focused,customTimeInput:r.props.customTimeInput,setPreSelection:r.setPreSelection},r.props.children):null})),Me(Pe(r),\"renderAriaLiveRegion\",(function(){var e,t=r.props,n=t.dateFormat,a=t.locale,o=r.props.showTimeInput||r.props.showTimeSelect?\"PPPPp\":\"PPPP\";return e=r.props.selectsRange?\"Selected start date: \".concat(Fe(r.props.startDate,{dateFormat:o,locale:a}),\". \").concat(r.props.endDate?\"End date: \"+Fe(r.props.endDate,{dateFormat:o,locale:a}):\"\"):r.props.showTimeSelectOnly?\"Selected time: \".concat(Fe(r.props.selected,{dateFormat:n,locale:a})):r.props.showYearPicker?\"Selected year: \".concat(Fe(r.props.selected,{dateFormat:\"yyyy\",locale:a})):r.props.showMonthYearPicker?\"Selected month: \".concat(Fe(r.props.selected,{dateFormat:\"MMMM yyyy\",locale:a})):r.props.showQuarterYearPicker?\"Selected quarter: \".concat(Fe(r.props.selected,{dateFormat:\"yyyy, QQQ\",locale:a})):\"Selected date: \".concat(Fe(r.props.selected,{dateFormat:o,locale:a})),de.default.createElement(\"span\",{role:\"alert\",\"aria-live\":\"polite\",className:\"react-datepicker__aria-live\"},e)})),Me(Pe(r),\"renderDateInput\",(function(){var e,t=ue.default(r.props.className,Me({},sr,r.state.open)),n=r.props.customInput||de.default.createElement(\"input\",{type:\"text\"}),a=r.props.customInputRef||\"ref\",o=\"string\"==typeof r.props.value?r.props.value:\"string\"==typeof r.state.inputValue?r.state.inputValue:r.props.selectsRange?function(e,t,r){if(!e)return\"\";var n=Fe(e,r),a=t?Fe(t,r):\"\";return\"\".concat(n,\" - \").concat(a)}(r.props.startDate,r.props.endDate,r.props):r.props.selectsMultiple?function(e,t){if(null==e||!e.length)return\"\";var r=Fe(e[0],t);if(1===e.length)return r;if(2===e.length){var n=Fe(e[1],t);return\"\".concat(r,\", \").concat(n)}var a=e.length-1;return\"\".concat(r,\" (+\").concat(a,\")\")}(r.props.selectedDates,r.props):Fe(r.props.selected,r.props);return de.default.cloneElement(n,(Me(Me(Me(Me(Me(Me(Me(Me(Me(Me(e={},a,(function(e){r.input=e})),\"value\",o),\"onBlur\",r.handleBlur),\"onChange\",r.handleChange),\"onClick\",r.onInputClick),\"onFocus\",r.handleFocus),\"onKeyDown\",r.onInputKeyDown),\"id\",r.props.id),\"name\",r.props.name),\"form\",r.props.form),Me(Me(Me(Me(Me(Me(Me(Me(Me(Me(e,\"autoFocus\",r.props.autoFocus),\"placeholder\",r.props.placeholderText),\"disabled\",r.props.disabled),\"autoComplete\",r.props.autoComplete),\"className\",ue.default(n.props.className,t)),\"title\",r.props.title),\"readOnly\",r.props.readOnly),\"required\",r.props.required),\"tabIndex\",r.props.tabIndex),\"aria-describedby\",r.props.ariaDescribedBy),Me(Me(Me(e,\"aria-invalid\",r.props.ariaInvalid),\"aria-labelledby\",r.props.ariaLabelledBy),\"aria-required\",r.props.ariaRequired)))})),Me(Pe(r),\"renderClearButton\",(function(){var e=r.props,t=e.isClearable,n=e.disabled,a=e.selected,o=e.startDate,s=e.endDate,i=e.clearButtonTitle,p=e.clearButtonClassName,c=void 0===p?\"\":p,l=e.ariaLabelClose,d=void 0===l?\"Close\":l,u=e.selectedDates;return t&&(null!=a||null!=o||null!=s||null!=u&&u.length)?de.default.createElement(\"button\",{type:\"button\",className:ue.default(\"react-datepicker__close-icon\",c,{\"react-datepicker__close-icon--disabled\":n}),disabled:n,\"aria-label\":d,onClick:r.onClearClick,title:i,tabIndex:-1}):null})),r.state=r.calcInitialState(),r.preventFocusTimeout=null,r}return _e(t,e),Se(t,[{key:\"componentDidMount\",value:function(){window.addEventListener(\"scroll\",this.onScroll,!0)}},{key:\"componentDidUpdate\",value:function(e,t){var r,n;e.inline&&(r=e.selected,n=this.props.selected,r&&n?C.getMonth(r)!==C.getMonth(n)||Y.getYear(r)!==Y.getYear(n):r!==n)&&this.setPreSelection(this.props.selected),void 0!==this.state.monthSelectedIn&&e.monthsShown!==this.props.monthsShown&&this.setState({monthSelectedIn:0}),e.highlightDates!==this.props.highlightDates&&this.setState({highlightDates:Dt(this.props.highlightDates)}),t.focused||$e(e.selected,this.props.selected)||this.setState({inputValue:null}),t.open!==this.state.open&&(!1===t.open&&!0===this.state.open&&this.props.onCalendarOpen(),!0===t.open&&!1===this.state.open&&this.props.onCalendarClose())}},{key:\"componentWillUnmount\",value:function(){this.clearPreventFocusTimeout(),window.removeEventListener(\"scroll\",this.onScroll,!0)}},{key:\"renderInputContainer\",value:function(){var e=this.props,t=e.showIcon,r=e.icon,n=e.calendarIconClassname,a=e.toggleCalendarOnIconClick,o=this.state.open;return de.default.createElement(\"div\",{className:\"react-datepicker__input-container\".concat(t?\" react-datepicker__view-calendar-icon\":\"\")},t&&de.default.createElement(Zt,Ce({icon:r,className:\"\".concat(n,\" \").concat(o&&\"react-datepicker-ignore-onclickoutside\")},a?{onClick:this.toggleCalendar}:null)),this.state.isRenderAriaLiveMessage&&this.renderAriaLiveRegion(),this.renderDateInput(),this.renderClearButton())}},{key:\"render\",value:function(){var e=this.renderCalendar();if(this.props.inline)return e;if(this.props.withPortal){var t=this.state.open?de.default.createElement(rr,{enableTabLoop:this.props.enableTabLoop},de.default.createElement(\"div\",{className:\"react-datepicker__portal\",tabIndex:-1,onKeyDown:this.onPortalKeyDown},e)):null;return this.state.open&&this.props.portalId&&(t=de.default.createElement(er,{portalId:this.props.portalId,portalHost:this.props.portalHost},t)),de.default.createElement(\"div\",null,this.renderInputContainer(),t)}return de.default.createElement(or,{className:this.props.popperClassName,wrapperClassName:this.props.wrapperClassName,hidePopper:!this.isCalendarOpen(),portalId:this.props.portalId,portalHost:this.props.portalHost,popperModifiers:this.props.popperModifiers,targetComponent:this.renderInputContainer(),popperContainer:this.props.popperContainer,popperComponent:e,popperPlacement:this.props.popperPlacement,popperProps:this.props.popperProps,popperOnKeyDown:this.onPopperKeyDown,enableTabLoop:this.props.enableTabLoop,showArrow:this.props.showPopperArrow})}}],[{key:\"defaultProps\",get:function(){return{allowSameDay:!1,dateFormat:\"MM/dd/yyyy\",dateFormatCalendar:\"LLLL yyyy\",onChange:function(){},disabled:!1,disabledKeyboardNavigation:!1,dropdownMode:\"scroll\",onFocus:function(){},onBlur:function(){},onKeyDown:function(){},onInputClick:function(){},onSelect:function(){},onClickOutside:function(){},onMonthChange:function(){},onCalendarOpen:function(){},onCalendarClose:function(){},preventOpenOnFocus:!1,onYearChange:function(){},onInputError:function(){},monthsShown:1,readOnly:!1,withPortal:!1,selectsDisabledDaysInRange:!1,shouldCloseOnSelect:!0,showTimeSelect:!1,showTimeInput:!1,showPreviousMonths:!1,showMonthYearPicker:!1,showFullMonthYearPicker:!1,showTwoColumnMonthYearPicker:!1,showFourColumnMonthYearPicker:!1,showYearPicker:!1,showQuarterYearPicker:!1,showWeekPicker:!1,strictParsing:!1,timeIntervals:30,timeCaption:\"Time\",previousMonthAriaLabel:\"Previous Month\",previousMonthButtonLabel:\"Previous Month\",nextMonthAriaLabel:\"Next Month\",nextMonthButtonLabel:\"Next Month\",previousYearAriaLabel:\"Previous Year\",previousYearButtonLabel:\"Previous Year\",nextYearAriaLabel:\"Next Year\",nextYearButtonLabel:\"Next Year\",timeInputLabel:\"Time\",enableTabLoop:!0,yearItemNumber:xe,focusSelectedMonth:!1,showPopperArrow:!0,excludeScrollbar:!0,customTimeInput:null,calendarStartDay:void 0,toggleCalendarOnIconClick:!1}}}]),t}(de.default.Component),lr=\"input\",dr=\"navigate\";e.CalendarContainer=Gt,e.default=cr,e.getDefaultLocale=Ge,e.registerLocale=function(e,t){var r=\"undefined\"!=typeof window?window:globalThis;r.__localeData__||(r.__localeData__={}),r.__localeData__[e]=t},e.setDefaultLocale=function(e){(\"undefined\"!=typeof window?window:globalThis).__localeId__=e},Object.defineProperty(e,\"__esModule\",{value:!0})}));\n","\"use strict\";\nexports.isDate = isDate; /**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n","\"use strict\";\nexports.isValid = isValid;\nvar _index = require(\"./isDate.js\");\nvar _index2 = require(\"./toDate.js\");\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(date) {\n if (!(0, _index.isDate)(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = (0, _index2.toDate)(date);\n return !isNaN(Number(_date));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"defaultLocale\", {\n enumerable: true,\n get: function () {\n return _index.enUS;\n },\n});\nvar _index = require(\"../locale/en-US.js\");\n","\"use strict\";\nexports.differenceInCalendarDays = differenceInCalendarDays;\nvar _index = require(\"./constants.js\");\nvar _index2 = require(\"./startOfDay.js\");\nvar _index3 = require(\"./_lib/getTimezoneOffsetInMilliseconds.js\");\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nfunction differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = (0, _index2.startOfDay)(dateLeft);\n const startOfDayRight = (0, _index2.startOfDay)(dateRight);\n\n const timestampLeft =\n +startOfDayLeft -\n (0, _index3.getTimezoneOffsetInMilliseconds)(startOfDayLeft);\n const timestampRight =\n +startOfDayRight -\n (0, _index3.getTimezoneOffsetInMilliseconds)(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(\n (timestampLeft - timestampRight) / _index.millisecondsInDay,\n );\n}\n","\"use strict\";\nexports.startOfYear = startOfYear;\nvar _index = require(\"./toDate.js\");\nvar _index2 = require(\"./constructFrom.js\");\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nfunction startOfYear(date) {\n const cleanDate = (0, _index.toDate)(date);\n const _date = (0, _index2.constructFrom)(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n","\"use strict\";\nexports.getISOWeekYear = getISOWeekYear;\nvar _index = require(\"./constructFrom.js\");\nvar _index2 = require(\"./startOfISOWeek.js\");\nvar _index3 = require(\"./toDate.js\");\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nfunction getISOWeekYear(date) {\n const _date = (0, _index3.toDate)(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = (0, _index.constructFrom)(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = (0, _index2.startOfISOWeek)(\n fourthOfJanuaryOfNextYear,\n );\n\n const fourthOfJanuaryOfThisYear = (0, _index.constructFrom)(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = (0, _index2.startOfISOWeek)(\n fourthOfJanuaryOfThisYear,\n );\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n","\"use strict\";\nexports.getWeek = getWeek;\nvar _index = require(\"./constants.js\");\nvar _index2 = require(\"./startOfWeek.js\");\nvar _index3 = require(\"./startOfWeekYear.js\");\nvar _index4 = require(\"./toDate.js\");\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nfunction getWeek(date, options) {\n const _date = (0, _index4.toDate)(date);\n const diff =\n +(0, _index2.startOfWeek)(_date, options) -\n +(0, _index3.startOfWeekYear)(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / _index.millisecondsInWeek) + 1;\n}\n","\"use strict\";\nexports.addLeadingZeros = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","\"use strict\";\nexports.longFormatters = void 0;\n\nconst dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nconst longFormatters = (exports.longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n});\n","\"use strict\";\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.warnOrThrowProtectedError = warnOrThrowProtectedError;\nconst dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nfunction isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nfunction isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nfunction warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","\"use strict\";\nexports.addMilliseconds = addMilliseconds;\nvar _index = require(\"./toDate.js\");\nvar _index2 = require(\"./constructFrom.js\");\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(date, amount) {\n const timestamp = +(0, _index.toDate)(date);\n return (0, _index2.constructFrom)(date, timestamp + amount);\n}\n","\"use strict\";\nexports.addWeeks = addWeeks;\nvar _index = require(\"./addDays.js\");\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nfunction addWeeks(date, amount) {\n const days = amount * 7;\n return (0, _index.addDays)(date, days);\n}\n","\"use strict\";\nexports.addQuarters = addQuarters;\nvar _index = require(\"./addMonths.js\");\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\nfunction addQuarters(date, amount) {\n const months = amount * 3;\n return (0, _index.addMonths)(date, months);\n}\n","\"use strict\";\nexports.addYears = addYears;\nvar _index = require(\"./addMonths.js\");\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nfunction addYears(date, amount) {\n return (0, _index.addMonths)(date, amount * 12);\n}\n","\"use strict\";\nexports.startOfQuarter = startOfQuarter;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nfunction startOfQuarter(date) {\n const _date = (0, _index.toDate)(date);\n const currentMonth = _date.getMonth();\n const month = currentMonth - (currentMonth % 3);\n _date.setMonth(month, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n","\"use strict\";\nexports.ValueSetter =\n exports.Setter =\n exports.DateToSystemTimezoneSetter =\n void 0;\nvar _index = require(\"../../transpose.js\");\nvar _index2 = require(\"../../constructFrom.js\");\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nclass Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\nexports.Setter = Setter;\n\nclass ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\nexports.ValueSetter = ValueSetter;\n\nclass DateToSystemTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return (0, _index2.constructFrom)(date, (0, _index.transpose)(date, Date));\n }\n}\nexports.DateToSystemTimezoneSetter = DateToSystemTimezoneSetter;\n","var createAggregator = require('./_createAggregator');\n\n/**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\nvar partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n}, function() { return [[], []]; });\n\nmodule.exports = partition;\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t'use strict';\n\n\tvar addObserver = function(){\n\t\tvar connect, disconnect, observer, connected;\n\t\tvar lsCfg = lazySizes.cfg;\n\t\tvar attributes = {'data-bgset': 1, 'data-include': 1, 'data-poster': 1, 'data-bg': 1, 'data-script': 1};\n\t\tvar regClassTest = '(\\\\s|^)(' + lsCfg.loadedClass;\n\t\tvar docElem = document.documentElement;\n\n\t\tvar setClass = function(target){\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.rC(target, lsCfg.loadedClass);\n\t\t\t\tif(lsCfg.unloadedClass){\n\t\t\t\t\tlazySizes.rC(target, lsCfg.unloadedClass);\n\t\t\t\t}\n\t\t\t\tlazySizes.aC(target, lsCfg.lazyClass);\n\n\t\t\t\tif(target.style.display == 'none' || (target.parentNode && target.parentNode.style.display == 'none')){\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tlazySizes.loader.unveil(target);\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\tvar onMutation = function(mutations){\n\t\t\tvar i, len, mutation, target;\n\t\t\tfor(i = 0, len = mutations.length; i < len; i++){\n\t\t\t\tmutation = mutations[i];\n\t\t\t\ttarget = mutation.target;\n\n\t\t\t\tif(!target.getAttribute(mutation.attributeName)){continue;}\n\n\t\t\t\tif(target.localName == 'source' && target.parentNode){\n\t\t\t\t\ttarget = target.parentNode.querySelector('img');\n\t\t\t\t}\n\n\t\t\t\tif(target && regClassTest.test(target.className)){\n\t\t\t\t\tsetClass(target);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif(lsCfg.unloadedClass){\n\t\t\tregClassTest += '|' + lsCfg.unloadedClass;\n\t\t}\n\n\t\tregClassTest += '|' + lsCfg.loadingClass + ')(\\\\s|$)';\n\n\t\tregClassTest = new RegExp(regClassTest);\n\n\t\tattributes[lsCfg.srcAttr] = 1;\n\t\tattributes[lsCfg.srcsetAttr] = 1;\n\n\t\tif(window.MutationObserver){\n\t\t\tobserver = new MutationObserver(onMutation);\n\n\t\t\tconnect = function(){\n\t\t\t\tif(!connected){\n\t\t\t\t\tconnected = true;\n\t\t\t\t\tobserver.observe( docElem, { subtree: true, attributes: true, attributeFilter: Object.keys(attributes)} );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tif(connected){\n\t\t\t\t\tconnected = false;\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\tdocElem.addEventListener('DOMAttrModified', (function(){\n\t\t\t\tvar runs;\n\t\t\t\tvar modifications = [];\n\t\t\t\tvar callMutations = function(){\n\t\t\t\t\tonMutation(modifications);\n\t\t\t\t\tmodifications = [];\n\t\t\t\t\truns = false;\n\t\t\t\t};\n\t\t\t\treturn function(e){\n\t\t\t\t\tif(connected && attributes[e.attrName] && e.newValue){\n\t\t\t\t\t\tmodifications.push({target: e.target, attributeName: e.attrName});\n\t\t\t\t\t\tif(!runs){\n\t\t\t\t\t\t\tsetTimeout(callMutations);\n\t\t\t\t\t\t\truns = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t})(), true);\n\n\t\t\tconnect = function(){\n\t\t\t\tconnected = true;\n\t\t\t};\n\t\t\tdisconnect = function(){\n\t\t\t\tconnected = false;\n\t\t\t};\n\t\t}\n\n\t\taddEventListener('lazybeforeunveil', disconnect, true);\n\t\taddEventListener('lazybeforeunveil', connect);\n\n\t\taddEventListener('lazybeforesizes', disconnect, true);\n\t\taddEventListener('lazybeforesizes', connect);\n\t\tconnect();\n\n\t\tremoveEventListener('lazybeforeunveil', addObserver);\n\t};\n\n\n\taddEventListener('lazybeforeunveil', addObserver);\n}));\n","(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t'use strict';\n\tif(!window.addEventListener){return;}\n\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar regWhite = /\\s+/g;\n\tvar regSplitSet = /\\s*\\|\\s+|\\s+\\|\\s*/g;\n\tvar regSource = /^(.+?)(?:\\s+\\[\\s*(.+?)\\s*\\])(?:\\s+\\[\\s*(.+?)\\s*\\])?$/;\n\tvar regType = /^\\s*\\(*\\s*type\\s*:\\s*(.+?)\\s*\\)*\\s*$/;\n\tvar regBgUrlEscape = /\\(|\\)|'/;\n\tvar allowedBackgroundSize = {contain: 1, cover: 1};\n\tvar proxyWidth = function(elem){\n\t\tvar width = lazySizes.gW(elem, elem.parentNode);\n\n\t\tif(!elem._lazysizesWidth || width > elem._lazysizesWidth){\n\t\t\telem._lazysizesWidth = width;\n\t\t}\n\t\treturn elem._lazysizesWidth;\n\t};\n\tvar getBgSize = function(elem){\n\t\tvar bgSize;\n\n\t\tbgSize = (getComputedStyle(elem) || {getPropertyValue: function(){}}).getPropertyValue('background-size');\n\n\t\tif(!allowedBackgroundSize[bgSize] && allowedBackgroundSize[elem.style.backgroundSize]){\n\t\t\tbgSize = elem.style.backgroundSize;\n\t\t}\n\n\t\treturn bgSize;\n\t};\n\tvar setTypeOrMedia = function(source, match){\n\t\tif(match){\n\t\t\tvar typeMatch = match.match(regType);\n\t\t\tif(typeMatch && typeMatch[1]){\n\t\t\t\tsource.setAttribute('type', typeMatch[1]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute('media', lazySizesCfg.customMedia[match] || match);\n\t\t\t}\n\t\t}\n\t};\n\tvar createPicture = function(sets, elem, img){\n\t\tvar picture = document.createElement('picture');\n\t\tvar sizes = elem.getAttribute(lazySizesCfg.sizesAttr);\n\t\tvar ratio = elem.getAttribute('data-ratio');\n\t\tvar optimumx = elem.getAttribute('data-optimumx');\n\n\t\tif(elem._lazybgset && elem._lazybgset.parentNode == elem){\n\t\t\telem.removeChild(elem._lazybgset);\n\t\t}\n\n\t\tObject.defineProperty(img, '_lazybgset', {\n\t\t\tvalue: elem,\n\t\t\twritable: true\n\t\t});\n\t\tObject.defineProperty(elem, '_lazybgset', {\n\t\t\tvalue: picture,\n\t\t\twritable: true\n\t\t});\n\n\t\tsets = sets.replace(regWhite, ' ').split(regSplitSet);\n\n\t\tpicture.style.display = 'none';\n\t\timg.className = lazySizesCfg.lazyClass;\n\n\t\tif(sets.length == 1 && !sizes){\n\t\t\tsizes = 'auto';\n\t\t}\n\n\t\tsets.forEach(function(set){\n\t\t\tvar match;\n\t\t\tvar source = document.createElement('source');\n\n\t\t\tif(sizes && sizes != 'auto'){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tif((match = set.match(regSource))){\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, match[1]);\n\n\t\t\t\tsetTypeOrMedia(source, match[2]);\n\t\t\t\tsetTypeOrMedia(source, match[3]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, set);\n\t\t\t}\n\n\t\t\tpicture.appendChild(source);\n\t\t});\n\n\t\tif(sizes){\n\t\t\timg.setAttribute(lazySizesCfg.sizesAttr, sizes);\n\t\t\telem.removeAttribute(lazySizesCfg.sizesAttr);\n\t\t\telem.removeAttribute('sizes');\n\t\t}\n\t\tif(optimumx){\n\t\t\timg.setAttribute('data-optimumx', optimumx);\n\t\t}\n\t\tif(ratio) {\n\t\t\timg.setAttribute('data-ratio', ratio);\n\t\t}\n\n\t\tpicture.appendChild(img);\n\n\t\telem.appendChild(picture);\n\t};\n\n\tvar proxyLoad = function(e){\n\t\tif(!e.target._lazybgset){return;}\n\n\t\tvar image = e.target;\n\t\tvar elem = image._lazybgset;\n\t\tvar bg = image.currentSrc || image.src;\n\n\n\t\tif(bg){\n\t\t\tvar useSrc = regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg;\n\t\t\tvar event = lazySizes.fire(elem, 'bgsetproxy', {\n\t\t\t\tsrc: bg,\n\t\t\t\tuseSrc: useSrc,\n\t\t\t\tfullSrc: null,\n\t\t\t});\n\n\t\t\tif(!event.defaultPrevented){\n\t\t\t\telem.style.backgroundImage = event.detail.fullSrc || 'url(' + event.detail.useSrc + ')';\n\t\t\t}\n\t\t}\n\n\t\tif(image._lazybgsetLoading){\n\t\t\tlazySizes.fire(elem, '_lazyloaded', {}, false, true);\n\t\t\tdelete image._lazybgsetLoading;\n\t\t}\n\t};\n\n\taddEventListener('lazybeforeunveil', function(e){\n\t\tvar set, image, elem;\n\n\t\tif(e.defaultPrevented || !(set = e.target.getAttribute('data-bgset'))){return;}\n\n\t\telem = e.target;\n\t\timage = document.createElement('img');\n\n\t\timage.alt = '';\n\n\t\timage._lazybgsetLoading = true;\n\t\te.detail.firesLoad = true;\n\n\t\tcreatePicture(set, elem, image);\n\n\t\tsetTimeout(function(){\n\t\t\tlazySizes.loader.unveil(image);\n\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.fire(image, '_lazyloaded', {}, true, true);\n\t\t\t\tif(image.complete) {\n\t\t\t\t\tproxyLoad({target: image});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t});\n\n\tdocument.addEventListener('load', proxyLoad, true);\n\n\twindow.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.detail.instance != lazySizes){return;}\n\t\tif(e.target._lazybgset && e.detail.dataAttr){\n\t\t\tvar elem = e.target._lazybgset;\n\t\t\tvar bgSize = getBgSize(elem);\n\n\t\t\tif(allowedBackgroundSize[bgSize]){\n\t\t\t\te.target._lazysizesParentFit = bgSize;\n\n\t\t\t\tlazySizes.rAF(function(){\n\t\t\t\t\te.target.setAttribute('data-parent-fit', bgSize);\n\t\t\t\t\tif(e.target._lazysizesParentFit){\n\t\t\t\t\t\tdelete e.target._lazysizesParentFit;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, true);\n\n\tdocument.documentElement.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || !e.target._lazybgset || e.detail.instance != lazySizes){return;}\n\t\te.detail.width = proxyWidth(e.target._lazybgset);\n\t});\n}));\n","(function(root,factory){\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.eventListener = factory();\n }\n}(this, function () {\n\tfunction wrap(standard, fallback) {\n\t\treturn function (el, evtName, listener, useCapture) {\n\t\t\tif (el[standard]) {\n\t\t\t\tel[standard](evtName, listener, useCapture);\n\t\t\t} else if (el[fallback]) {\n\t\t\t\tel[fallback]('on' + evtName, listener);\n\t\t\t}\n\t\t}\n\t}\n\n return {\n\t\tadd: wrap('addEventListener', 'attachEvent'),\n\t\tremove: wrap('removeEventListener', 'detachEvent')\n\t};\n}));","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","var escapeHtmlChar = require('./_escapeHtmlChar'),\n toString = require('./toString');\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nmodule.exports = escape;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nmodule.exports = escapeHtmlChar;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var get = require('./get');\n\n/**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\nfunction baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n}\n\nmodule.exports = baseAt;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *

\n * I'm a fade Transition!\n *
\n * )}\n * \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","import { _isSSR } from './setSSR';\n\n/**\n * Helper to get the document object. Note that in popup window cases, document\n * might be the wrong document, which is why we look at ownerDocument for the\n * truth. Also note that the SSR flag is used to test ssr scenarios even if\n * document is defined (from JSDOM for example.)\n *\n * @public\n */\nexport function getDocument(rootElement?: HTMLElement | null): Document | undefined {\n if (_isSSR || typeof document === 'undefined') {\n return undefined;\n } else {\n const el = rootElement as Element;\n\n return el && el.ownerDocument ? el.ownerDocument : document;\n }\n}\n","export let _isSSR = false;\n\n/**\n * Helper to set ssr mode to simulate no window object returned from getWindow helper.\n *\n * @public\n */\nexport function setSSR(isEnabled: boolean): void {\n _isSSR = isEnabled;\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Fetches an item from session storage without throwing an exception\n * @param key The key of the item to fetch from session storage\n */\nexport function getItem(key: string): string | null {\n let result = null;\n try {\n const win = getWindow();\n result = win ? win.sessionStorage.getItem(key) : null;\n } catch (e) {\n /* Eat the exception */\n }\n return result;\n}\n\n/**\n * Inserts an item into session storage without throwing an exception\n * @param key The key of the item to add to session storage\n * @param data The data to put into session storage\n */\nexport function setItem(key: string, data: string): void {\n try {\n getWindow()?.sessionStorage.setItem(key, data);\n } catch (e) {\n /* Eat the exception */\n }\n}\n","import { IStyleOptions } from './IStyleOptions';\n\n/**\n * Sets the current RTL value.\n */\nexport function setRTL(isRTL: boolean): void {\n if (_rtl !== isRTL) {\n _rtl = isRTL;\n }\n}\n\n/**\n * Gets the current RTL value.\n */\nexport function getRTL(): boolean {\n if (_rtl === undefined) {\n _rtl =\n typeof document !== 'undefined' &&\n !!document.documentElement &&\n document.documentElement.getAttribute('dir') === 'rtl';\n }\n return _rtl;\n}\n\n// This has been split into 2 lines because it was working in Fabric due to the code being transpiled to es5, so this\n// was converted to var while not working in Fluent that uses babel to transpile the code to be es6-like. Splitting the\n// logic into two lines, however, allows it to work in both scenarios.\nlet _rtl: boolean;\n_rtl = getRTL();\n\nexport function getStyleOptions(): IStyleOptions {\n return {\n rtl: getRTL(),\n };\n}\n","import { IStyleSet, IConcatenatedStyleSet } from './IStyleSet';\nimport { IStyleBase, IStyle } from './IStyle';\nimport { IStyleFunctionOrObject } from './IStyleFunction';\nimport { ObjectOnly } from './ObjectOnly';\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet - The first style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet: TStyleSet | false | null | undefined,\n): IConcatenatedStyleSet>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n): IConcatenatedStyleSet & ObjectOnly>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n): IConcatenatedStyleSet & ObjectOnly & ObjectOnly>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly & ObjectOnly & ObjectOnly & ObjectOnly\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSet1 - The first style set to be concatenated.\n * @param styleSet2 - The second style set to be concatenated.\n * @param styleSet3 - The third style set to be concatenated.\n * @param styleSet4 - The fourth style set to be concatenated.\n * @param styleSet5 - The fifth set to be concatenated.\n * @param styleSet6 - The sixth set to be concatenated.\n */\nexport function concatStyleSets(\n styleSet1: TStyleSet1 | false | null | undefined,\n styleSet2: TStyleSet2 | false | null | undefined,\n styleSet3: TStyleSet3 | false | null | undefined,\n styleSet4: TStyleSet4 | false | null | undefined,\n styleSet5: TStyleSet5 | false | null | undefined,\n styleSet6: TStyleSet6 | false | null | undefined,\n): IConcatenatedStyleSet<\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly &\n ObjectOnly\n>;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet;\n\n/**\n * Combine a set of styles together (but does not register css classes).\n * @param styleSets - One or more stylesets to be merged (each param can also be falsy).\n */\nexport function concatStyleSets(...styleSets: (IStyleSet | false | null | undefined)[]): IConcatenatedStyleSet {\n if (styleSets && styleSets.length === 1 && styleSets[0] && !(styleSets[0] as IStyleSet).subComponentStyles) {\n return styleSets[0] as IConcatenatedStyleSet;\n }\n\n const mergedSet: IConcatenatedStyleSet = {};\n\n // We process sub component styles in two phases. First we collect them, then we combine them into 1 style function.\n const workingSubcomponentStyles: { [key: string]: Array> } = {};\n\n for (const currentSet of styleSets) {\n if (currentSet) {\n for (const prop in currentSet) {\n if (currentSet.hasOwnProperty(prop)) {\n if (prop === 'subComponentStyles' && currentSet.subComponentStyles !== undefined) {\n // subcomponent styles - style functions or objects\n\n const currentComponentStyles = currentSet.subComponentStyles;\n for (const subCompProp in currentComponentStyles) {\n if (currentComponentStyles.hasOwnProperty(subCompProp)) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n workingSubcomponentStyles[subCompProp].push(currentComponentStyles[subCompProp]);\n } else {\n workingSubcomponentStyles[subCompProp] = [currentComponentStyles[subCompProp]];\n }\n }\n }\n\n continue;\n }\n\n // the as any casts below is a workaround for ts 2.8.\n // todo: remove cast to any in ts 2.9.\n const mergedValue: IStyle = (mergedSet as any)[prop];\n const currentValue = (currentSet as any)[prop];\n\n if (mergedValue === undefined) {\n (mergedSet as any)[prop] = currentValue;\n } else {\n (mergedSet as any)[prop] = [\n // https://github.com/Microsoft/TypeScript/issues/25474\n ...(Array.isArray(mergedValue) ? mergedValue : [mergedValue as IStyleBase]),\n ...(Array.isArray(currentValue) ? currentValue : [currentValue as IStyleBase]),\n ];\n }\n }\n }\n }\n }\n\n if (Object.keys(workingSubcomponentStyles).length > 0) {\n mergedSet.subComponentStyles = {};\n const mergedSubStyles = mergedSet.subComponentStyles;\n\n // now we process the subcomponent styles if there are any\n for (const subCompProp in workingSubcomponentStyles) {\n if (workingSubcomponentStyles.hasOwnProperty(subCompProp)) {\n const workingSet = workingSubcomponentStyles[subCompProp];\n mergedSubStyles[subCompProp] = (styleProps: any) => {\n return concatStyleSets(\n ...workingSet.map((styleFunctionOrObject: IStyleFunctionOrObject) =>\n typeof styleFunctionOrObject === 'function' ? styleFunctionOrObject(styleProps) : styleFunctionOrObject,\n ),\n );\n };\n }\n }\n }\n\n return mergedSet;\n}\n","export interface IVendorSettings {\n isWebkit?: boolean;\n isMoz?: boolean;\n isMs?: boolean;\n isOpera?: boolean;\n}\n\nlet _vendorSettings: IVendorSettings | undefined;\n\nexport function getVendorSettings(): IVendorSettings {\n if (!_vendorSettings) {\n const doc = typeof document !== 'undefined' ? document : undefined;\n const nav = typeof navigator !== 'undefined' ? navigator : undefined;\n const userAgent = nav?.userAgent?.toLowerCase();\n\n if (!doc) {\n _vendorSettings = {\n isWebkit: true,\n isMoz: true,\n isOpera: true,\n isMs: true,\n };\n } else {\n _vendorSettings = {\n isWebkit: !!(doc && 'WebkitAppearance' in doc.documentElement.style),\n isMoz: !!(userAgent && userAgent.indexOf('firefox') > -1),\n isOpera: !!(userAgent && userAgent.indexOf('opera') > -1),\n isMs: !!(nav && (/rv:11.0/i.test(nav.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent))),\n };\n }\n }\n\n return _vendorSettings;\n}\n\n/**\n * Sets the vendor settings for prefixing and vendor specific operations.\n */\nexport function setVendorSettings(vendorSettings?: IVendorSettings): void {\n _vendorSettings = vendorSettings;\n}\n","const rules: { [key: string]: string } = {};\n\nexport function kebabRules(rulePairs: (string | number)[], index: number): void {\n const rule: string = rulePairs[index] as string;\n\n if (rule.charAt(0) !== '-') {\n rulePairs[index] = rules[rule] = rules[rule] || rule.replace(/([A-Z])/g, '-$1').toLowerCase();\n }\n}\n","import { getVendorSettings } from '../getVendorSettings';\n\nconst autoPrefixNames: { [key: string]: number } = {\n 'user-select': 1,\n};\n\nexport function prefixRules(rulePairs: (string | number)[], index: number): void {\n const vendorSettings = getVendorSettings();\n\n const name = rulePairs[index];\n\n if (autoPrefixNames[name]) {\n const value = rulePairs[index + 1];\n\n if (autoPrefixNames[name]) {\n if (vendorSettings.isWebkit) {\n rulePairs.push('-webkit-' + name, value);\n }\n if (vendorSettings.isMoz) {\n rulePairs.push('-moz-' + name, value);\n }\n if (vendorSettings.isMs) {\n rulePairs.push('-ms-' + name, value);\n }\n if (vendorSettings.isOpera) {\n rulePairs.push('-o-' + name, value);\n }\n }\n }\n}\n","const NON_PIXEL_NUMBER_PROPS = [\n 'column-count',\n 'font-weight',\n 'flex',\n 'flex-grow',\n 'flex-shrink',\n 'fill-opacity',\n 'opacity',\n 'order',\n 'z-index',\n 'zoom',\n];\n\nexport function provideUnits(rulePairs: (string | number)[], index: number): void {\n const name = rulePairs[index] as string;\n const value = rulePairs[index + 1];\n\n if (typeof value === 'number') {\n const isNonPixelProp = NON_PIXEL_NUMBER_PROPS.indexOf(name as string) > -1;\n const isVariableOrPrefixed = name.indexOf('--') > -1;\n const unit = isNonPixelProp || isVariableOrPrefixed ? '' : 'px';\n\n rulePairs[index + 1] = `${value}${unit}`;\n }\n}\n","import { IStyleOptions } from '../IStyleOptions';\n\nconst LEFT = 'left';\nconst RIGHT = 'right';\nconst NO_FLIP = '@noflip';\nconst NAME_REPLACEMENTS: { [key: string]: string } = {\n [LEFT]: RIGHT,\n [RIGHT]: LEFT,\n};\nconst VALUE_REPLACEMENTS: { [key: string]: string } = {\n 'w-resize': 'e-resize',\n 'sw-resize': 'se-resize',\n 'nw-resize': 'ne-resize',\n};\n\n/**\n * RTLifies the rulePair in the array at the current index. This mutates the array for performance\n * reasons.\n */\nexport function rtlifyRules(options: IStyleOptions, rulePairs: (string | number)[], index: number): void {\n if (options.rtl) {\n const name = rulePairs[index] as string;\n\n if (!name) {\n return;\n }\n\n const value = rulePairs[index + 1] as string;\n\n if (typeof value === 'string' && value.indexOf(NO_FLIP) >= 0) {\n rulePairs[index + 1] = value.replace(/\\s*(?:\\/\\*\\s*)?\\@noflip\\b(?:\\s*\\*\\/)?\\s*?/g, '');\n } else if (name.indexOf(LEFT) >= 0) {\n rulePairs[index] = name.replace(LEFT, RIGHT);\n } else if (name.indexOf(RIGHT) >= 0) {\n rulePairs[index] = name.replace(RIGHT, LEFT);\n } else if (String(value).indexOf(LEFT) >= 0) {\n rulePairs[index + 1] = value.replace(LEFT, RIGHT);\n } else if (String(value).indexOf(RIGHT) >= 0) {\n rulePairs[index + 1] = value.replace(RIGHT, LEFT);\n } else if (NAME_REPLACEMENTS[name]) {\n rulePairs[index] = NAME_REPLACEMENTS[name];\n } else if (VALUE_REPLACEMENTS[value]) {\n rulePairs[index + 1] = VALUE_REPLACEMENTS[value];\n } else {\n switch (name) {\n case 'margin':\n case 'padding':\n rulePairs[index + 1] = flipQuad(value);\n break;\n case 'box-shadow':\n rulePairs[index + 1] = negateNum(value, 0);\n break;\n }\n }\n }\n}\n\n/**\n * Given a string value in a space delimited format (e.g. \"1 2 3 4\"), negates a particular value.\n */\nfunction negateNum(value: string, partIndex: number): string {\n const parts = value.split(' ');\n const numberVal = parseInt(parts[partIndex], 10);\n\n parts[0] = parts[0].replace(String(numberVal), String(numberVal * -1));\n\n return parts.join(' ');\n}\n\n/**\n * Given a string quad, flips the left and right values.\n */\nfunction flipQuad(value: string): string {\n if (typeof value === 'string') {\n const parts = value.split(' ');\n\n if (parts.length === 4) {\n return `${parts[0]} ${parts[3]} ${parts[2]} ${parts[1]}`;\n }\n }\n\n return value;\n}\n","import { IStyle } from './IStyle';\nimport { IRawStyle } from './IRawStyle';\n\nimport { Stylesheet } from './Stylesheet';\nimport { kebabRules } from './transforms/kebabRules';\nimport { prefixRules } from './transforms/prefixRules';\nimport { provideUnits } from './transforms/provideUnits';\nimport { rtlifyRules } from './transforms/rtlifyRules';\nimport { IStyleOptions } from './IStyleOptions';\n\nconst DISPLAY_NAME = 'displayName';\n\ntype IDictionary = { [key: string]: any };\n\ninterface IRuleSet {\n __order: string[];\n [key: string]: IDictionary;\n}\n\nfunction getDisplayName(rules?: { [key: string]: IRawStyle }): string | undefined {\n const rootStyle: IStyle = rules && rules['&'];\n\n return rootStyle ? (rootStyle as IRawStyle).displayName : undefined;\n}\n\nconst globalSelectorRegExp = /\\:global\\((.+?)\\)/g;\n\ntype ReplacementInfo = [number, number, string];\n\n/**\n * Finds comma separated selectors in a :global() e.g. \":global(.class1, .class2, .class3)\"\n * and wraps them each in their own global \":global(.class1), :global(.class2), :global(.class3)\"\n *\n * @param selectorWithGlobals The selector to process\n * @returns The updated selector\n */\nfunction expandCommaSeparatedGlobals(selectorWithGlobals: string): string {\n // We the selector does not have a :global() we can shortcut\n if (!globalSelectorRegExp.test(selectorWithGlobals)) {\n return selectorWithGlobals;\n }\n\n const replacementInfo: ReplacementInfo[] = [];\n\n const findGlobal = /\\:global\\((.+?)\\)/g;\n let match = null;\n // Create a result list for global selectors so we can replace them.\n while ((match = findGlobal.exec(selectorWithGlobals))) {\n // Only if the found selector is a comma separated list we'll process it.\n if (match[1].indexOf(',') > -1) {\n replacementInfo.push([\n match.index,\n match.index + match[0].length,\n // Wrap each of the found selectors in :global()\n match[1]\n .split(',')\n .map((v: string) => `:global(${v.trim()})`)\n .join(', '),\n ]);\n }\n }\n\n // Replace the found selectors with their wrapped variants in reverse order\n return replacementInfo\n .reverse()\n .reduce((selector: string, [matchIndex, matchEndIndex, replacement]: ReplacementInfo) => {\n const prefix = selector.slice(0, matchIndex);\n const suffix = selector.slice(matchEndIndex);\n\n return prefix + replacement + suffix;\n }, selectorWithGlobals);\n}\n\nfunction expandSelector(newSelector: string, currentSelector: string): string {\n if (newSelector.indexOf(':global(') >= 0) {\n return newSelector.replace(globalSelectorRegExp, '$1');\n } else if (newSelector.indexOf(':') === 0) {\n return currentSelector + newSelector;\n } else if (newSelector.indexOf('&') < 0) {\n return currentSelector + ' ' + newSelector;\n }\n\n return newSelector;\n}\n\nfunction extractSelector(currentSelector: string, rules: IRuleSet = { __order: [] }, selector: string, value: IStyle) {\n if (selector.indexOf('@') === 0) {\n selector = selector + '{' + currentSelector;\n extractRules([value], rules, selector);\n } else if (selector.indexOf(',') > -1) {\n expandCommaSeparatedGlobals(selector)\n .split(',')\n .map((s: string) => s.trim())\n .forEach((separatedSelector: string) =>\n extractRules([value], rules, expandSelector(separatedSelector, currentSelector)),\n );\n } else {\n extractRules([value], rules, expandSelector(selector, currentSelector));\n }\n}\n\nfunction extractRules(args: IStyle[], rules: IRuleSet = { __order: [] }, currentSelector: string = '&'): IRuleSet {\n const stylesheet = Stylesheet.getInstance();\n let currentRules: IDictionary | undefined = rules[currentSelector] as IDictionary;\n\n if (!currentRules) {\n currentRules = {};\n rules[currentSelector] = currentRules;\n rules.__order.push(currentSelector);\n }\n\n for (const arg of args) {\n // If the arg is a string, we need to look up the class map and merge.\n if (typeof arg === 'string') {\n const expandedRules = stylesheet.argsFromClassName(arg);\n\n if (expandedRules) {\n extractRules(expandedRules, rules, currentSelector);\n }\n // Else if the arg is an array, we need to recurse in.\n } else if (Array.isArray(arg)) {\n extractRules(arg, rules, currentSelector);\n } else {\n for (const prop in arg as any) {\n if ((arg as any).hasOwnProperty(prop)) {\n const propValue = (arg as any)[prop];\n\n if (prop === 'selectors') {\n // every child is a selector.\n const selectors: { [key: string]: IStyle } = (arg as any).selectors;\n\n for (const newSelector in selectors) {\n if (selectors.hasOwnProperty(newSelector)) {\n extractSelector(currentSelector, rules, newSelector, selectors[newSelector]);\n }\n }\n } else if (typeof propValue === 'object') {\n // prop is a selector.\n if (propValue !== null) {\n extractSelector(currentSelector, rules, prop, propValue);\n }\n } else {\n if (propValue !== undefined) {\n // Else, add the rule to the currentSelector.\n if (prop === 'margin' || prop === 'padding') {\n expandQuads(currentRules, prop, propValue);\n } else {\n (currentRules as any)[prop] = propValue;\n }\n }\n }\n }\n }\n }\n }\n\n return rules;\n}\n\nfunction expandQuads(currentRules: IDictionary, name: string, value: string): void {\n const parts = typeof value === 'string' ? value.split(' ') : [value];\n\n currentRules[name + 'Top'] = parts[0];\n currentRules[name + 'Right'] = parts[1] || parts[0];\n currentRules[name + 'Bottom'] = parts[2] || parts[0];\n currentRules[name + 'Left'] = parts[3] || parts[1] || parts[0];\n}\n\nfunction getKeyForRules(options: IStyleOptions, rules: IRuleSet): string | undefined {\n const serialized: string[] = [options.rtl ? 'rtl' : 'ltr'];\n let hasProps = false;\n\n for (const selector of rules.__order) {\n serialized.push(selector);\n const rulesForSelector = rules[selector];\n\n for (const propName in rulesForSelector) {\n if (rulesForSelector.hasOwnProperty(propName) && rulesForSelector[propName] !== undefined) {\n hasProps = true;\n serialized.push(propName, rulesForSelector[propName]);\n }\n }\n }\n\n return hasProps ? serialized.join('') : undefined;\n}\n\nfunction repeatString(target: string, count: number): string {\n if (count <= 0) {\n return '';\n }\n\n if (count === 1) {\n return target;\n }\n\n return target + repeatString(target, count - 1);\n}\n\nexport function serializeRuleEntries(options: IStyleOptions, ruleEntries: { [key: string]: string | number }): string {\n if (!ruleEntries) {\n return '';\n }\n\n const allEntries: (string | number)[] = [];\n\n for (const entry in ruleEntries) {\n if (ruleEntries.hasOwnProperty(entry) && entry !== DISPLAY_NAME && ruleEntries[entry] !== undefined) {\n allEntries.push(entry, ruleEntries[entry]);\n }\n }\n\n // Apply transforms.\n for (let i = 0; i < allEntries.length; i += 2) {\n kebabRules(allEntries, i);\n provideUnits(allEntries, i);\n rtlifyRules(options, allEntries, i);\n prefixRules(allEntries, i);\n }\n\n // Apply punctuation.\n for (let i = 1; i < allEntries.length; i += 4) {\n allEntries.splice(i, 1, ':', allEntries[i], ';');\n }\n\n return allEntries.join('');\n}\n\nexport interface IRegistration {\n className: string;\n key: string;\n args: IStyle[];\n rulesToInsert: string[];\n}\n\nexport function styleToRegistration(options: IStyleOptions, ...args: IStyle[]): IRegistration | undefined {\n const rules: IRuleSet = extractRules(args);\n const key = getKeyForRules(options, rules);\n\n if (key) {\n const stylesheet = Stylesheet.getInstance();\n const registration: Partial = {\n className: stylesheet.classNameFromKey(key),\n key,\n args,\n };\n\n if (!registration.className) {\n registration.className = stylesheet.getClassName(getDisplayName(rules));\n const rulesToInsert: string[] = [];\n\n for (const selector of rules.__order) {\n rulesToInsert.push(selector, serializeRuleEntries(options, rules[selector]));\n }\n registration.rulesToInsert = rulesToInsert;\n }\n\n return registration as IRegistration;\n }\n\n return undefined;\n}\n\n/**\n * Insert style to stylesheet.\n * @param registration Style registration.\n * @param specificityMultiplier Number of times classname selector is repeated in the css rule.\n * This is to increase css specificity in case it's needed. Default to 1.\n */\nexport function applyRegistration(registration: IRegistration, specificityMultiplier: number = 1): void {\n const stylesheet = Stylesheet.getInstance();\n const { className, key, args, rulesToInsert } = registration;\n\n if (rulesToInsert) {\n // rulesToInsert is an ordered array of selector/rule pairs.\n for (let i = 0; i < rulesToInsert.length; i += 2) {\n const rules = rulesToInsert[i + 1];\n if (rules) {\n let selector = rulesToInsert[i];\n selector = selector.replace(/&/g, repeatString(`.${registration.className}`, specificityMultiplier));\n\n // Insert. Note if a media query, we must close the query with a final bracket.\n const processedRule = `${selector}{${rules}}${selector.indexOf('@') === 0 ? '}' : ''}`;\n stylesheet.insertRule(processedRule);\n }\n }\n stylesheet.cacheClassName(className!, key!, args!, rulesToInsert);\n }\n}\n\nexport function styleToClassName(options: IStyleOptions, ...args: IStyle[]): string {\n const registration = styleToRegistration(options, ...args);\n if (registration) {\n applyRegistration(registration, options.specificityMultiplier);\n\n return registration.className;\n }\n\n return '';\n}\n","import { getWindow } from './dom/getWindow';\n\n/**\n * Storing global state in local module variables has issues when more than one copy\n * if the module gets loaded on the page (due to a bundling error or simply by consuming\n * a prebundled script.)\n *\n * This file contains helpers to deal with the getting and setting local state, and allows\n * callers to get called back when it mutates.\n */\n\nconst GLOBAL_SETTINGS_PROP_NAME = '__globalSettings__';\nconst CALLBACK_STATE_PROP_NAME = '__callbacks__';\n\nlet _counter = 0;\n\n/**\n * Change description used for change callbacks in GlobalSettings.\n *\n * @public\n * {@docCategory IChangeDescription}\n */\nexport interface IChangeDescription {\n key: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n oldValue: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any;\n}\n\n/**\n * Change event callback.\n *\n * @public\n * {@docCategory IChangeEventCallback}\n */\nexport interface IChangeEventCallback {\n __id__?: string;\n (changeDescription?: IChangeDescription): void;\n}\n\n/**\n * Global settings helper, which stores settings in the global (window) namespace.\n * If window is not provided, it will store settings in module scope. Provides a\n * way to observe changes as well when their values change.\n *\n * @public\n * {@docCategory GlobalSettings}\n */\nexport class GlobalSettings {\n public static getValue(key: string, defaultValue?: T | (() => T)): T {\n const globalSettings = _getGlobalSettings();\n\n if (globalSettings[key] === undefined) {\n globalSettings[key] = typeof defaultValue === 'function' ? (defaultValue as Function)() : defaultValue;\n }\n\n return globalSettings[key];\n }\n\n public static setValue(key: string, value: T): T {\n const globalSettings = _getGlobalSettings();\n const callbacks = globalSettings[CALLBACK_STATE_PROP_NAME];\n let oldValue = globalSettings[key];\n\n if (value !== oldValue) {\n globalSettings[key] = value;\n\n let changeDescription = {\n oldValue,\n value,\n key,\n };\n\n for (let id in callbacks) {\n if (callbacks.hasOwnProperty(id)) {\n callbacks[id](changeDescription);\n }\n }\n }\n\n return value;\n }\n\n public static addChangeListener(cb: IChangeEventCallback): void {\n // Note: we use generated ids on the callbacks to create a map of the callbacks, which optimizes removal.\n // (It's faster to delete a key than it is to look up the index of an object and splice an array.)\n let id = cb.__id__;\n const callbacks = _getCallbacks();\n\n if (!id) {\n id = cb.__id__ = String(_counter++);\n }\n\n callbacks[id] = cb;\n }\n\n public static removeChangeListener(cb: IChangeEventCallback): void {\n const callbacks = _getCallbacks();\n delete callbacks[cb.__id__ as string];\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _getGlobalSettings(): { [key: string]: any } {\n const win = getWindow();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj: { [key: string]: any } = win || {};\n\n if (!globalObj[GLOBAL_SETTINGS_PROP_NAME]) {\n globalObj[GLOBAL_SETTINGS_PROP_NAME] = {\n [CALLBACK_STATE_PROP_NAME]: {},\n };\n }\n\n return globalObj[GLOBAL_SETTINGS_PROP_NAME];\n}\n\nfunction _getCallbacks(): { [key: string]: () => void } {\n const globalSettings = _getGlobalSettings();\n return globalSettings[CALLBACK_STATE_PROP_NAME];\n}\n","import { GlobalSettings } from '../GlobalSettings';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ISettings = { [key: string]: any };\nexport type ISettingsFunction = (settings: ISettings) => ISettings;\n\n/**\n * @deprecated Use ISettings.\n */\nexport type Settings = ISettings;\n\n/**\n * @deprecated Use ISettingsFunction.\n */\nexport type SettingsFunction = ISettingsFunction;\n\nexport interface ICustomizations {\n settings: ISettings;\n scopedSettings: { [key: string]: ISettings };\n inCustomizerContext?: boolean;\n}\n\nconst CustomizationsGlobalKey = 'customizations';\nconst NO_CUSTOMIZATIONS = { settings: {}, scopedSettings: {}, inCustomizerContext: false };\n\nlet _allSettings = GlobalSettings.getValue(CustomizationsGlobalKey, {\n settings: {},\n scopedSettings: {},\n inCustomizerContext: false,\n});\n\nlet _events: (() => void)[] = [];\n\nexport class Customizations {\n private static _suppressUpdates: boolean;\n\n public static reset(): void {\n _allSettings.settings = {};\n _allSettings.scopedSettings = {};\n }\n\n /** Apply global Customization settings.\n * @example Customizations.applySettings(\\{ theme: \\{...\\} \\});\n */\n public static applySettings(settings: ISettings): void {\n _allSettings.settings = { ..._allSettings.settings, ...settings };\n Customizations._raiseChange();\n }\n\n /** Apply Customizations to a particular named scope, like a component.\n * @example Customizations.applyScopedSettings('Nav', \\{ styles: () =\\> \\{\\} \\});\n */\n public static applyScopedSettings(scopeName: string, settings: ISettings): void {\n _allSettings.scopedSettings[scopeName] = { ..._allSettings.scopedSettings[scopeName], ...settings };\n Customizations._raiseChange();\n }\n\n public static getSettings(\n properties: string[],\n scopeName?: string,\n localSettings: ICustomizations = NO_CUSTOMIZATIONS,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n const settings: ISettings = {};\n const localScopedSettings = (scopeName && localSettings.scopedSettings[scopeName]) || {};\n const globalScopedSettings = (scopeName && _allSettings.scopedSettings[scopeName]) || {};\n\n for (let property of properties) {\n settings[property] =\n localScopedSettings[property] ||\n localSettings.settings[property] ||\n globalScopedSettings[property] ||\n _allSettings.settings[property];\n }\n\n return settings;\n }\n\n /** Used to run some code that sets Customizations without triggering an update until the end.\n * Useful for applying Customizations that don't affect anything currently rendered, or for\n * applying many customizations at once.\n * @param suppressUpdate - Do not raise the change event at the end, preventing all updates\n */\n public static applyBatchedUpdates(code: () => void, suppressUpdate?: boolean): void {\n Customizations._suppressUpdates = true;\n try {\n code();\n } catch {\n /* do nothing */\n }\n Customizations._suppressUpdates = false;\n if (!suppressUpdate) {\n Customizations._raiseChange();\n }\n }\n\n public static observe(onChange: () => void): void {\n _events.push(onChange);\n }\n\n public static unobserve(onChange: () => void): void {\n _events = _events.filter((cb: () => void) => cb !== onChange);\n }\n\n private static _raiseChange(): void {\n if (!Customizations._suppressUpdates) {\n _events.forEach((cb: () => void) => cb());\n }\n }\n}\n","import * as React from 'react';\nimport { ITheme, IStyle } from '../../Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '../../Utilities';\n\n/**\n * {@docCategory Spinner}\n */\nexport interface ISpinner {}\n\n/**\n * Spinner component props.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerProps extends React.HTMLAttributes {\n /**\n * Optional callback to access the ISpinner interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: IRefObject;\n\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize` instead.\n * @deprecated Use `SpinnerSize` instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n type?: SpinnerType;\n\n /**\n * The size of Spinner to render. \\{ extraSmall, small, medium, large \\}\n * @defaultvalue SpinnerType.medium\n */\n size?: SpinnerSize;\n\n /**\n * The label to show next to the Spinner. Label updates will be announced to the screen readers.\n * Use ariaLive to control politeness level.\n */\n label?: string;\n\n /**\n * Additional CSS class(es) to apply to the Spinner.\n */\n className?: string;\n\n /**\n * Politeness setting for label update announcement.\n * @defaultvalue polite\n */\n ariaLive?: 'assertive' | 'polite' | 'off';\n\n /**\n * Alternative status label for screen reader\n */\n ariaLabel?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject;\n\n /**\n * The position of the label in regards of the spinner animation.\n * @defaultvalue SpinnerLabelPosition.bottom\n */\n labelPosition?: SpinnerLabelPosition;\n}\n\n/**\n * Possible variations of the spinner circle size.\n * {@docCategory Spinner}\n */\nexport enum SpinnerSize {\n /**\n * 12px Spinner diameter\n */\n xSmall = 0,\n\n /**\n * 16px Spinner diameter\n */\n small = 1,\n\n /**\n * 20px Spinner diameter\n */\n medium = 2,\n\n /**\n * 28px Spinner diameter\n */\n large = 3,\n}\n\n/**\n * Possible locations of the label in regards to the spinner\n * @defaultvalue bottom\n * {@docCategory Spinner}\n */\nexport type SpinnerLabelPosition = 'top' | 'right' | 'bottom' | 'left';\n\n/**\n * Deprecated at v2.0.0, use `SpinnerSize` instead.\n * @deprecated Use `SpinnerSize` instead.\n * {@docCategory Spinner}\n */\nexport enum SpinnerType {\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize.medium` instead.\n * @deprecated Use `SpinnerSize.medium` instead.\n */\n normal = 0,\n\n /**\n * Deprecated and will be removed at \\>= 2.0.0. Use `SpinnerSize.large` instead.\n * @deprecated Use `SpinnerSize.large` instead.\n */\n large = 1,\n}\n\n/**\n * The props needed to construct styles.\n * This represents the simplified set of immutable things which control the class names.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerStyleProps {\n /** Theme provided by High-Order Component. */\n theme: ITheme;\n\n /** Size of the spinner animation. */\n size?: SpinnerSize;\n\n /** CSS class name for the component attached to the root stylable area. */\n className?: string;\n\n /** Position of the label in regards to the spinner animation. */\n labelPosition?: SpinnerLabelPosition;\n}\n\n/**\n * Represents the stylable areas of the control.\n * {@docCategory Spinner}\n */\nexport interface ISpinnerStyles {\n /** Styles for the root element. Refers to the wrapper containing both the circle and the label. */\n root?: IStyle;\n\n /** Styles for the spinner circle animation. */\n circle?: IStyle;\n\n /** Styles for the label accompanying the circle. */\n label?: IStyle;\n\n /** Styles for the hidden helper element to aid with screen readers. */\n screenReaderText?: IStyle;\n}\n","function BrotliInput(buffer) {\n this.buffer = buffer;\n this.pos = 0;\n}\n\nBrotliInput.prototype.read = function(buf, i, count) {\n if (this.pos + count > this.buffer.length) {\n count = this.buffer.length - this.pos;\n }\n \n for (var p = 0; p < count; p++)\n buf[i + p] = this.buffer[this.pos + p];\n \n this.pos += count;\n return count;\n}\n\nexports.BrotliInput = BrotliInput;\n\nfunction BrotliOutput(buf) {\n this.buffer = buf;\n this.pos = 0;\n}\n\nBrotliOutput.prototype.write = function(buf, count) {\n if (this.pos + count > this.buffer.length)\n throw new Error('Output buffer is not large enough');\n \n this.buffer.set(buf.subarray(0, count), this.pos);\n this.pos += count;\n return count;\n};\n\nexports.BrotliOutput = BrotliOutput;\n","function HuffmanCode(bits, value) {\n this.bits = bits; /* number of bits used for this symbol */\n this.value = value; /* symbol value or table offset */\n}\n\nexports.HuffmanCode = HuffmanCode;\n\nvar MAX_LENGTH = 15;\n\n/* Returns reverse(reverse(key, len) + 1, len), where reverse(key, len) is the\n bit-wise reversal of the len least significant bits of key. */\nfunction GetNextKey(key, len) {\n var step = 1 << (len - 1);\n while (key & step) {\n step >>= 1;\n }\n return (key & (step - 1)) + step;\n}\n\n/* Stores code in table[0], table[step], table[2*step], ..., table[end] */\n/* Assumes that end is an integer multiple of step */\nfunction ReplicateValue(table, i, step, end, code) {\n do {\n end -= step;\n table[i + end] = new HuffmanCode(code.bits, code.value);\n } while (end > 0);\n}\n\n/* Returns the table width of the next 2nd level table. count is the histogram\n of bit lengths for the remaining symbols, len is the code length of the next\n processed symbol */\nfunction NextTableBitSize(count, len, root_bits) {\n var left = 1 << (len - root_bits);\n while (len < MAX_LENGTH) {\n left -= count[len];\n if (left <= 0) break;\n ++len;\n left <<= 1;\n }\n return len - root_bits;\n}\n\nexports.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {\n var start_table = table;\n var code; /* current table entry */\n var len; /* current code length */\n var symbol; /* symbol index in original or sorted table */\n var key; /* reversed prefix code */\n var step; /* step size to replicate values in current table */\n var low; /* low bits for current root entry */\n var mask; /* mask for low bits */\n var table_bits; /* key length of current table */\n var table_size; /* size of current table */\n var total_size; /* sum of root table size and 2nd level table sizes */\n var sorted; /* symbols sorted by code length */\n var count = new Int32Array(MAX_LENGTH + 1); /* number of codes of each length */\n var offset = new Int32Array(MAX_LENGTH + 1); /* offsets in sorted table for each length */\n\n sorted = new Int32Array(code_lengths_size);\n\n /* build histogram of code lengths */\n for (symbol = 0; symbol < code_lengths_size; symbol++) {\n count[code_lengths[symbol]]++;\n }\n\n /* generate offsets into sorted symbol table by code length */\n offset[1] = 0;\n for (len = 1; len < MAX_LENGTH; len++) {\n offset[len + 1] = offset[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (symbol = 0; symbol < code_lengths_size; symbol++) {\n if (code_lengths[symbol] !== 0) {\n sorted[offset[code_lengths[symbol]]++] = symbol;\n }\n }\n \n table_bits = root_bits;\n table_size = 1 << table_bits;\n total_size = table_size;\n\n /* special case code with only one value */\n if (offset[MAX_LENGTH] === 1) {\n for (key = 0; key < total_size; ++key) {\n root_table[table + key] = new HuffmanCode(0, sorted[0] & 0xffff);\n }\n \n return total_size;\n }\n\n /* fill in root table */\n key = 0;\n symbol = 0;\n for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n code = new HuffmanCode(len & 0xff, sorted[symbol++] & 0xffff);\n ReplicateValue(root_table, table + key, step, table_size, code);\n key = GetNextKey(key, len);\n }\n }\n\n /* fill in 2nd level tables and add pointers to root table */\n mask = total_size - 1;\n low = -1;\n for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {\n for (; count[len] > 0; --count[len]) {\n if ((key & mask) !== low) {\n table += table_size;\n table_bits = NextTableBitSize(count, len, root_bits);\n table_size = 1 << table_bits;\n total_size += table_size;\n low = key & mask;\n root_table[start_table + low] = new HuffmanCode((table_bits + root_bits) & 0xff, ((table - start_table) - low) & 0xffff);\n }\n code = new HuffmanCode((len - root_bits) & 0xff, sorted[symbol++] & 0xffff);\n ReplicateValue(root_table, table + (key >> root_bits), step, table_size, code);\n key = GetNextKey(key, len);\n }\n }\n \n return total_size;\n}\n","var baseIteratee = require('./_baseIteratee'),\n basePullAt = require('./_basePullAt');\n\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\nfunction remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = baseIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;\n","var arrayMap = require('./_arrayMap'),\n baseAt = require('./_baseAt'),\n basePullAt = require('./_basePullAt'),\n compareAscending = require('./_compareAscending'),\n flatRest = require('./_flatRest'),\n isIndex = require('./_isIndex');\n\n/**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\nvar pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n});\n\nmodule.exports = pullAt;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Manager = function (_Component) {\n _inherits(Manager, _Component);\n\n function Manager() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Manager);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Manager.__proto__ || Object.getPrototypeOf(Manager)).call.apply(_ref, [this].concat(args))), _this), _this._setTargetNode = function (node) {\n _this._targetNode = node;\n }, _this._getTargetNode = function () {\n return _this._targetNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Manager, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n popperManager: {\n setTargetNode: this._setTargetNode,\n getTargetNode: this._getTargetNode\n }\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n tag = _props.tag,\n children = _props.children,\n restProps = _objectWithoutProperties(_props, ['tag', 'children']);\n\n if (tag !== false) {\n return createElement(tag, restProps, children);\n } else {\n return children;\n }\n }\n }]);\n\n return Manager;\n}(Component);\n\nManager.childContextTypes = {\n popperManager: PropTypes.object.isRequired\n};\nManager.propTypes = {\n tag: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func])\n};\nManager.defaultProps = {\n tag: 'div'\n};\n\n\nexport default Manager;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport { createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Target = function Target(props, context) {\n var _props$component = props.component,\n component = _props$component === undefined ? 'div' : _props$component,\n innerRef = props.innerRef,\n children = props.children,\n restProps = _objectWithoutProperties(props, ['component', 'innerRef', 'children']);\n\n var popperManager = context.popperManager;\n\n var targetRef = function targetRef(node) {\n popperManager.setTargetNode(node);\n if (typeof innerRef === 'function') {\n innerRef(node);\n }\n };\n\n if (typeof children === 'function') {\n var targetProps = { ref: targetRef };\n return children({ targetProps: targetProps, restProps: restProps });\n }\n\n var componentProps = _extends({}, restProps);\n\n if (typeof component === 'string') {\n componentProps.ref = targetRef;\n } else {\n componentProps.innerRef = targetRef;\n }\n\n return createElement(component, componentProps, children);\n};\n\nTarget.contextTypes = {\n popperManager: PropTypes.object.isRequired\n};\n\nTarget.propTypes = {\n component: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n innerRef: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func])\n};\n\nexport default Target;","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overridden using the `options` argument of Popper.js.
\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, it is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Component, createElement } from 'react';\nimport PropTypes from 'prop-types';\nimport PopperJS from 'popper.js';\n\nexport var placements = PopperJS.placements;\n\nvar Popper = function (_Component) {\n _inherits(Popper, _Component);\n\n function Popper() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Popper);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Popper.__proto__ || Object.getPrototypeOf(Popper)).call.apply(_ref, [this].concat(args))), _this), _this.state = {}, _this._setArrowNode = function (node) {\n _this._arrowNode = node;\n }, _this._getTargetNode = function () {\n if (_this.props.target) {\n return _this.props.target;\n } else if (!_this.context.popperManager || !_this.context.popperManager.getTargetNode()) {\n throw new Error('Target missing. Popper must be given a target from the Popper Manager, or as a prop.');\n }\n return _this.context.popperManager.getTargetNode();\n }, _this._getOffsets = function (data) {\n return Object.keys(data.offsets).map(function (key) {\n return data.offsets[key];\n });\n }, _this._isDataDirty = function (data) {\n if (_this.state.data) {\n return JSON.stringify(_this._getOffsets(_this.state.data)) !== JSON.stringify(_this._getOffsets(data));\n } else {\n return true;\n }\n }, _this._updateStateModifier = {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n if (_this._isDataDirty(data)) {\n _this.setState({ data: data });\n }\n return data;\n }\n }, _this._getPopperStyle = function () {\n var data = _this.state.data;\n\n\n if (!_this._popper || !data) {\n return {\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0\n };\n }\n\n return _extends({\n position: data.offsets.popper.position\n }, data.styles);\n }, _this._getPopperPlacement = function () {\n return _this.state.data ? _this.state.data.placement : undefined;\n }, _this._getPopperHide = function () {\n return !!_this.state.data && _this.state.data.hide ? '' : undefined;\n }, _this._getArrowStyle = function () {\n if (!_this.state.data || !_this.state.data.offsets.arrow) {\n return {};\n } else {\n var _this$state$data$offs = _this.state.data.offsets.arrow,\n top = _this$state$data$offs.top,\n left = _this$state$data$offs.left;\n\n return { top: top, left: left };\n }\n }, _this._handlePopperRef = function (node) {\n _this._popperNode = node;\n if (node) {\n _this._createPopper();\n } else {\n _this._destroyPopper();\n }\n if (_this.props.innerRef) {\n _this.props.innerRef(node);\n }\n }, _this._scheduleUpdate = function () {\n _this._popper && _this._popper.scheduleUpdate();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Popper, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n popper: {\n setArrowNode: this._setArrowNode,\n getArrowStyle: this._getArrowStyle\n }\n };\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(lastProps) {\n if (lastProps.placement !== this.props.placement || lastProps.eventsEnabled !== this.props.eventsEnabled || lastProps.target !== this.props.target) {\n this._destroyPopper();\n this._createPopper();\n }\n if (lastProps.children !== this.props.children) {\n this._scheduleUpdate();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._destroyPopper();\n }\n }, {\n key: '_createPopper',\n value: function _createPopper() {\n var _this2 = this;\n\n var _props = this.props,\n placement = _props.placement,\n eventsEnabled = _props.eventsEnabled,\n positionFixed = _props.positionFixed;\n\n var modifiers = _extends({}, this.props.modifiers, {\n applyStyle: { enabled: false },\n updateState: this._updateStateModifier\n });\n if (this._arrowNode) {\n modifiers.arrow = _extends({}, this.props.modifiers.arrow || {}, {\n element: this._arrowNode\n });\n }\n this._popper = new PopperJS(this._getTargetNode(), this._popperNode, {\n placement: placement,\n positionFixed: positionFixed,\n eventsEnabled: eventsEnabled,\n modifiers: modifiers\n });\n\n // TODO: look into setTimeout scheduleUpdate call, without it, the popper will not position properly on creation\n setTimeout(function () {\n return _this2._scheduleUpdate();\n });\n }\n }, {\n key: '_destroyPopper',\n value: function _destroyPopper() {\n if (this._popper) {\n this._popper.destroy();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n component = _props2.component,\n innerRef = _props2.innerRef,\n placement = _props2.placement,\n eventsEnabled = _props2.eventsEnabled,\n positionFixed = _props2.positionFixed,\n modifiers = _props2.modifiers,\n children = _props2.children,\n restProps = _objectWithoutProperties(_props2, ['component', 'innerRef', 'placement', 'eventsEnabled', 'positionFixed', 'modifiers', 'children']);\n\n var popperStyle = this._getPopperStyle();\n var popperPlacement = this._getPopperPlacement();\n var popperHide = this._getPopperHide();\n\n if (typeof children === 'function') {\n var popperProps = {\n ref: this._handlePopperRef,\n style: popperStyle,\n 'data-placement': popperPlacement,\n 'data-x-out-of-boundaries': popperHide\n };\n return children({\n popperProps: popperProps,\n restProps: restProps,\n scheduleUpdate: this._scheduleUpdate\n });\n }\n\n var componentProps = _extends({}, restProps, {\n style: _extends({}, restProps.style, popperStyle),\n 'data-placement': popperPlacement,\n 'data-x-out-of-boundaries': popperHide\n });\n\n if (typeof component === 'string') {\n componentProps.ref = this._handlePopperRef;\n } else {\n componentProps.innerRef = this._handlePopperRef;\n }\n\n return createElement(component, componentProps, children);\n }\n }]);\n\n return Popper;\n}(Component);\n\nPopper.contextTypes = {\n popperManager: PropTypes.object\n};\nPopper.childContextTypes = {\n popper: PropTypes.object.isRequired\n};\nPopper.propTypes = {\n component: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n innerRef: PropTypes.func,\n placement: PropTypes.oneOf(placements),\n eventsEnabled: PropTypes.bool,\n positionFixed: PropTypes.bool,\n modifiers: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n target: PropTypes.oneOfType([\n // the following check is needed for SSR\n PropTypes.instanceOf(typeof Element !== 'undefined' ? Element : Object), PropTypes.shape({\n getBoundingClientRect: PropTypes.func.isRequired,\n clientWidth: PropTypes.number.isRequired,\n clientHeight: PropTypes.number.isRequired\n })])\n};\nPopper.defaultProps = {\n component: 'div',\n placement: 'bottom',\n eventsEnabled: true,\n positionFixed: false,\n modifiers: {}\n};\n\n\nexport default Popper;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport { createElement } from 'react';\nimport PropTypes from 'prop-types';\n\nvar Arrow = function Arrow(props, context) {\n var _props$component = props.component,\n component = _props$component === undefined ? 'span' : _props$component,\n innerRef = props.innerRef,\n children = props.children,\n restProps = _objectWithoutProperties(props, ['component', 'innerRef', 'children']);\n\n var popper = context.popper;\n\n var arrowRef = function arrowRef(node) {\n popper.setArrowNode(node);\n if (typeof innerRef === 'function') {\n innerRef(node);\n }\n };\n var arrowStyle = popper.getArrowStyle();\n\n if (typeof children === 'function') {\n var arrowProps = {\n ref: arrowRef,\n style: arrowStyle\n };\n return children({ arrowProps: arrowProps, restProps: restProps });\n }\n\n var componentProps = _extends({}, restProps, {\n style: _extends({}, arrowStyle, restProps.style)\n });\n\n if (typeof component === 'string') {\n componentProps.ref = arrowRef;\n } else {\n componentProps.innerRef = arrowRef;\n }\n\n return createElement(component, componentProps, children);\n};\n\nArrow.contextTypes = {\n popper: PropTypes.object.isRequired\n};\n\nArrow.propTypes = {\n component: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n innerRef: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func])\n};\n\nexport default Arrow;","export const G = 'G';\nexport const Svg = 'SVG';\nexport const View = 'VIEW';\nexport const Text = 'TEXT';\nexport const Link = 'LINK';\nexport const Page = 'PAGE';\nexport const Note = 'NOTE';\nexport const Path = 'PATH';\nexport const Rect = 'RECT';\nexport const Line = 'LINE';\nexport const Stop = 'STOP';\nexport const Defs = 'DEFS';\nexport const Image = 'IMAGE';\nexport const Tspan = 'TSPAN';\nexport const Canvas = 'CANVAS';\nexport const Circle = 'CIRCLE';\nexport const Ellipse = 'ELLIPSE';\nexport const Polygon = 'POLYGON';\nexport const Document = 'DOCUMENT';\nexport const Polyline = 'POLYLINE';\nexport const ClipPath = 'CLIP_PATH';\nexport const TextInstance = 'TEXT_INSTANCE';\nexport const LinearGradient = 'LINEAR_GRADIENT';\nexport const RadialGradient = 'RADIAL_GRADIENT';\n","// Node back-compat.\nconst ENCODING_MAPPING = {\n utf16le: 'utf-16le',\n ucs2: 'utf-16le',\n utf16be: 'utf-16be'\n}\n\nexport class DecodeStream {\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.pos = 0;\n this.length = this.buffer.length;\n }\n\n readString(length, encoding = 'ascii') {\n encoding = ENCODING_MAPPING[encoding] || encoding;\n\n let buf = this.readBuffer(length);\n try {\n let decoder = new TextDecoder(encoding);\n return decoder.decode(buf);\n } catch (err) {\n return buf;\n }\n }\n\n readBuffer(length) {\n return this.buffer.slice(this.pos, (this.pos += length));\n }\n\n readUInt24BE() {\n return (this.readUInt16BE() << 8) + this.readUInt8();\n }\n\n readUInt24LE() {\n return this.readUInt16LE() + (this.readUInt8() << 16);\n }\n\n readInt24BE() {\n return (this.readInt16BE() << 8) + this.readUInt8();\n }\n\n readInt24LE() {\n return this.readUInt16LE() + (this.readInt8() << 16);\n }\n}\n\nDecodeStream.TYPES = {\n UInt8: 1,\n UInt16: 2,\n UInt24: 3,\n UInt32: 4,\n Int8: 1,\n Int16: 2,\n Int24: 3,\n Int32: 4,\n Float: 4,\n Double: 8\n};\n\nfor (let key of Object.getOwnPropertyNames(DataView.prototype)) {\n if (key.slice(0, 3) === 'get') {\n let type = key.slice(3).replace('Ui', 'UI');\n if (type === 'Float32') {\n type = 'Float';\n } else if (type === 'Float64') {\n type = 'Double';\n }\n let bytes = DecodeStream.TYPES[type];\n DecodeStream.prototype['read' + type + (bytes === 1 ? '' : 'BE')] = function () {\n const ret = this.view[key](this.pos, false);\n this.pos += bytes;\n return ret;\n };\n\n if (bytes !== 1) {\n DecodeStream.prototype['read' + type + 'LE'] = function () {\n const ret = this.view[key](this.pos, true);\n this.pos += bytes;\n return ret;\n };\n }\n }\n}\n","import {DecodeStream} from './DecodeStream.js';\n\nconst textEncoder = new TextEncoder();\nconst isBigEndian = new Uint8Array(new Uint16Array([0x1234]).buffer)[0] == 0x12;\n\nexport class EncodeStream {\n constructor(buffer) {\n this.buffer = buffer;\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n this.pos = 0;\n }\n\n writeBuffer(buffer) {\n this.buffer.set(buffer, this.pos);\n this.pos += buffer.length;\n }\n\n writeString(string, encoding = 'ascii') {\n let buf;\n switch (encoding) {\n case 'utf16le':\n case 'utf16-le':\n case 'ucs2': // node treats this the same as utf16.\n buf = stringToUtf16(string, isBigEndian);\n break;\n\n case 'utf16be':\n case 'utf16-be':\n buf = stringToUtf16(string, !isBigEndian);\n break;\n\n case 'utf8':\n buf = textEncoder.encode(string);\n break;\n\n case 'ascii':\n buf = stringToAscii(string);\n break;\n\n default:\n throw new Error(`Unsupported encoding: ${encoding}`);\n }\n\n this.writeBuffer(buf);\n }\n\n writeUInt24BE(val) {\n this.buffer[this.pos++] = (val >>> 16) & 0xff;\n this.buffer[this.pos++] = (val >>> 8) & 0xff;\n this.buffer[this.pos++] = val & 0xff;\n }\n\n writeUInt24LE(val) {\n this.buffer[this.pos++] = val & 0xff;\n this.buffer[this.pos++] = (val >>> 8) & 0xff;\n this.buffer[this.pos++] = (val >>> 16) & 0xff;\n }\n\n writeInt24BE(val) {\n if (val >= 0) {\n this.writeUInt24BE(val);\n } else {\n this.writeUInt24BE(val + 0xffffff + 1);\n }\n }\n\n writeInt24LE(val) {\n if (val >= 0) {\n this.writeUInt24LE(val);\n } else {\n this.writeUInt24LE(val + 0xffffff + 1);\n }\n }\n\n fill(val, length) {\n if (length < this.buffer.length) {\n this.buffer.fill(val, this.pos, this.pos + length);\n this.pos += length;\n } else {\n const buf = new Uint8Array(length);\n buf.fill(val);\n this.writeBuffer(buf);\n }\n }\n}\n\nfunction stringToUtf16(string, swap) {\n let buf = new Uint16Array(string.length);\n for (let i = 0; i < string.length; i++) {\n let code = string.charCodeAt(i);\n if (swap) {\n code = (code >> 8) | ((code & 0xff) << 8);\n }\n buf[i] = code;\n }\n return new Uint8Array(buf.buffer);\n}\n\nfunction stringToAscii(string) {\n let buf = new Uint8Array(string.length);\n for (let i = 0; i < string.length; i++) {\n // Match node.js behavior - encoding allows 8-bit rather than 7-bit.\n buf[i] = string.charCodeAt(i);\n }\n return buf;\n}\n\nfor (let key of Object.getOwnPropertyNames(DataView.prototype)) {\n if (key.slice(0, 3) === 'set') {\n let type = key.slice(3).replace('Ui', 'UI');\n if (type === 'Float32') {\n type = 'Float';\n } else if (type === 'Float64') {\n type = 'Double';\n }\n let bytes = DecodeStream.TYPES[type];\n EncodeStream.prototype['write' + type + (bytes === 1 ? '' : 'BE')] = function (value) {\n this.view[key](this.pos, value, false);\n this.pos += bytes;\n };\n\n if (bytes !== 1) {\n EncodeStream.prototype['write' + type + 'LE'] = function (value) {\n this.view[key](this.pos, value, true);\n this.pos += bytes;\n };\n }\n }\n}\n","import {DecodeStream} from './DecodeStream.js';\nimport {EncodeStream} from './EncodeStream.js';\n\nexport class Base {\n fromBuffer(buffer) {\n let stream = new DecodeStream(buffer);\n return this.decode(stream);\n }\n\n toBuffer(value) {\n let size = this.size(value);\n let buffer = new Uint8Array(size);\n let stream = new EncodeStream(buffer);\n this.encode(stream, value);\n return buffer;\n }\n}\n","import {DecodeStream} from './DecodeStream.js';\nimport {Base} from './Base.js';\n\nclass NumberT extends Base {\n constructor(type, endian = 'BE') {\n super();\n this.type = type;\n this.endian = endian;\n this.fn = this.type;\n if (this.type[this.type.length - 1] !== '8') {\n this.fn += this.endian;\n }\n }\n\n size() {\n return DecodeStream.TYPES[this.type];\n }\n\n decode(stream) {\n return stream[`read${this.fn}`]();\n }\n\n encode(stream, val) {\n return stream[`write${this.fn}`](val);\n }\n}\n\nexport {NumberT as Number};\n\nexport const uint8 = new NumberT('UInt8');\nexport const uint16be = new NumberT('UInt16', 'BE');\nexport const uint16 = uint16be;\nexport const uint16le = new NumberT('UInt16', 'LE');\nexport const uint24be = new NumberT('UInt24', 'BE');\nexport const uint24 = uint24be;\nexport const uint24le = new NumberT('UInt24', 'LE');\nexport const uint32be = new NumberT('UInt32', 'BE');\nexport const uint32 = uint32be;\nexport const uint32le = new NumberT('UInt32', 'LE');\nexport const int8 = new NumberT('Int8');\nexport const int16be = new NumberT('Int16', 'BE');\nexport const int16 = int16be;\nexport const int16le = new NumberT('Int16', 'LE');\nexport const int24be = new NumberT('Int24', 'BE');\nexport const int24 = int24be;\nexport const int24le = new NumberT('Int24', 'LE');\nexport const int32be = new NumberT('Int32', 'BE');\nexport const int32 = int32be;\nexport const int32le = new NumberT('Int32', 'LE');\nexport const floatbe = new NumberT('Float', 'BE');\nexport const float = floatbe;\nexport const floatle = new NumberT('Float', 'LE');\nexport const doublebe = new NumberT('Double', 'BE');\nexport const double = doublebe;\nexport const doublele = new NumberT('Double', 'LE');\n\nexport class Fixed extends NumberT {\n constructor(size, endian, fracBits = size >> 1) {\n super(`Int${size}`, endian);\n this._point = 1 << fracBits;\n }\n\n decode(stream) {\n return super.decode(stream) / this._point;\n }\n\n encode(stream, val) {\n return super.encode(stream, (val * this._point) | 0);\n }\n}\n\nexport const fixed16be = new Fixed(16, 'BE');\nexport const fixed16 = fixed16be;\nexport const fixed16le = new Fixed(16, 'LE');\nexport const fixed32be = new Fixed(32, 'BE');\nexport const fixed32 = fixed32be;\nexport const fixed32le = new Fixed(32, 'LE');\n","import {Number as NumberT} from './Number.js';\n\nexport function resolveLength(length, stream, parent) {\n let res;\n if (typeof length === 'number') {\n res = length;\n\n } else if (typeof length === 'function') {\n res = length.call(parent, parent);\n\n } else if (parent && (typeof length === 'string')) {\n res = parent[length];\n\n } else if (stream && length instanceof NumberT) {\n res = length.decode(stream);\n }\n\n if (isNaN(res)) {\n throw new Error('Not a fixed size');\n }\n\n return res;\n};\n\nexport class PropertyDescriptor {\n constructor(opts = {}) {\n this.enumerable = true;\n this.configurable = true;\n\n for (let key in opts) {\n const val = opts[key];\n this[key] = val;\n }\n }\n}\n","import {Base} from './Base.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nclass ArrayT extends Base {\n constructor(type, length, lengthType = 'count') {\n super();\n this.type = type;\n this.length = length;\n this.lengthType = lengthType;\n }\n\n decode(stream, parent) {\n let length;\n const { pos } = stream;\n\n const res = [];\n let ctx = parent;\n\n if (this.length != null) {\n length = utils.resolveLength(this.length, stream, parent);\n }\n\n if (this.length instanceof NumberT) {\n // define hidden properties\n Object.defineProperties(res, {\n parent: { value: parent },\n _startOffset: { value: pos },\n _currentOffset: { value: 0, writable: true },\n _length: { value: length }\n });\n\n ctx = res;\n }\n\n if ((length == null) || (this.lengthType === 'bytes')) {\n const target = (length != null) ?\n stream.pos + length\n : (parent != null ? parent._length : undefined) ?\n parent._startOffset + parent._length\n :\n stream.length;\n\n while (stream.pos < target) {\n res.push(this.type.decode(stream, ctx));\n }\n\n } else {\n for (let i = 0, end = length; i < end; i++) {\n res.push(this.type.decode(stream, ctx));\n }\n }\n\n return res;\n }\n\n size(array, ctx, includePointers = true) {\n if (!array) {\n return this.type.size(null, ctx) * utils.resolveLength(this.length, null, ctx);\n }\n\n let size = 0;\n if (this.length instanceof NumberT) {\n size += this.length.size();\n ctx = {parent: ctx, pointerSize: 0};\n }\n\n for (let item of array) {\n size += this.type.size(item, ctx);\n }\n\n if (ctx && includePointers && this.length instanceof NumberT) {\n size += ctx.pointerSize;\n }\n \n return size;\n }\n\n encode(stream, array, parent) {\n let ctx = parent;\n if (this.length instanceof NumberT) {\n ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent\n };\n\n ctx.pointerOffset = stream.pos + this.size(array, ctx, false);\n this.length.encode(stream, array.length);\n }\n\n for (let item of array) {\n this.type.encode(stream, item, ctx);\n }\n\n if (this.length instanceof NumberT) {\n let i = 0;\n while (i < ctx.pointers.length) {\n const ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n }\n }\n}\n\nexport {ArrayT as Array};\n","import {Array as ArrayT} from './Array.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nexport class LazyArray extends ArrayT {\n decode(stream, parent) {\n const { pos } = stream;\n const length = utils.resolveLength(this.length, stream, parent);\n\n if (this.length instanceof NumberT) {\n parent = {\n parent,\n _startOffset: pos,\n _currentOffset: 0,\n _length: length\n };\n }\n\n const res = new LazyArrayValue(this.type, length, stream, parent);\n\n stream.pos += length * this.type.size(null, parent);\n return res;\n }\n\n size(val, ctx) {\n if (val instanceof LazyArrayValue) {\n val = val.toArray();\n }\n\n return super.size(val, ctx);\n }\n\n encode(stream, val, ctx) {\n if (val instanceof LazyArrayValue) {\n val = val.toArray();\n }\n\n return super.encode(stream, val, ctx);\n }\n}\n\nclass LazyArrayValue {\n constructor(type, length, stream, ctx) {\n this.type = type;\n this.length = length;\n this.stream = stream;\n this.ctx = ctx;\n this.base = this.stream.pos;\n this.items = [];\n }\n\n get(index) {\n if ((index < 0) || (index >= this.length)) {\n return undefined;\n }\n\n if (this.items[index] == null) {\n const { pos } = this.stream;\n this.stream.pos = this.base + (this.type.size(null, this.ctx) * index);\n this.items[index] = this.type.decode(this.stream, this.ctx);\n this.stream.pos = pos;\n }\n\n return this.items[index];\n }\n\n toArray() {\n const result = [];\n for (let i = 0, end = this.length; i < end; i++) {\n result.push(this.get(i));\n }\n return result;\n }\n}\n","import {Base} from './Base.js';\n\nexport class Bitfield extends Base {\n constructor(type, flags = []) {\n super();\n this.type = type;\n this.flags = flags;\n }\n\n decode(stream) {\n const val = this.type.decode(stream);\n\n const res = {};\n for (let i = 0; i < this.flags.length; i++) {\n const flag = this.flags[i];\n if (flag != null) {\n res[flag] = !!(val & (1 << i));\n }\n }\n\n return res;\n }\n\n size() {\n return this.type.size();\n }\n\n encode(stream, keys) {\n let val = 0;\n for (let i = 0; i < this.flags.length; i++) {\n const flag = this.flags[i];\n if (flag != null) {\n if (keys[flag]) { val |= (1 << i); }\n }\n }\n\n return this.type.encode(stream, val);\n }\n}\n","import {Base} from './Base.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nexport class BufferT extends Base {\n constructor(length) {\n super();\n this.length = length;\n }\n \n decode(stream, parent) {\n const length = utils.resolveLength(this.length, stream, parent);\n return stream.readBuffer(length);\n }\n\n size(val, parent) {\n if (!val) {\n return utils.resolveLength(this.length, null, parent);\n }\n\n let len = val.length;\n if (this.length instanceof NumberT) {\n len += this.length.size();\n }\n\n return len;\n }\n\n encode(stream, buf, parent) {\n if (this.length instanceof NumberT) {\n this.length.encode(stream, buf.length);\n }\n\n return stream.writeBuffer(buf);\n }\n}\n\nexport {BufferT as Buffer};\n","import {Base} from './Base.js';\n\nexport class Optional extends Base {\n constructor(type, condition = true) {\n super();\n this.type = type;\n this.condition = condition;\n }\n\n decode(stream, parent) {\n let { condition } = this;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n\n if (condition) {\n return this.type.decode(stream, parent);\n }\n }\n\n size(val, parent) {\n let { condition } = this;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n\n if (condition) {\n return this.type.size(val, parent);\n } else {\n return 0;\n }\n }\n\n encode(stream, val, parent) {\n let { condition } = this;\n if (typeof condition === 'function') {\n condition = condition.call(parent, parent);\n }\n\n if (condition) {\n return this.type.encode(stream, val, parent);\n }\n }\n}\n","import {Base} from './Base.js';\nimport * as utils from './utils.js';\n\nexport class Reserved extends Base {\n constructor(type, count = 1) {\n super();\n this.type = type;\n this.count = count;\n }\n decode(stream, parent) {\n stream.pos += this.size(null, parent);\n return undefined;\n }\n\n size(data, parent) {\n const count = utils.resolveLength(this.count, null, parent);\n return this.type.size() * count;\n }\n\n encode(stream, val, parent) {\n return stream.fill(0, this.size(val, parent));\n }\n}\n","import {Base} from './Base.js';\nimport {Number as NumberT} from './Number.js';\nimport * as utils from './utils.js';\n\nclass StringT extends Base {\n constructor(length, encoding = 'ascii') {\n super();\n this.length = length;\n this.encoding = encoding;\n }\n\n decode(stream, parent) {\n let length, pos;\n\n let { encoding } = this;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent, parent) || 'ascii';\n }\n let width = encodingWidth(encoding);\n\n if (this.length != null) {\n length = utils.resolveLength(this.length, stream, parent);\n } else {\n let buffer;\n ({buffer, length, pos} = stream);\n\n while ((pos < length - width + 1) &&\n (buffer[pos] !== 0x00 ||\n (width === 2 && buffer[pos+1] !== 0x00)\n )) {\n pos += width;\n }\n\n length = pos - stream.pos;\n }\n\n\n const string = stream.readString(length, encoding);\n\n if ((this.length == null) && (stream.pos < stream.length)) {\n stream.pos+=width;\n }\n\n return string;\n }\n\n size(val, parent) {\n // Use the defined value if no value was given\n if (val === undefined || val === null) {\n return utils.resolveLength(this.length, null, parent);\n }\n\n let { encoding } = this;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\n }\n\n if (encoding === 'utf16be') {\n encoding = 'utf16le';\n }\n\n let size = byteLength(val, encoding);\n if (this.length instanceof NumberT) {\n size += this.length.size();\n }\n\n if ((this.length == null)) {\n size += encodingWidth(encoding);\n }\n\n return size;\n }\n\n encode(stream, val, parent) {\n let { encoding } = this;\n if (typeof encoding === 'function') {\n encoding = encoding.call(parent != null ? parent.val : undefined, parent != null ? parent.val : undefined) || 'ascii';\n }\n\n if (this.length instanceof NumberT) {\n this.length.encode(stream, byteLength(val, encoding));\n }\n\n stream.writeString(val, encoding);\n\n if ((this.length == null)) {\n return encodingWidth(encoding) == 2 ?\n stream.writeUInt16LE(0x0000) :\n stream.writeUInt8(0x00);\n }\n }\n}\n\nfunction encodingWidth(encoding) {\n switch(encoding) {\n case 'ascii':\n case 'utf8': // utf8 is a byte-based encoding for zero-term string\n return 1;\n case 'utf16le':\n case 'utf16-le':\n case 'utf-16be':\n case 'utf-16le':\n case 'utf16be':\n case 'utf16-be':\n case 'ucs2':\n return 2;\n default:\n //TODO: assume all other encodings are 1-byters\n //throw new Error('Unknown encoding ' + encoding);\n return 1;\n }\n}\n\nfunction byteLength(string, encoding) {\n switch (encoding) {\n case 'ascii':\n return string.length;\n case 'utf8':\n let len = 0;\n for (let i = 0; i < string.length; i++) {\n let c = string.charCodeAt(i);\n\n if (c >= 0xd800 && c <= 0xdbff && i < string.length - 1) {\n let c2 = string.charCodeAt(++i);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = ((c & 0x3ff) << 10) + (c2 & 0x3ff) + 0x10000;\n } else {\n // unmatched surrogate.\n i--;\n }\n }\n\n if ((c & 0xffffff80) === 0) {\n len++;\n } else if ((c & 0xfffff800) === 0) {\n len += 2;\n } else if ((c & 0xffff0000) === 0) {\n len += 3;\n } else if ((c & 0xffe00000) === 0) {\n len += 4;\n }\n }\n return len;\n case 'utf16le':\n case 'utf16-le':\n case 'utf16be':\n case 'utf16-be':\n case 'ucs2':\n return string.length * 2;\n default:\n throw new Error('Unknown encoding ' + encoding);\n }\n}\n\nexport {StringT as String};\n","import {Base} from './Base.js';\nimport * as utils from './utils.js';\n\nexport class Struct extends Base {\n constructor(fields = {}) {\n super();\n this.fields = fields;\n }\n\n decode(stream, parent, length = 0) {\n const res = this._setup(stream, parent, length);\n this._parseFields(stream, res, this.fields);\n\n if (this.process != null) {\n this.process.call(res, stream);\n }\n return res;\n }\n\n _setup(stream, parent, length) {\n const res = {};\n\n // define hidden properties\n Object.defineProperties(res, {\n parent: { value: parent },\n _startOffset: { value: stream.pos },\n _currentOffset: { value: 0, writable: true },\n _length: { value: length }\n });\n\n return res;\n }\n\n _parseFields(stream, res, fields) {\n for (let key in fields) {\n var val;\n const type = fields[key];\n if (typeof type === 'function') {\n val = type.call(res, res);\n } else {\n val = type.decode(stream, res);\n }\n\n if (val !== undefined) {\n if (val instanceof utils.PropertyDescriptor) {\n Object.defineProperty(res, key, val);\n } else {\n res[key] = val;\n }\n }\n\n res._currentOffset = stream.pos - res._startOffset;\n }\n\n }\n\n size(val, parent, includePointers = true) {\n if (val == null) { val = {}; }\n const ctx = {\n parent,\n val,\n pointerSize: 0\n };\n\n if (this.preEncode != null) {\n this.preEncode.call(val);\n }\n\n let size = 0;\n for (let key in this.fields) {\n const type = this.fields[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n\n if (includePointers) {\n size += ctx.pointerSize;\n }\n\n return size;\n }\n\n encode(stream, val, parent) {\n let type;\n if (this.preEncode != null) {\n this.preEncode.call(val, stream);\n }\n\n const ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent,\n val,\n pointerSize: 0\n };\n\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\n\n for (let key in this.fields) {\n type = this.fields[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n\n let i = 0;\n while (i < ctx.pointers.length) {\n const ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n }\n}\n","import {Struct} from './Struct.js';\n\nconst getPath = (object, pathArray) => {\n return pathArray.reduce((prevObj, key) => prevObj && prevObj[key], object);\n};\n\nexport class VersionedStruct extends Struct {\n constructor(type, versions = {}) {\n super();\n this.type = type;\n this.versions = versions;\n if (typeof type === 'string') {\n this.versionPath = type.split('.');\n }\n }\n\n decode(stream, parent, length = 0) {\n const res = this._setup(stream, parent, length);\n\n if (typeof this.type === 'string') {\n res.version = getPath(parent, this.versionPath);\n } else {\n res.version = this.type.decode(stream);\n }\n\n if (this.versions.header) {\n this._parseFields(stream, res, this.versions.header);\n }\n\n const fields = this.versions[res.version];\n if ((fields == null)) {\n throw new Error(`Unknown version ${res.version}`);\n }\n\n if (fields instanceof VersionedStruct) {\n return fields.decode(stream, parent);\n }\n\n this._parseFields(stream, res, fields);\n\n if (this.process != null) {\n this.process.call(res, stream);\n }\n return res;\n }\n\n size(val, parent, includePointers = true) {\n let key, type;\n if (!val) {\n throw new Error('Not a fixed size');\n }\n\n if (this.preEncode != null) {\n this.preEncode.call(val);\n }\n\n const ctx = {\n parent,\n val,\n pointerSize: 0\n };\n\n let size = 0;\n if (typeof this.type !== 'string') {\n size += this.type.size(val.version, ctx);\n }\n\n if (this.versions.header) {\n for (key in this.versions.header) {\n type = this.versions.header[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n }\n\n const fields = this.versions[val.version];\n if ((fields == null)) {\n throw new Error(`Unknown version ${val.version}`);\n }\n\n for (key in fields) {\n type = fields[key];\n if (type.size != null) {\n size += type.size(val[key], ctx);\n }\n }\n\n if (includePointers) {\n size += ctx.pointerSize;\n }\n\n return size;\n }\n\n encode(stream, val, parent) {\n let key, type;\n if (this.preEncode != null) {\n this.preEncode.call(val, stream);\n }\n\n const ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent,\n val,\n pointerSize: 0\n };\n\n ctx.pointerOffset = stream.pos + this.size(val, ctx, false);\n\n if (typeof this.type !== 'string') {\n this.type.encode(stream, val.version);\n }\n\n if (this.versions.header) {\n for (key in this.versions.header) {\n type = this.versions.header[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n }\n\n const fields = this.versions[val.version];\n for (key in fields) {\n type = fields[key];\n if (type.encode != null) {\n type.encode(stream, val[key], ctx);\n }\n }\n\n let i = 0;\n while (i < ctx.pointers.length) {\n const ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n }\n}\n","import * as utils from './utils.js';\nimport {Base} from './Base.js';\n\nexport class Pointer extends Base {\n constructor(offsetType, type, options = {}) {\n super();\n this.offsetType = offsetType;\n this.type = type;\n this.options = options;\n if (this.type === 'void') { this.type = null; }\n if (this.options.type == null) { this.options.type = 'local'; }\n if (this.options.allowNull == null) { this.options.allowNull = true; }\n if (this.options.nullValue == null) { this.options.nullValue = 0; }\n if (this.options.lazy == null) { this.options.lazy = false; }\n if (this.options.relativeTo) {\n if (typeof this.options.relativeTo !== 'function') {\n throw new Error('relativeTo option must be a function');\n }\n this.relativeToGetter = options.relativeTo;\n }\n }\n\n decode(stream, ctx) {\n const offset = this.offsetType.decode(stream, ctx);\n\n // handle NULL pointers\n if ((offset === this.options.nullValue) && this.options.allowNull) {\n return null;\n }\n\n let relative;\n switch (this.options.type) {\n case 'local': relative = ctx._startOffset; break;\n case 'immediate': relative = stream.pos - this.offsetType.size(); break;\n case 'parent': relative = ctx.parent._startOffset; break;\n default:\n var c = ctx;\n while (c.parent) {\n c = c.parent;\n }\n\n relative = c._startOffset || 0;\n }\n\n if (this.options.relativeTo) {\n relative += this.relativeToGetter(ctx);\n }\n\n const ptr = offset + relative;\n\n if (this.type != null) {\n let val = null;\n const decodeValue = () => {\n if (val != null) { return val; }\n\n const { pos } = stream;\n stream.pos = ptr;\n val = this.type.decode(stream, ctx);\n stream.pos = pos;\n return val;\n };\n\n // If this is a lazy pointer, define a getter to decode only when needed.\n // This obviously only works when the pointer is contained by a Struct.\n if (this.options.lazy) {\n return new utils.PropertyDescriptor({\n get: decodeValue});\n }\n\n return decodeValue();\n } else {\n return ptr;\n }\n }\n\n size(val, ctx) {\n const parent = ctx;\n switch (this.options.type) {\n case 'local': case 'immediate':\n break;\n case 'parent':\n ctx = ctx.parent;\n break;\n default: // global\n while (ctx.parent) {\n ctx = ctx.parent;\n }\n }\n\n let { type } = this;\n if (type == null) {\n if (!(val instanceof VoidPointer)) {\n throw new Error(\"Must be a VoidPointer\");\n }\n\n ({ type } = val);\n val = val.value;\n }\n\n if (val && ctx) {\n // Must be written as two separate lines rather than += in case `type.size` mutates ctx.pointerSize.\n let size = type.size(val, parent);\n ctx.pointerSize += size;\n }\n\n return this.offsetType.size();\n }\n\n encode(stream, val, ctx) {\n let relative;\n const parent = ctx;\n if ((val == null)) {\n this.offsetType.encode(stream, this.options.nullValue);\n return;\n }\n\n switch (this.options.type) {\n case 'local':\n relative = ctx.startOffset;\n break;\n case 'immediate':\n relative = stream.pos + this.offsetType.size(val, parent);\n break;\n case 'parent':\n ctx = ctx.parent;\n relative = ctx.startOffset;\n break;\n default: // global\n relative = 0;\n while (ctx.parent) {\n ctx = ctx.parent;\n }\n }\n\n if (this.options.relativeTo) {\n relative += this.relativeToGetter(parent.val);\n }\n\n this.offsetType.encode(stream, ctx.pointerOffset - relative);\n\n let { type } = this;\n if (type == null) {\n if (!(val instanceof VoidPointer)) {\n throw new Error(\"Must be a VoidPointer\");\n }\n\n ({ type } = val);\n val = val.value;\n }\n\n ctx.pointers.push({\n type,\n val,\n parent\n });\n\n return ctx.pointerOffset += type.size(val, parent);\n }\n}\n\n// A pointer whose type is determined at decode time\nexport class VoidPointer {\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n}\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });\n } else obj[key] = value;\n\n return obj;\n}\nexport { _define_property as _ };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import $bdjGp$base64js from \"base64-js\";\nimport $bdjGp$unicodetrie from \"unicode-trie\";\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\n\nvar $f4087201da764553$exports = {};\n$f4087201da764553$exports = JSON.parse('{\"categories\":[\"Cc\",\"Zs\",\"Po\",\"Sc\",\"Ps\",\"Pe\",\"Sm\",\"Pd\",\"Nd\",\"Lu\",\"Sk\",\"Pc\",\"Ll\",\"So\",\"Lo\",\"Pi\",\"Cf\",\"No\",\"Pf\",\"Lt\",\"Lm\",\"Mn\",\"Me\",\"Mc\",\"Nl\",\"Zl\",\"Zp\",\"Cs\",\"Co\"],\"combiningClasses\":[\"Not_Reordered\",\"Above\",\"Above_Right\",\"Below\",\"Attached_Above_Right\",\"Attached_Below\",\"Overlay\",\"Iota_Subscript\",\"Double_Below\",\"Double_Above\",\"Below_Right\",\"Above_Left\",\"CCC10\",\"CCC11\",\"CCC12\",\"CCC13\",\"CCC14\",\"CCC15\",\"CCC16\",\"CCC17\",\"CCC18\",\"CCC19\",\"CCC20\",\"CCC21\",\"CCC22\",\"CCC23\",\"CCC24\",\"CCC25\",\"CCC30\",\"CCC31\",\"CCC32\",\"CCC27\",\"CCC28\",\"CCC29\",\"CCC33\",\"CCC34\",\"CCC35\",\"CCC36\",\"Nukta\",\"Virama\",\"CCC84\",\"CCC91\",\"CCC103\",\"CCC107\",\"CCC118\",\"CCC122\",\"CCC129\",\"CCC130\",\"CCC132\",\"Attached_Above\",\"Below_Left\",\"Left\",\"Kana_Voicing\",\"CCC26\",\"Right\"],\"scripts\":[\"Common\",\"Latin\",\"Bopomofo\",\"Inherited\",\"Greek\",\"Coptic\",\"Cyrillic\",\"Armenian\",\"Hebrew\",\"Arabic\",\"Syriac\",\"Thaana\",\"Nko\",\"Samaritan\",\"Mandaic\",\"Devanagari\",\"Bengali\",\"Gurmukhi\",\"Gujarati\",\"Oriya\",\"Tamil\",\"Telugu\",\"Kannada\",\"Malayalam\",\"Sinhala\",\"Thai\",\"Lao\",\"Tibetan\",\"Myanmar\",\"Georgian\",\"Hangul\",\"Ethiopic\",\"Cherokee\",\"Canadian_Aboriginal\",\"Ogham\",\"Runic\",\"Tagalog\",\"Hanunoo\",\"Buhid\",\"Tagbanwa\",\"Khmer\",\"Mongolian\",\"Limbu\",\"Tai_Le\",\"New_Tai_Lue\",\"Buginese\",\"Tai_Tham\",\"Balinese\",\"Sundanese\",\"Batak\",\"Lepcha\",\"Ol_Chiki\",\"Braille\",\"Glagolitic\",\"Tifinagh\",\"Han\",\"Hiragana\",\"Katakana\",\"Yi\",\"Lisu\",\"Vai\",\"Bamum\",\"Syloti_Nagri\",\"Phags_Pa\",\"Saurashtra\",\"Kayah_Li\",\"Rejang\",\"Javanese\",\"Cham\",\"Tai_Viet\",\"Meetei_Mayek\",\"null\",\"Linear_B\",\"Lycian\",\"Carian\",\"Old_Italic\",\"Gothic\",\"Old_Permic\",\"Ugaritic\",\"Old_Persian\",\"Deseret\",\"Shavian\",\"Osmanya\",\"Osage\",\"Elbasan\",\"Caucasian_Albanian\",\"Linear_A\",\"Cypriot\",\"Imperial_Aramaic\",\"Palmyrene\",\"Nabataean\",\"Hatran\",\"Phoenician\",\"Lydian\",\"Meroitic_Hieroglyphs\",\"Meroitic_Cursive\",\"Kharoshthi\",\"Old_South_Arabian\",\"Old_North_Arabian\",\"Manichaean\",\"Avestan\",\"Inscriptional_Parthian\",\"Inscriptional_Pahlavi\",\"Psalter_Pahlavi\",\"Old_Turkic\",\"Old_Hungarian\",\"Hanifi_Rohingya\",\"Old_Sogdian\",\"Sogdian\",\"Elymaic\",\"Brahmi\",\"Kaithi\",\"Sora_Sompeng\",\"Chakma\",\"Mahajani\",\"Sharada\",\"Khojki\",\"Multani\",\"Khudawadi\",\"Grantha\",\"Newa\",\"Tirhuta\",\"Siddham\",\"Modi\",\"Takri\",\"Ahom\",\"Dogra\",\"Warang_Citi\",\"Nandinagari\",\"Zanabazar_Square\",\"Soyombo\",\"Pau_Cin_Hau\",\"Bhaiksuki\",\"Marchen\",\"Masaram_Gondi\",\"Gunjala_Gondi\",\"Makasar\",\"Cuneiform\",\"Egyptian_Hieroglyphs\",\"Anatolian_Hieroglyphs\",\"Mro\",\"Bassa_Vah\",\"Pahawh_Hmong\",\"Medefaidrin\",\"Miao\",\"Tangut\",\"Nushu\",\"Duployan\",\"SignWriting\",\"Nyiakeng_Puachue_Hmong\",\"Wancho\",\"Mende_Kikakui\",\"Adlam\"],\"eaw\":[\"N\",\"Na\",\"A\",\"W\",\"H\",\"F\"]}');\n\n\nconst $747425b437e121da$var$trie = new (0, $bdjGp$unicodetrie)((0, $bdjGp$base64js).toByteArray(\"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\"));\nconst $747425b437e121da$var$log2 = Math.log2 || ((n)=>Math.log(n) / Math.LN2);\nconst $747425b437e121da$var$bits = (n)=>$747425b437e121da$var$log2(n) + 1 | 0;\n// compute the number of bits stored for each field\nconst $747425b437e121da$var$CATEGORY_BITS = $747425b437e121da$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).categories.length - 1);\nconst $747425b437e121da$var$COMBINING_BITS = $747425b437e121da$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).combiningClasses.length - 1);\nconst $747425b437e121da$var$SCRIPT_BITS = $747425b437e121da$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).scripts.length - 1);\nconst $747425b437e121da$var$EAW_BITS = $747425b437e121da$var$bits((0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).eaw.length - 1);\nconst $747425b437e121da$var$NUMBER_BITS = 10;\n// compute shift and mask values for each field\nconst $747425b437e121da$var$CATEGORY_SHIFT = $747425b437e121da$var$COMBINING_BITS + $747425b437e121da$var$SCRIPT_BITS + $747425b437e121da$var$EAW_BITS + $747425b437e121da$var$NUMBER_BITS;\nconst $747425b437e121da$var$COMBINING_SHIFT = $747425b437e121da$var$SCRIPT_BITS + $747425b437e121da$var$EAW_BITS + $747425b437e121da$var$NUMBER_BITS;\nconst $747425b437e121da$var$SCRIPT_SHIFT = $747425b437e121da$var$EAW_BITS + $747425b437e121da$var$NUMBER_BITS;\nconst $747425b437e121da$var$EAW_SHIFT = $747425b437e121da$var$NUMBER_BITS;\nconst $747425b437e121da$var$CATEGORY_MASK = (1 << $747425b437e121da$var$CATEGORY_BITS) - 1;\nconst $747425b437e121da$var$COMBINING_MASK = (1 << $747425b437e121da$var$COMBINING_BITS) - 1;\nconst $747425b437e121da$var$SCRIPT_MASK = (1 << $747425b437e121da$var$SCRIPT_BITS) - 1;\nconst $747425b437e121da$var$EAW_MASK = (1 << $747425b437e121da$var$EAW_BITS) - 1;\nconst $747425b437e121da$var$NUMBER_MASK = (1 << $747425b437e121da$var$NUMBER_BITS) - 1;\nfunction $747425b437e121da$export$410364bbb673ddbc(codePoint) {\n const val = $747425b437e121da$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).categories[val >> $747425b437e121da$var$CATEGORY_SHIFT & $747425b437e121da$var$CATEGORY_MASK];\n}\nfunction $747425b437e121da$export$c03b919c6651ed55(codePoint) {\n const val = $747425b437e121da$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).combiningClasses[val >> $747425b437e121da$var$COMBINING_SHIFT & $747425b437e121da$var$COMBINING_MASK];\n}\nfunction $747425b437e121da$export$941569448d136665(codePoint) {\n const val = $747425b437e121da$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).scripts[val >> $747425b437e121da$var$SCRIPT_SHIFT & $747425b437e121da$var$SCRIPT_MASK];\n}\nfunction $747425b437e121da$export$92f6187db8ca6d26(codePoint) {\n const val = $747425b437e121da$var$trie.get(codePoint);\n return (0, (/*@__PURE__*/$parcel$interopDefault($f4087201da764553$exports))).eaw[val >> $747425b437e121da$var$EAW_SHIFT & $747425b437e121da$var$EAW_MASK];\n}\nfunction $747425b437e121da$export$7d1258ebb7625a0d(codePoint) {\n let val = $747425b437e121da$var$trie.get(codePoint);\n let num = val & $747425b437e121da$var$NUMBER_MASK;\n if (num === 0) return null;\n else if (num <= 50) return num - 1;\n else if (num < 0x1e0) {\n const numerator = (num >> 4) - 12;\n const denominator = (num & 0xf) + 1;\n return numerator / denominator;\n } else if (num < 0x300) {\n val = (num >> 5) - 14;\n let exp = (num & 0x1f) + 2;\n while(exp > 0){\n val *= 10;\n exp--;\n }\n return val;\n } else {\n val = (num >> 2) - 0xbf;\n let exp = (num & 3) + 1;\n while(exp > 0){\n val *= 60;\n exp--;\n }\n return val;\n }\n}\nfunction $747425b437e121da$export$52c8ea63abd07594(codePoint) {\n const category = $747425b437e121da$export$410364bbb673ddbc(codePoint);\n return category === \"Lu\" || category === \"Ll\" || category === \"Lt\" || category === \"Lm\" || category === \"Lo\" || category === \"Nl\";\n}\nfunction $747425b437e121da$export$727d9dbc4fbb948f(codePoint) {\n return $747425b437e121da$export$410364bbb673ddbc(codePoint) === \"Nd\";\n}\nfunction $747425b437e121da$export$a5b49f4dc6a07d2c(codePoint) {\n const category = $747425b437e121da$export$410364bbb673ddbc(codePoint);\n return category === \"Pc\" || category === \"Pd\" || category === \"Pe\" || category === \"Pf\" || category === \"Pi\" || category === \"Po\" || category === \"Ps\";\n}\nfunction $747425b437e121da$export$7b6804e8df61fcf5(codePoint) {\n return $747425b437e121da$export$410364bbb673ddbc(codePoint) === \"Ll\";\n}\nfunction $747425b437e121da$export$aebd617640818cda(codePoint) {\n return $747425b437e121da$export$410364bbb673ddbc(codePoint) === \"Lu\";\n}\nfunction $747425b437e121da$export$de8b4ee23b2cf823(codePoint) {\n return $747425b437e121da$export$410364bbb673ddbc(codePoint) === \"Lt\";\n}\nfunction $747425b437e121da$export$3c52dd84024ae72c(codePoint) {\n const category = $747425b437e121da$export$410364bbb673ddbc(codePoint);\n return category === \"Zs\" || category === \"Zl\" || category === \"Zp\";\n}\nfunction $747425b437e121da$export$a11bdcffe109e74b(codePoint) {\n const category = $747425b437e121da$export$410364bbb673ddbc(codePoint);\n return category === \"Nd\" || category === \"No\" || category === \"Nl\" || category === \"Lu\" || category === \"Ll\" || category === \"Lt\" || category === \"Lm\" || category === \"Lo\" || category === \"Me\" || category === \"Mc\";\n}\nfunction $747425b437e121da$export$e33ad6871e762338(codePoint) {\n const category = $747425b437e121da$export$410364bbb673ddbc(codePoint);\n return category === \"Mn\" || category === \"Me\" || category === \"Mc\";\n}\nvar // Backwards compatibility.\n$747425b437e121da$export$2e2bcd8739ae039 = {\n getCategory: $747425b437e121da$export$410364bbb673ddbc,\n getCombiningClass: $747425b437e121da$export$c03b919c6651ed55,\n getScript: $747425b437e121da$export$941569448d136665,\n getEastAsianWidth: $747425b437e121da$export$92f6187db8ca6d26,\n getNumericValue: $747425b437e121da$export$7d1258ebb7625a0d,\n isAlphabetic: $747425b437e121da$export$52c8ea63abd07594,\n isDigit: $747425b437e121da$export$727d9dbc4fbb948f,\n isPunctuation: $747425b437e121da$export$a5b49f4dc6a07d2c,\n isLowerCase: $747425b437e121da$export$7b6804e8df61fcf5,\n isUpperCase: $747425b437e121da$export$aebd617640818cda,\n isTitleCase: $747425b437e121da$export$de8b4ee23b2cf823,\n isWhiteSpace: $747425b437e121da$export$3c52dd84024ae72c,\n isBaseForm: $747425b437e121da$export$a11bdcffe109e74b,\n isMark: $747425b437e121da$export$e33ad6871e762338\n};\n\n\nexport {$747425b437e121da$export$410364bbb673ddbc as getCategory, $747425b437e121da$export$c03b919c6651ed55 as getCombiningClass, $747425b437e121da$export$941569448d136665 as getScript, $747425b437e121da$export$92f6187db8ca6d26 as getEastAsianWidth, $747425b437e121da$export$7d1258ebb7625a0d as getNumericValue, $747425b437e121da$export$52c8ea63abd07594 as isAlphabetic, $747425b437e121da$export$727d9dbc4fbb948f as isDigit, $747425b437e121da$export$a5b49f4dc6a07d2c as isPunctuation, $747425b437e121da$export$7b6804e8df61fcf5 as isLowerCase, $747425b437e121da$export$aebd617640818cda as isUpperCase, $747425b437e121da$export$de8b4ee23b2cf823 as isTitleCase, $747425b437e121da$export$3c52dd84024ae72c as isWhiteSpace, $747425b437e121da$export$a11bdcffe109e74b as isBaseForm, $747425b437e121da$export$e33ad6871e762338 as isMark, $747425b437e121da$export$2e2bcd8739ae039 as default};\n//# sourceMappingURL=module.mjs.map\n","import {DecodeStream as $6uUbQ$DecodeStream, Struct as $6uUbQ$Struct, String as $6uUbQ$String, uint32 as $6uUbQ$uint32, Pointer as $6uUbQ$Pointer, uint16 as $6uUbQ$uint16, Array as $6uUbQ$Array, VoidPointer as $6uUbQ$VoidPointer, int16 as $6uUbQ$int16, uint24 as $6uUbQ$uint24, uint8 as $6uUbQ$uint8, VersionedStruct as $6uUbQ$VersionedStruct, LazyArray as $6uUbQ$LazyArray, Reserved as $6uUbQ$Reserved, int32 as $6uUbQ$int32, Bitfield as $6uUbQ$Bitfield, fixed32 as $6uUbQ$fixed32, Buffer as $6uUbQ$Buffer, Number as $6uUbQ$Number, resolveLength as $6uUbQ$resolveLength, fixed16 as $6uUbQ$fixed16, PropertyDescriptor as $6uUbQ$PropertyDescriptor, Fixed as $6uUbQ$Fixed, int8 as $6uUbQ$int8, Optional as $6uUbQ$Optional, EncodeStream as $6uUbQ$EncodeStream} from \"restructure\";\nimport {_ as $6uUbQ$_} from \"@swc/helpers/_/_define_property\";\nimport {_ as $6uUbQ$_1} from \"@swc/helpers/_/_ts_decorate\";\nimport $6uUbQ$fastdeepequal from \"fast-deep-equal\";\nimport {getCombiningClass as $6uUbQ$getCombiningClass, getScript as $6uUbQ$getScript, isDigit as $6uUbQ$isDigit, getCategory as $6uUbQ$getCategory, isMark as $6uUbQ$isMark} from \"unicode-properties\";\nimport $6uUbQ$unicodetrie from \"unicode-trie\";\nimport $6uUbQ$dfa from \"dfa\";\nimport $6uUbQ$clone from \"clone\";\nimport $6uUbQ$tinyinflate from \"tiny-inflate\";\nimport $6uUbQ$brotlidecompressjs from \"brotli/decompress.js\";\n\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nvar $d636bc798e7178db$exports = {};\n\n$parcel$export($d636bc798e7178db$exports, \"logErrors\", () => $d636bc798e7178db$export$bd5c5d8b8dcafd78);\n$parcel$export($d636bc798e7178db$exports, \"registerFormat\", () => $d636bc798e7178db$export$36b2f24e97d43be);\n$parcel$export($d636bc798e7178db$exports, \"create\", () => $d636bc798e7178db$export$185802fd694ee1f5);\n$parcel$export($d636bc798e7178db$exports, \"defaultLanguage\", () => $d636bc798e7178db$export$42940898df819940);\n$parcel$export($d636bc798e7178db$exports, \"setDefaultLanguage\", () => $d636bc798e7178db$export$5157e7780d44cc36);\n\nlet $d636bc798e7178db$export$bd5c5d8b8dcafd78 = false;\nlet $d636bc798e7178db$var$formats = [];\nfunction $d636bc798e7178db$export$36b2f24e97d43be(format) {\n $d636bc798e7178db$var$formats.push(format);\n}\nfunction $d636bc798e7178db$export$185802fd694ee1f5(buffer, postscriptName) {\n for(let i = 0; i < $d636bc798e7178db$var$formats.length; i++){\n let format = $d636bc798e7178db$var$formats[i];\n if (format.probe(buffer)) {\n let font = new format(new (0, $6uUbQ$DecodeStream)(buffer));\n if (postscriptName) return font.getFont(postscriptName);\n return font;\n }\n }\n throw new Error('Unknown font format');\n}\nlet $d636bc798e7178db$export$42940898df819940 = 'en';\nfunction $d636bc798e7178db$export$5157e7780d44cc36(lang = 'en') {\n $d636bc798e7178db$export$42940898df819940 = lang;\n}\n\n\n\n\n\n/**\n * This decorator caches the results of a getter or method such that\n * the results are lazily computed once, and then cached.\n * @private\n */ function $e71565f2ce09cb6b$export$69a3209f1a06c04d(target, key, descriptor) {\n if (descriptor.get) {\n let get = descriptor.get;\n descriptor.get = function() {\n let value = get.call(this);\n Object.defineProperty(this, key, {\n value: value\n });\n return value;\n };\n } else if (typeof descriptor.value === 'function') {\n let fn = descriptor.value;\n return {\n get () {\n let cache = new Map;\n function memoized(...args) {\n let key = args.length > 0 ? args[0] : 'value';\n if (cache.has(key)) return cache.get(key);\n let result = fn.apply(this, args);\n cache.set(key, result);\n return result;\n }\n Object.defineProperty(this, key, {\n value: memoized\n });\n return memoized;\n }\n };\n }\n}\n\n\n\n\n\nlet $26a62205ad06574e$var$SubHeader = new $6uUbQ$Struct({\n firstCode: $6uUbQ$uint16,\n entryCount: $6uUbQ$uint16,\n idDelta: $6uUbQ$int16,\n idRangeOffset: $6uUbQ$uint16\n});\nlet $26a62205ad06574e$var$CmapGroup = new $6uUbQ$Struct({\n startCharCode: $6uUbQ$uint32,\n endCharCode: $6uUbQ$uint32,\n glyphID: $6uUbQ$uint32\n});\nlet $26a62205ad06574e$var$UnicodeValueRange = new $6uUbQ$Struct({\n startUnicodeValue: $6uUbQ$uint24,\n additionalCount: $6uUbQ$uint8\n});\nlet $26a62205ad06574e$var$UVSMapping = new $6uUbQ$Struct({\n unicodeValue: $6uUbQ$uint24,\n glyphID: $6uUbQ$uint16\n});\nlet $26a62205ad06574e$var$DefaultUVS = new $6uUbQ$Array($26a62205ad06574e$var$UnicodeValueRange, $6uUbQ$uint32);\nlet $26a62205ad06574e$var$NonDefaultUVS = new $6uUbQ$Array($26a62205ad06574e$var$UVSMapping, $6uUbQ$uint32);\nlet $26a62205ad06574e$var$VarSelectorRecord = new $6uUbQ$Struct({\n varSelector: $6uUbQ$uint24,\n defaultUVS: new $6uUbQ$Pointer($6uUbQ$uint32, $26a62205ad06574e$var$DefaultUVS, {\n type: 'parent'\n }),\n nonDefaultUVS: new $6uUbQ$Pointer($6uUbQ$uint32, $26a62205ad06574e$var$NonDefaultUVS, {\n type: 'parent'\n })\n});\nlet $26a62205ad06574e$var$CmapSubtable = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 0: {\n length: $6uUbQ$uint16,\n language: $6uUbQ$uint16,\n codeMap: new $6uUbQ$LazyArray($6uUbQ$uint8, 256)\n },\n 2: {\n length: $6uUbQ$uint16,\n language: $6uUbQ$uint16,\n subHeaderKeys: new $6uUbQ$Array($6uUbQ$uint16, 256),\n subHeaderCount: (t)=>Math.max.apply(Math, t.subHeaderKeys),\n subHeaders: new $6uUbQ$LazyArray($26a62205ad06574e$var$SubHeader, 'subHeaderCount'),\n glyphIndexArray: new $6uUbQ$LazyArray($6uUbQ$uint16, 'subHeaderCount')\n },\n 4: {\n length: $6uUbQ$uint16,\n language: $6uUbQ$uint16,\n segCountX2: $6uUbQ$uint16,\n segCount: (t)=>t.segCountX2 >> 1,\n searchRange: $6uUbQ$uint16,\n entrySelector: $6uUbQ$uint16,\n rangeShift: $6uUbQ$uint16,\n endCode: new $6uUbQ$LazyArray($6uUbQ$uint16, 'segCount'),\n reservedPad: new $6uUbQ$Reserved($6uUbQ$uint16),\n startCode: new $6uUbQ$LazyArray($6uUbQ$uint16, 'segCount'),\n idDelta: new $6uUbQ$LazyArray($6uUbQ$int16, 'segCount'),\n idRangeOffset: new $6uUbQ$LazyArray($6uUbQ$uint16, 'segCount'),\n glyphIndexArray: new $6uUbQ$LazyArray($6uUbQ$uint16, (t)=>(t.length - t._currentOffset) / 2)\n },\n 6: {\n length: $6uUbQ$uint16,\n language: $6uUbQ$uint16,\n firstCode: $6uUbQ$uint16,\n entryCount: $6uUbQ$uint16,\n glyphIndices: new $6uUbQ$LazyArray($6uUbQ$uint16, 'entryCount')\n },\n 8: {\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n length: $6uUbQ$uint32,\n language: $6uUbQ$uint16,\n is32: new $6uUbQ$LazyArray($6uUbQ$uint8, 8192),\n nGroups: $6uUbQ$uint32,\n groups: new $6uUbQ$LazyArray($26a62205ad06574e$var$CmapGroup, 'nGroups')\n },\n 10: {\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n length: $6uUbQ$uint32,\n language: $6uUbQ$uint32,\n firstCode: $6uUbQ$uint32,\n entryCount: $6uUbQ$uint32,\n glyphIndices: new $6uUbQ$LazyArray($6uUbQ$uint16, 'numChars')\n },\n 12: {\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n length: $6uUbQ$uint32,\n language: $6uUbQ$uint32,\n nGroups: $6uUbQ$uint32,\n groups: new $6uUbQ$LazyArray($26a62205ad06574e$var$CmapGroup, 'nGroups')\n },\n 13: {\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n length: $6uUbQ$uint32,\n language: $6uUbQ$uint32,\n nGroups: $6uUbQ$uint32,\n groups: new $6uUbQ$LazyArray($26a62205ad06574e$var$CmapGroup, 'nGroups')\n },\n 14: {\n length: $6uUbQ$uint32,\n numRecords: $6uUbQ$uint32,\n varSelectors: new $6uUbQ$LazyArray($26a62205ad06574e$var$VarSelectorRecord, 'numRecords')\n }\n});\nlet $26a62205ad06574e$var$CmapEntry = new $6uUbQ$Struct({\n platformID: $6uUbQ$uint16,\n encodingID: $6uUbQ$uint16,\n table: new $6uUbQ$Pointer($6uUbQ$uint32, $26a62205ad06574e$var$CmapSubtable, {\n type: 'parent',\n lazy: true\n })\n});\nvar // character to glyph mapping\n$26a62205ad06574e$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n numSubtables: $6uUbQ$uint16,\n tables: new $6uUbQ$Array($26a62205ad06574e$var$CmapEntry, 'numSubtables')\n});\n\n\n\nvar // font header\n$f2612a29f92ac062$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$int32,\n revision: $6uUbQ$int32,\n checkSumAdjustment: $6uUbQ$uint32,\n magicNumber: $6uUbQ$uint32,\n flags: $6uUbQ$uint16,\n unitsPerEm: $6uUbQ$uint16,\n created: new $6uUbQ$Array($6uUbQ$int32, 2),\n modified: new $6uUbQ$Array($6uUbQ$int32, 2),\n xMin: $6uUbQ$int16,\n yMin: $6uUbQ$int16,\n xMax: $6uUbQ$int16,\n yMax: $6uUbQ$int16,\n macStyle: new $6uUbQ$Bitfield($6uUbQ$uint16, [\n 'bold',\n 'italic',\n 'underline',\n 'outline',\n 'shadow',\n 'condensed',\n 'extended'\n ]),\n lowestRecPPEM: $6uUbQ$uint16,\n fontDirectionHint: $6uUbQ$int16,\n indexToLocFormat: $6uUbQ$int16,\n glyphDataFormat: $6uUbQ$int16 // 0 for current format\n});\n\n\n\nvar // horizontal header\n$2c179dd593583073$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$int32,\n ascent: $6uUbQ$int16,\n descent: $6uUbQ$int16,\n lineGap: $6uUbQ$int16,\n advanceWidthMax: $6uUbQ$uint16,\n minLeftSideBearing: $6uUbQ$int16,\n minRightSideBearing: $6uUbQ$int16,\n xMaxExtent: $6uUbQ$int16,\n caretSlopeRise: $6uUbQ$int16,\n caretSlopeRun: $6uUbQ$int16,\n caretOffset: $6uUbQ$int16,\n reserved: new $6uUbQ$Reserved($6uUbQ$int16, 4),\n metricDataFormat: $6uUbQ$int16,\n numberOfMetrics: $6uUbQ$uint16 // Number of advance widths in 'hmtx' table\n});\n\n\n\nlet $bdc9060542264b85$var$HmtxEntry = new $6uUbQ$Struct({\n advance: $6uUbQ$uint16,\n bearing: $6uUbQ$int16\n});\nvar $bdc9060542264b85$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n metrics: new $6uUbQ$LazyArray($bdc9060542264b85$var$HmtxEntry, (t)=>t.parent.hhea.numberOfMetrics),\n bearings: new $6uUbQ$LazyArray($6uUbQ$int16, (t)=>t.parent.maxp.numGlyphs - t.parent.hhea.numberOfMetrics)\n});\n\n\n\nvar // maxiumum profile\n$dbf51cb3d3fe409d$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$int32,\n numGlyphs: $6uUbQ$uint16,\n maxPoints: $6uUbQ$uint16,\n maxContours: $6uUbQ$uint16,\n maxComponentPoints: $6uUbQ$uint16,\n maxComponentContours: $6uUbQ$uint16,\n maxZones: $6uUbQ$uint16,\n maxTwilightPoints: $6uUbQ$uint16,\n maxStorage: $6uUbQ$uint16,\n maxFunctionDefs: $6uUbQ$uint16,\n maxInstructionDefs: $6uUbQ$uint16,\n maxStackElements: $6uUbQ$uint16,\n maxSizeOfInstructions: $6uUbQ$uint16,\n maxComponentElements: $6uUbQ$uint16,\n maxComponentDepth: $6uUbQ$uint16 // Maximum levels of recursion; 1 for simple components\n});\n\n\n\n/**\n * Gets an encoding name from platform, encoding, and language ids.\n * Returned encoding names can be used in iconv-lite to decode text.\n */ function $e449ad78d50845fe$export$badc544e0651b6b1(platformID, encodingID, languageID = 0) {\n if (platformID === 1 && $e449ad78d50845fe$export$479e671907f486d1[languageID]) return $e449ad78d50845fe$export$479e671907f486d1[languageID];\n return $e449ad78d50845fe$export$6fef87b7618bdf0b[platformID][encodingID];\n}\nconst $e449ad78d50845fe$var$SINGLE_BYTE_ENCODINGS = new Set([\n 'x-mac-roman',\n 'x-mac-cyrillic',\n 'iso-8859-6',\n 'iso-8859-8'\n]);\nconst $e449ad78d50845fe$var$MAC_ENCODINGS = {\n 'x-mac-croatian': \"\\xc4\\xc5\\xc7\\xc9\\xd1\\xd6\\xdc\\xe1\\xe0\\xe2\\xe4\\xe3\\xe5\\xe7\\xe9\\xe8\\xea\\xeb\\xed\\xec\\xee\\xef\\xf1\\xf3\\xf2\\xf4\\xf6\\xf5\\xfa\\xf9\\xfb\\xfc\\u2020\\xb0\\xa2\\xa3\\xa7\\u2022\\xb6\\xdf\\xae\\u0160\\u2122\\xb4\\xa8\\u2260\\u017D\\xd8\\u221E\\xb1\\u2264\\u2265\\u2206\\xb5\\u2202\\u2211\\u220F\\u0161\\u222B\\xaa\\xba\\u03A9\\u017E\\xf8\\xbf\\xa1\\xac\\u221A\\u0192\\u2248\\u0106\\xab\\u010C\\u2026 \\xc0\\xc3\\xd5\\u0152\\u0153\\u0110\\u2014\\u201C\\u201D\\u2018\\u2019\\xf7\\u25CA\\uF8FF\\xa9\\u2044\\u20AC\\u2039\\u203A\\xc6\\xbb\\u2013\\xb7\\u201A\\u201E\\u2030\\xc2\\u0107\\xc1\\u010D\\xc8\\xcd\\xce\\xcf\\xcc\\xd3\\xd4\\u0111\\xd2\\xda\\xdb\\xd9\\u0131\\u02C6\\u02DC\\xaf\\u03C0\\xcb\\u02DA\\xb8\\xca\\xe6\\u02C7\",\n 'x-mac-gaelic': \"\\xc4\\xc5\\xc7\\xc9\\xd1\\xd6\\xdc\\xe1\\xe0\\xe2\\xe4\\xe3\\xe5\\xe7\\xe9\\xe8\\xea\\xeb\\xed\\xec\\xee\\xef\\xf1\\xf3\\xf2\\xf4\\xf6\\xf5\\xfa\\xf9\\xfb\\xfc\\u2020\\xb0\\xa2\\xa3\\xa7\\u2022\\xb6\\xdf\\xae\\xa9\\u2122\\xb4\\xa8\\u2260\\xc6\\xd8\\u1E02\\xb1\\u2264\\u2265\\u1E03\\u010A\\u010B\\u1E0A\\u1E0B\\u1E1E\\u1E1F\\u0120\\u0121\\u1E40\\xe6\\xf8\\u1E41\\u1E56\\u1E57\\u027C\\u0192\\u017F\\u1E60\\xab\\xbb\\u2026 \\xc0\\xc3\\xd5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1E61\\u1E9B\\xff\\u0178\\u1E6A\\u20AC\\u2039\\u203A\\u0176\\u0177\\u1E6B\\xb7\\u1EF2\\u1EF3\\u204A\\xc2\\xca\\xc1\\xcb\\xc8\\xcd\\xce\\xcf\\xcc\\xd3\\xd4\\u2663\\xd2\\xda\\xdb\\xd9\\u0131\\xdd\\xfd\\u0174\\u0175\\u1E84\\u1E85\\u1E80\\u1E81\\u1E82\\u1E83\",\n 'x-mac-greek': \"\\xc4\\xb9\\xb2\\xc9\\xb3\\xd6\\xdc\\u0385\\xe0\\xe2\\xe4\\u0384\\xa8\\xe7\\xe9\\xe8\\xea\\xeb\\xa3\\u2122\\xee\\xef\\u2022\\xbd\\u2030\\xf4\\xf6\\xa6\\u20AC\\xf9\\xfb\\xfc\\u2020\\u0393\\u0394\\u0398\\u039B\\u039E\\u03A0\\xdf\\xae\\xa9\\u03A3\\u03AA\\xa7\\u2260\\xb0\\xb7\\u0391\\xb1\\u2264\\u2265\\xa5\\u0392\\u0395\\u0396\\u0397\\u0399\\u039A\\u039C\\u03A6\\u03AB\\u03A8\\u03A9\\u03AC\\u039D\\xac\\u039F\\u03A1\\u2248\\u03A4\\xab\\xbb\\u2026 \\u03A5\\u03A7\\u0386\\u0388\\u0153\\u2013\\u2015\\u201C\\u201D\\u2018\\u2019\\xf7\\u0389\\u038A\\u038C\\u038E\\u03AD\\u03AE\\u03AF\\u03CC\\u038F\\u03CD\\u03B1\\u03B2\\u03C8\\u03B4\\u03B5\\u03C6\\u03B3\\u03B7\\u03B9\\u03BE\\u03BA\\u03BB\\u03BC\\u03BD\\u03BF\\u03C0\\u03CE\\u03C1\\u03C3\\u03C4\\u03B8\\u03C9\\u03C2\\u03C7\\u03C5\\u03B6\\u03CA\\u03CB\\u0390\\u03B0\\xad\",\n 'x-mac-icelandic': \"\\xc4\\xc5\\xc7\\xc9\\xd1\\xd6\\xdc\\xe1\\xe0\\xe2\\xe4\\xe3\\xe5\\xe7\\xe9\\xe8\\xea\\xeb\\xed\\xec\\xee\\xef\\xf1\\xf3\\xf2\\xf4\\xf6\\xf5\\xfa\\xf9\\xfb\\xfc\\xdd\\xb0\\xa2\\xa3\\xa7\\u2022\\xb6\\xdf\\xae\\xa9\\u2122\\xb4\\xa8\\u2260\\xc6\\xd8\\u221E\\xb1\\u2264\\u2265\\xa5\\xb5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xaa\\xba\\u03A9\\xe6\\xf8\\xbf\\xa1\\xac\\u221A\\u0192\\u2248\\u2206\\xab\\xbb\\u2026 \\xc0\\xc3\\xd5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xf7\\u25CA\\xff\\u0178\\u2044\\u20AC\\xd0\\xf0\\xde\\xfe\\xfd\\xb7\\u201A\\u201E\\u2030\\xc2\\xca\\xc1\\xcb\\xc8\\xcd\\xce\\xcf\\xcc\\xd3\\xd4\\uF8FF\\xd2\\xda\\xdb\\xd9\\u0131\\u02C6\\u02DC\\xaf\\u02D8\\u02D9\\u02DA\\xb8\\u02DD\\u02DB\\u02C7\",\n 'x-mac-inuit': \"\\u1403\\u1404\\u1405\\u1406\\u140A\\u140B\\u1431\\u1432\\u1433\\u1434\\u1438\\u1439\\u1449\\u144E\\u144F\\u1450\\u1451\\u1455\\u1456\\u1466\\u146D\\u146E\\u146F\\u1470\\u1472\\u1473\\u1483\\u148B\\u148C\\u148D\\u148E\\u1490\\u1491\\xb0\\u14A1\\u14A5\\u14A6\\u2022\\xb6\\u14A7\\xae\\xa9\\u2122\\u14A8\\u14AA\\u14AB\\u14BB\\u14C2\\u14C3\\u14C4\\u14C5\\u14C7\\u14C8\\u14D0\\u14EF\\u14F0\\u14F1\\u14F2\\u14F4\\u14F5\\u1505\\u14D5\\u14D6\\u14D7\\u14D8\\u14DA\\u14DB\\u14EA\\u1528\\u1529\\u152A\\u152B\\u152D\\u2026 \\u152E\\u153E\\u1555\\u1556\\u1557\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\u1558\\u1559\\u155A\\u155D\\u1546\\u1547\\u1548\\u1549\\u154B\\u154C\\u1550\\u157F\\u1580\\u1581\\u1582\\u1583\\u1584\\u1585\\u158F\\u1590\\u1591\\u1592\\u1593\\u1594\\u1595\\u1671\\u1672\\u1673\\u1674\\u1675\\u1676\\u1596\\u15A0\\u15A1\\u15A2\\u15A3\\u15A4\\u15A5\\u15A6\\u157C\\u0141\\u0142\",\n 'x-mac-ce': \"\\xc4\\u0100\\u0101\\xc9\\u0104\\xd6\\xdc\\xe1\\u0105\\u010C\\xe4\\u010D\\u0106\\u0107\\xe9\\u0179\\u017A\\u010E\\xed\\u010F\\u0112\\u0113\\u0116\\xf3\\u0117\\xf4\\xf6\\xf5\\xfa\\u011A\\u011B\\xfc\\u2020\\xb0\\u0118\\xa3\\xa7\\u2022\\xb6\\xdf\\xae\\xa9\\u2122\\u0119\\xa8\\u2260\\u0123\\u012E\\u012F\\u012A\\u2264\\u2265\\u012B\\u0136\\u2202\\u2211\\u0142\\u013B\\u013C\\u013D\\u013E\\u0139\\u013A\\u0145\\u0146\\u0143\\xac\\u221A\\u0144\\u0147\\u2206\\xab\\xbb\\u2026 \\u0148\\u0150\\xd5\\u0151\\u014C\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xf7\\u25CA\\u014D\\u0154\\u0155\\u0158\\u2039\\u203A\\u0159\\u0156\\u0157\\u0160\\u201A\\u201E\\u0161\\u015A\\u015B\\xc1\\u0164\\u0165\\xcd\\u017D\\u017E\\u016A\\xd3\\xd4\\u016B\\u016E\\xda\\u016F\\u0170\\u0171\\u0172\\u0173\\xdd\\xfd\\u0137\\u017B\\u0141\\u017C\\u0122\\u02C7\",\n 'x-mac-romanian': \"\\xc4\\xc5\\xc7\\xc9\\xd1\\xd6\\xdc\\xe1\\xe0\\xe2\\xe4\\xe3\\xe5\\xe7\\xe9\\xe8\\xea\\xeb\\xed\\xec\\xee\\xef\\xf1\\xf3\\xf2\\xf4\\xf6\\xf5\\xfa\\xf9\\xfb\\xfc\\u2020\\xb0\\xa2\\xa3\\xa7\\u2022\\xb6\\xdf\\xae\\xa9\\u2122\\xb4\\xa8\\u2260\\u0102\\u0218\\u221E\\xb1\\u2264\\u2265\\xa5\\xb5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xaa\\xba\\u03A9\\u0103\\u0219\\xbf\\xa1\\xac\\u221A\\u0192\\u2248\\u2206\\xab\\xbb\\u2026 \\xc0\\xc3\\xd5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xf7\\u25CA\\xff\\u0178\\u2044\\u20AC\\u2039\\u203A\\u021A\\u021B\\u2021\\xb7\\u201A\\u201E\\u2030\\xc2\\xca\\xc1\\xcb\\xc8\\xcd\\xce\\xcf\\xcc\\xd3\\xd4\\uF8FF\\xd2\\xda\\xdb\\xd9\\u0131\\u02C6\\u02DC\\xaf\\u02D8\\u02D9\\u02DA\\xb8\\u02DD\\u02DB\\u02C7\",\n 'x-mac-turkish': \"\\xc4\\xc5\\xc7\\xc9\\xd1\\xd6\\xdc\\xe1\\xe0\\xe2\\xe4\\xe3\\xe5\\xe7\\xe9\\xe8\\xea\\xeb\\xed\\xec\\xee\\xef\\xf1\\xf3\\xf2\\xf4\\xf6\\xf5\\xfa\\xf9\\xfb\\xfc\\u2020\\xb0\\xa2\\xa3\\xa7\\u2022\\xb6\\xdf\\xae\\xa9\\u2122\\xb4\\xa8\\u2260\\xc6\\xd8\\u221E\\xb1\\u2264\\u2265\\xa5\\xb5\\u2202\\u2211\\u220F\\u03C0\\u222B\\xaa\\xba\\u03A9\\xe6\\xf8\\xbf\\xa1\\xac\\u221A\\u0192\\u2248\\u2206\\xab\\xbb\\u2026 \\xc0\\xc3\\xd5\\u0152\\u0153\\u2013\\u2014\\u201C\\u201D\\u2018\\u2019\\xf7\\u25CA\\xff\\u0178\\u011E\\u011F\\u0130\\u0131\\u015E\\u015F\\u2021\\xb7\\u201A\\u201E\\u2030\\xc2\\xca\\xc1\\xcb\\xc8\\xcd\\xce\\xcf\\xcc\\xd3\\xd4\\uF8FF\\xd2\\xda\\xdb\\xd9\\uF8A0\\u02C6\\u02DC\\xaf\\u02D8\\u02D9\\u02DA\\xb8\\u02DD\\u02DB\\u02C7\"\n};\nconst $e449ad78d50845fe$var$encodingCache = new Map();\nfunction $e449ad78d50845fe$export$1dceb3c14ed68bee(encoding) {\n let cached = $e449ad78d50845fe$var$encodingCache.get(encoding);\n if (cached) return cached;\n // These encodings aren't supported by TextDecoder.\n let mapping = $e449ad78d50845fe$var$MAC_ENCODINGS[encoding];\n if (mapping) {\n let res = new Map();\n for(let i = 0; i < mapping.length; i++)res.set(mapping.charCodeAt(i), 0x80 + i);\n $e449ad78d50845fe$var$encodingCache.set(encoding, res);\n return res;\n }\n // Only single byte encodings can be mapped 1:1.\n if ($e449ad78d50845fe$var$SINGLE_BYTE_ENCODINGS.has(encoding)) {\n // TextEncoder only supports utf8, whereas TextDecoder supports legacy encodings.\n // Use this to create a mapping of code points.\n let decoder = new TextDecoder(encoding);\n let mapping = new Uint8Array(0x80);\n for(let i = 0; i < 0x80; i++)mapping[i] = 0x80 + i;\n let res = new Map();\n let s = decoder.decode(mapping);\n for(let i = 0; i < 0x80; i++)res.set(s.charCodeAt(i), 0x80 + i);\n $e449ad78d50845fe$var$encodingCache.set(encoding, res);\n return res;\n }\n}\nconst $e449ad78d50845fe$export$6fef87b7618bdf0b = [\n // unicode\n [\n 'utf-16be',\n 'utf-16be',\n 'utf-16be',\n 'utf-16be',\n 'utf-16be',\n 'utf-16be',\n 'utf-16be'\n ],\n // macintosh\n // Mappings available at http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/\n // 0\tRoman 17\tMalayalam\n // 1\tJapanese\t 18\tSinhalese\n // 2\tTraditional Chinese\t 19\tBurmese\n // 3\tKorean\t 20\tKhmer\n // 4\tArabic\t 21\tThai\n // 5\tHebrew\t 22\tLaotian\n // 6\tGreek\t 23\tGeorgian\n // 7\tRussian\t 24\tArmenian\n // 8\tRSymbol\t 25\tSimplified Chinese\n // 9\tDevanagari\t 26\tTibetan\n // 10\tGurmukhi\t 27\tMongolian\n // 11\tGujarati\t 28\tGeez\n // 12\tOriya\t 29\tSlavic\n // 13\tBengali\t 30\tVietnamese\n // 14\tTamil\t 31\tSindhi\n // 15\tTelugu\t 32\t(Uninterpreted)\n // 16\tKannada\n [\n 'x-mac-roman',\n 'shift-jis',\n 'big5',\n 'euc-kr',\n 'iso-8859-6',\n 'iso-8859-8',\n 'x-mac-greek',\n 'x-mac-cyrillic',\n 'x-mac-symbol',\n 'x-mac-devanagari',\n 'x-mac-gurmukhi',\n 'x-mac-gujarati',\n 'Oriya',\n 'Bengali',\n 'Tamil',\n 'Telugu',\n 'Kannada',\n 'Malayalam',\n 'Sinhalese',\n 'Burmese',\n 'Khmer',\n 'iso-8859-11',\n 'Laotian',\n 'Georgian',\n 'Armenian',\n 'gbk',\n 'Tibetan',\n 'Mongolian',\n 'Geez',\n 'x-mac-ce',\n 'Vietnamese',\n 'Sindhi'\n ],\n // ISO (deprecated)\n [\n 'ascii',\n null,\n 'iso-8859-1'\n ],\n // windows\n // Docs here: http://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs.110).aspx\n [\n 'symbol',\n 'utf-16be',\n 'shift-jis',\n 'gb18030',\n 'big5',\n 'euc-kr',\n 'johab',\n null,\n null,\n null,\n 'utf-16be'\n ]\n];\nconst $e449ad78d50845fe$export$479e671907f486d1 = {\n 15: 'x-mac-icelandic',\n 17: 'x-mac-turkish',\n 18: 'x-mac-croatian',\n 24: 'x-mac-ce',\n 25: 'x-mac-ce',\n 26: 'x-mac-ce',\n 27: 'x-mac-ce',\n 28: 'x-mac-ce',\n 30: 'x-mac-icelandic',\n 37: 'x-mac-romanian',\n 38: 'x-mac-ce',\n 39: 'x-mac-ce',\n 40: 'x-mac-ce',\n 143: 'x-mac-inuit',\n 146: 'x-mac-gaelic'\n};\nconst $e449ad78d50845fe$export$2092376fd002e13 = [\n // unicode\n [],\n {\n 0: 'en',\n 30: 'fo',\n 60: 'ks',\n 90: 'rw',\n 1: 'fr',\n 31: 'fa',\n 61: 'ku',\n 91: 'rn',\n 2: 'de',\n 32: 'ru',\n 62: 'sd',\n 92: 'ny',\n 3: 'it',\n 33: 'zh',\n 63: 'bo',\n 93: 'mg',\n 4: 'nl',\n 34: 'nl-BE',\n 64: 'ne',\n 94: 'eo',\n 5: 'sv',\n 35: 'ga',\n 65: 'sa',\n 128: 'cy',\n 6: 'es',\n 36: 'sq',\n 66: 'mr',\n 129: 'eu',\n 7: 'da',\n 37: 'ro',\n 67: 'bn',\n 130: 'ca',\n 8: 'pt',\n 38: 'cz',\n 68: 'as',\n 131: 'la',\n 9: 'no',\n 39: 'sk',\n 69: 'gu',\n 132: 'qu',\n 10: 'he',\n 40: 'si',\n 70: 'pa',\n 133: 'gn',\n 11: 'ja',\n 41: 'yi',\n 71: 'or',\n 134: 'ay',\n 12: 'ar',\n 42: 'sr',\n 72: 'ml',\n 135: 'tt',\n 13: 'fi',\n 43: 'mk',\n 73: 'kn',\n 136: 'ug',\n 14: 'el',\n 44: 'bg',\n 74: 'ta',\n 137: 'dz',\n 15: 'is',\n 45: 'uk',\n 75: 'te',\n 138: 'jv',\n 16: 'mt',\n 46: 'be',\n 76: 'si',\n 139: 'su',\n 17: 'tr',\n 47: 'uz',\n 77: 'my',\n 140: 'gl',\n 18: 'hr',\n 48: 'kk',\n 78: 'km',\n 141: 'af',\n 19: 'zh-Hant',\n 49: 'az-Cyrl',\n 79: 'lo',\n 142: 'br',\n 20: 'ur',\n 50: 'az-Arab',\n 80: 'vi',\n 143: 'iu',\n 21: 'hi',\n 51: 'hy',\n 81: 'id',\n 144: 'gd',\n 22: 'th',\n 52: 'ka',\n 82: 'tl',\n 145: 'gv',\n 23: 'ko',\n 53: 'mo',\n 83: 'ms',\n 146: 'ga',\n 24: 'lt',\n 54: 'ky',\n 84: 'ms-Arab',\n 147: 'to',\n 25: 'pl',\n 55: 'tg',\n 85: 'am',\n 148: 'el-polyton',\n 26: 'hu',\n 56: 'tk',\n 86: 'ti',\n 149: 'kl',\n 27: 'es',\n 57: 'mn-CN',\n 87: 'om',\n 150: 'az',\n 28: 'lv',\n 58: 'mn',\n 88: 'so',\n 151: 'nn',\n 29: 'se',\n 59: 'ps',\n 89: 'sw'\n },\n // ISO (deprecated)\n [],\n {\n 0x0436: 'af',\n 0x4009: 'en-IN',\n 0x0487: 'rw',\n 0x0432: 'tn',\n 0x041C: 'sq',\n 0x1809: 'en-IE',\n 0x0441: 'sw',\n 0x045B: 'si',\n 0x0484: 'gsw',\n 0x2009: 'en-JM',\n 0x0457: 'kok',\n 0x041B: 'sk',\n 0x045E: 'am',\n 0x4409: 'en-MY',\n 0x0412: 'ko',\n 0x0424: 'sl',\n 0x1401: 'ar-DZ',\n 0x1409: 'en-NZ',\n 0x0440: 'ky',\n 0x2C0A: 'es-AR',\n 0x3C01: 'ar-BH',\n 0x3409: 'en-PH',\n 0x0454: 'lo',\n 0x400A: 'es-BO',\n 0x0C01: 'ar',\n 0x4809: 'en-SG',\n 0x0426: 'lv',\n 0x340A: 'es-CL',\n 0x0801: 'ar-IQ',\n 0x1C09: 'en-ZA',\n 0x0427: 'lt',\n 0x240A: 'es-CO',\n 0x2C01: 'ar-JO',\n 0x2C09: 'en-TT',\n 0x082E: 'dsb',\n 0x140A: 'es-CR',\n 0x3401: 'ar-KW',\n 0x0809: 'en-GB',\n 0x046E: 'lb',\n 0x1C0A: 'es-DO',\n 0x3001: 'ar-LB',\n 0x0409: 'en',\n 0x042F: 'mk',\n 0x300A: 'es-EC',\n 0x1001: 'ar-LY',\n 0x3009: 'en-ZW',\n 0x083E: 'ms-BN',\n 0x440A: 'es-SV',\n 0x1801: 'ary',\n 0x0425: 'et',\n 0x043E: 'ms',\n 0x100A: 'es-GT',\n 0x2001: 'ar-OM',\n 0x0438: 'fo',\n 0x044C: 'ml',\n 0x480A: 'es-HN',\n 0x4001: 'ar-QA',\n 0x0464: 'fil',\n 0x043A: 'mt',\n 0x080A: 'es-MX',\n 0x0401: 'ar-SA',\n 0x040B: 'fi',\n 0x0481: 'mi',\n 0x4C0A: 'es-NI',\n 0x2801: 'ar-SY',\n 0x080C: 'fr-BE',\n 0x047A: 'arn',\n 0x180A: 'es-PA',\n 0x1C01: 'aeb',\n 0x0C0C: 'fr-CA',\n 0x044E: 'mr',\n 0x3C0A: 'es-PY',\n 0x3801: 'ar-AE',\n 0x040C: 'fr',\n 0x047C: 'moh',\n 0x280A: 'es-PE',\n 0x2401: 'ar-YE',\n 0x140C: 'fr-LU',\n 0x0450: 'mn',\n 0x500A: 'es-PR',\n 0x042B: 'hy',\n 0x180C: 'fr-MC',\n 0x0850: 'mn-CN',\n 0x0C0A: 'es',\n 0x044D: 'as',\n 0x100C: 'fr-CH',\n 0x0461: 'ne',\n 0x040A: 'es',\n 0x082C: 'az-Cyrl',\n 0x0462: 'fy',\n 0x0414: 'nb',\n 0x540A: 'es-US',\n 0x042C: 'az',\n 0x0456: 'gl',\n 0x0814: 'nn',\n 0x380A: 'es-UY',\n 0x046D: 'ba',\n 0x0437: 'ka',\n 0x0482: 'oc',\n 0x200A: 'es-VE',\n 0x042D: 'eu',\n 0x0C07: 'de-AT',\n 0x0448: 'or',\n 0x081D: 'sv-FI',\n 0x0423: 'be',\n 0x0407: 'de',\n 0x0463: 'ps',\n 0x041D: 'sv',\n 0x0845: 'bn',\n 0x1407: 'de-LI',\n 0x0415: 'pl',\n 0x045A: 'syr',\n 0x0445: 'bn-IN',\n 0x1007: 'de-LU',\n 0x0416: 'pt',\n 0x0428: 'tg',\n 0x201A: 'bs-Cyrl',\n 0x0807: 'de-CH',\n 0x0816: 'pt-PT',\n 0x085F: 'tzm',\n 0x141A: 'bs',\n 0x0408: 'el',\n 0x0446: 'pa',\n 0x0449: 'ta',\n 0x047E: 'br',\n 0x046F: 'kl',\n 0x046B: 'qu-BO',\n 0x0444: 'tt',\n 0x0402: 'bg',\n 0x0447: 'gu',\n 0x086B: 'qu-EC',\n 0x044A: 'te',\n 0x0403: 'ca',\n 0x0468: 'ha',\n 0x0C6B: 'qu',\n 0x041E: 'th',\n 0x0C04: 'zh-HK',\n 0x040D: 'he',\n 0x0418: 'ro',\n 0x0451: 'bo',\n 0x1404: 'zh-MO',\n 0x0439: 'hi',\n 0x0417: 'rm',\n 0x041F: 'tr',\n 0x0804: 'zh',\n 0x040E: 'hu',\n 0x0419: 'ru',\n 0x0442: 'tk',\n 0x1004: 'zh-SG',\n 0x040F: 'is',\n 0x243B: 'smn',\n 0x0480: 'ug',\n 0x0404: 'zh-TW',\n 0x0470: 'ig',\n 0x103B: 'smj-NO',\n 0x0422: 'uk',\n 0x0483: 'co',\n 0x0421: 'id',\n 0x143B: 'smj',\n 0x042E: 'hsb',\n 0x041A: 'hr',\n 0x045D: 'iu',\n 0x0C3B: 'se-FI',\n 0x0420: 'ur',\n 0x101A: 'hr-BA',\n 0x085D: 'iu-Latn',\n 0x043B: 'se',\n 0x0843: 'uz-Cyrl',\n 0x0405: 'cs',\n 0x083C: 'ga',\n 0x083B: 'se-SE',\n 0x0443: 'uz',\n 0x0406: 'da',\n 0x0434: 'xh',\n 0x203B: 'sms',\n 0x042A: 'vi',\n 0x048C: 'prs',\n 0x0435: 'zu',\n 0x183B: 'sma-NO',\n 0x0452: 'cy',\n 0x0465: 'dv',\n 0x0410: 'it',\n 0x1C3B: 'sms',\n 0x0488: 'wo',\n 0x0813: 'nl-BE',\n 0x0810: 'it-CH',\n 0x044F: 'sa',\n 0x0485: 'sah',\n 0x0413: 'nl',\n 0x0411: 'ja',\n 0x1C1A: 'sr-Cyrl-BA',\n 0x0478: 'ii',\n 0x0C09: 'en-AU',\n 0x044B: 'kn',\n 0x0C1A: 'sr',\n 0x046A: 'yo',\n 0x2809: 'en-BZ',\n 0x043F: 'kk',\n 0x181A: 'sr-Latn-BA',\n 0x1009: 'en-CA',\n 0x0453: 'km',\n 0x081A: 'sr-Latn',\n 0x2409: 'en-029',\n 0x0486: 'quc',\n 0x046C: 'nso'\n }\n];\n\n\nlet $2bcf221753ec8e32$var$NameRecord = new $6uUbQ$Struct({\n platformID: $6uUbQ$uint16,\n encodingID: $6uUbQ$uint16,\n languageID: $6uUbQ$uint16,\n nameID: $6uUbQ$uint16,\n length: $6uUbQ$uint16,\n string: new $6uUbQ$Pointer($6uUbQ$uint16, new $6uUbQ$String('length', (t)=>(0, $e449ad78d50845fe$export$badc544e0651b6b1)(t.platformID, t.encodingID, t.languageID)), {\n type: 'parent',\n relativeTo: (ctx)=>ctx.parent.stringOffset,\n allowNull: false\n })\n});\nlet $2bcf221753ec8e32$var$LangTagRecord = new $6uUbQ$Struct({\n length: $6uUbQ$uint16,\n tag: new $6uUbQ$Pointer($6uUbQ$uint16, new $6uUbQ$String('length', 'utf16be'), {\n type: 'parent',\n relativeTo: (ctx)=>ctx.stringOffset\n })\n});\nvar $2bcf221753ec8e32$var$NameTable = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 0: {\n count: $6uUbQ$uint16,\n stringOffset: $6uUbQ$uint16,\n records: new $6uUbQ$Array($2bcf221753ec8e32$var$NameRecord, 'count')\n },\n 1: {\n count: $6uUbQ$uint16,\n stringOffset: $6uUbQ$uint16,\n records: new $6uUbQ$Array($2bcf221753ec8e32$var$NameRecord, 'count'),\n langTagCount: $6uUbQ$uint16,\n langTags: new $6uUbQ$Array($2bcf221753ec8e32$var$LangTagRecord, 'langTagCount')\n }\n});\nvar $2bcf221753ec8e32$export$2e2bcd8739ae039 = $2bcf221753ec8e32$var$NameTable;\nconst $2bcf221753ec8e32$var$NAMES = [\n 'copyright',\n 'fontFamily',\n 'fontSubfamily',\n 'uniqueSubfamily',\n 'fullName',\n 'version',\n 'postscriptName',\n 'trademark',\n 'manufacturer',\n 'designer',\n 'description',\n 'vendorURL',\n 'designerURL',\n 'license',\n 'licenseURL',\n null,\n 'preferredFamily',\n 'preferredSubfamily',\n 'compatibleFull',\n 'sampleText',\n 'postscriptCIDFontName',\n 'wwsFamilyName',\n 'wwsSubfamilyName'\n];\n$2bcf221753ec8e32$var$NameTable.process = function(stream) {\n var records = {};\n for (let record of this.records){\n // find out what language this is for\n let language = (0, $e449ad78d50845fe$export$2092376fd002e13)[record.platformID][record.languageID];\n if (language == null && this.langTags != null && record.languageID >= 0x8000) language = this.langTags[record.languageID - 0x8000].tag;\n if (language == null) language = record.platformID + '-' + record.languageID;\n // if the nameID is >= 256, it is a font feature record (AAT)\n let key = record.nameID >= 256 ? 'fontFeatures' : $2bcf221753ec8e32$var$NAMES[record.nameID] || record.nameID;\n if (records[key] == null) records[key] = {};\n let obj = records[key];\n if (record.nameID >= 256) obj = obj[record.nameID] || (obj[record.nameID] = {});\n if (typeof record.string === 'string' || typeof obj[language] !== 'string') obj[language] = record.string;\n }\n this.records = records;\n};\n$2bcf221753ec8e32$var$NameTable.preEncode = function() {\n if (Array.isArray(this.records)) return;\n this.version = 0;\n let records = [];\n for(let key in this.records){\n let val = this.records[key];\n if (key === 'fontFeatures') continue;\n records.push({\n platformID: 3,\n encodingID: 1,\n languageID: 0x409,\n nameID: $2bcf221753ec8e32$var$NAMES.indexOf(key),\n length: val.en.length * 2,\n string: val.en\n });\n if (key === 'postscriptName') records.push({\n platformID: 1,\n encodingID: 0,\n languageID: 0,\n nameID: $2bcf221753ec8e32$var$NAMES.indexOf(key),\n length: val.en.length,\n string: val.en\n });\n }\n this.records = records;\n this.count = records.length;\n this.stringOffset = $2bcf221753ec8e32$var$NameTable.size(this, null, false);\n};\n\n\n\nvar $84b272aa31b70606$var$OS2 = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n header: {\n xAvgCharWidth: $6uUbQ$int16,\n usWeightClass: $6uUbQ$uint16,\n usWidthClass: $6uUbQ$uint16,\n fsType: new $6uUbQ$Bitfield($6uUbQ$uint16, [\n null,\n 'noEmbedding',\n 'viewOnly',\n 'editable',\n null,\n null,\n null,\n null,\n 'noSubsetting',\n 'bitmapOnly'\n ]),\n ySubscriptXSize: $6uUbQ$int16,\n ySubscriptYSize: $6uUbQ$int16,\n ySubscriptXOffset: $6uUbQ$int16,\n ySubscriptYOffset: $6uUbQ$int16,\n ySuperscriptXSize: $6uUbQ$int16,\n ySuperscriptYSize: $6uUbQ$int16,\n ySuperscriptXOffset: $6uUbQ$int16,\n ySuperscriptYOffset: $6uUbQ$int16,\n yStrikeoutSize: $6uUbQ$int16,\n yStrikeoutPosition: $6uUbQ$int16,\n sFamilyClass: $6uUbQ$int16,\n panose: new $6uUbQ$Array($6uUbQ$uint8, 10),\n ulCharRange: new $6uUbQ$Array($6uUbQ$uint32, 4),\n vendorID: new $6uUbQ$String(4),\n fsSelection: new $6uUbQ$Bitfield($6uUbQ$uint16, [\n 'italic',\n 'underscore',\n 'negative',\n 'outlined',\n 'strikeout',\n 'bold',\n 'regular',\n 'useTypoMetrics',\n 'wws',\n 'oblique'\n ]),\n usFirstCharIndex: $6uUbQ$uint16,\n usLastCharIndex: $6uUbQ$uint16 // The maximum Unicode index in this font\n },\n // The Apple version of this table ends here, but the Microsoft one continues on...\n 0: {},\n 1: {\n typoAscender: $6uUbQ$int16,\n typoDescender: $6uUbQ$int16,\n typoLineGap: $6uUbQ$int16,\n winAscent: $6uUbQ$uint16,\n winDescent: $6uUbQ$uint16,\n codePageRange: new $6uUbQ$Array($6uUbQ$uint32, 2)\n },\n 2: {\n // these should be common with version 1 somehow\n typoAscender: $6uUbQ$int16,\n typoDescender: $6uUbQ$int16,\n typoLineGap: $6uUbQ$int16,\n winAscent: $6uUbQ$uint16,\n winDescent: $6uUbQ$uint16,\n codePageRange: new $6uUbQ$Array($6uUbQ$uint32, 2),\n xHeight: $6uUbQ$int16,\n capHeight: $6uUbQ$int16,\n defaultChar: $6uUbQ$uint16,\n breakChar: $6uUbQ$uint16,\n maxContent: $6uUbQ$uint16\n },\n 5: {\n typoAscender: $6uUbQ$int16,\n typoDescender: $6uUbQ$int16,\n typoLineGap: $6uUbQ$int16,\n winAscent: $6uUbQ$uint16,\n winDescent: $6uUbQ$uint16,\n codePageRange: new $6uUbQ$Array($6uUbQ$uint32, 2),\n xHeight: $6uUbQ$int16,\n capHeight: $6uUbQ$int16,\n defaultChar: $6uUbQ$uint16,\n breakChar: $6uUbQ$uint16,\n maxContent: $6uUbQ$uint16,\n usLowerOpticalPointSize: $6uUbQ$uint16,\n usUpperOpticalPointSize: $6uUbQ$uint16\n }\n});\nlet $84b272aa31b70606$var$versions = $84b272aa31b70606$var$OS2.versions;\n$84b272aa31b70606$var$versions[3] = $84b272aa31b70606$var$versions[4] = $84b272aa31b70606$var$versions[2];\nvar $84b272aa31b70606$export$2e2bcd8739ae039 = $84b272aa31b70606$var$OS2;\n\n\n\nvar // PostScript information\n$32d9e2eb9565d93c$export$2e2bcd8739ae039 = new $6uUbQ$VersionedStruct($6uUbQ$fixed32, {\n header: {\n italicAngle: $6uUbQ$fixed32,\n underlinePosition: $6uUbQ$int16,\n underlineThickness: $6uUbQ$int16,\n isFixedPitch: $6uUbQ$uint32,\n minMemType42: $6uUbQ$uint32,\n maxMemType42: $6uUbQ$uint32,\n minMemType1: $6uUbQ$uint32,\n maxMemType1: $6uUbQ$uint32 // Maximum memory usage when a TrueType font is downloaded as a Type 1 font\n },\n 1: {},\n 2: {\n numberOfGlyphs: $6uUbQ$uint16,\n glyphNameIndex: new $6uUbQ$Array($6uUbQ$uint16, 'numberOfGlyphs'),\n names: new $6uUbQ$Array(new $6uUbQ$String($6uUbQ$uint8))\n },\n 2.5: {\n numberOfGlyphs: $6uUbQ$uint16,\n offsets: new $6uUbQ$Array($6uUbQ$uint8, 'numberOfGlyphs')\n },\n 3: {},\n 4: {\n map: new $6uUbQ$Array($6uUbQ$uint32, (t)=>t.parent.maxp.numGlyphs)\n }\n});\n\n\n\nvar // An array of predefined values accessible by instructions\n$5202bd9d9ad8eaac$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n controlValues: new $6uUbQ$Array($6uUbQ$int16)\n});\n\n\n\nvar // A list of instructions that are executed once when a font is first used.\n// These instructions are known as the font program. The main use of this table\n// is for the definition of functions that are used in many different glyph programs.\n$5c0f37ca5ffb1850$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n instructions: new $6uUbQ$Array($6uUbQ$uint8)\n});\n\n\n\nlet $2b2b260902b1c57e$var$loca = new $6uUbQ$VersionedStruct('head.indexToLocFormat', {\n 0: {\n offsets: new $6uUbQ$Array($6uUbQ$uint16)\n },\n 1: {\n offsets: new $6uUbQ$Array($6uUbQ$uint32)\n }\n});\n$2b2b260902b1c57e$var$loca.process = function() {\n if (this.version === 0 && !this._processed) {\n for(let i = 0; i < this.offsets.length; i++)this.offsets[i] <<= 1;\n this._processed = true;\n }\n};\n$2b2b260902b1c57e$var$loca.preEncode = function() {\n if (this.version === 0 && this._processed !== false) {\n for(let i = 0; i < this.offsets.length; i++)this.offsets[i] >>>= 1;\n this._processed = false;\n }\n};\nvar $2b2b260902b1c57e$export$2e2bcd8739ae039 = $2b2b260902b1c57e$var$loca;\n\n\n\nvar // Set of instructions executed whenever the point size or font transformation change\n$7afb878c7bea4f66$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n controlValueProgram: new $6uUbQ$Array($6uUbQ$uint8)\n});\n\n\n\nvar // only used for encoding\n$6c92b6371bce8bd9$export$2e2bcd8739ae039 = new $6uUbQ$Array(new $6uUbQ$Buffer);\n\n\n\n\nclass $43e9821ef3717eec$export$2e2bcd8739ae039 {\n getCFFVersion(ctx) {\n while(ctx && !ctx.hdrSize)ctx = ctx.parent;\n return ctx ? ctx.version : -1;\n }\n decode(stream, parent) {\n let version = this.getCFFVersion(parent);\n let count = version >= 2 ? stream.readUInt32BE() : stream.readUInt16BE();\n if (count === 0) return [];\n let offSize = stream.readUInt8();\n let offsetType;\n if (offSize === 1) offsetType = $6uUbQ$uint8;\n else if (offSize === 2) offsetType = $6uUbQ$uint16;\n else if (offSize === 3) offsetType = $6uUbQ$uint24;\n else if (offSize === 4) offsetType = $6uUbQ$uint32;\n else throw new Error(`Bad offset size in CFFIndex: ${offSize} ${stream.pos}`);\n let ret = [];\n let startPos = stream.pos + (count + 1) * offSize - 1;\n let start = offsetType.decode(stream);\n for(let i = 0; i < count; i++){\n let end = offsetType.decode(stream);\n if (this.type != null) {\n let pos = stream.pos;\n stream.pos = startPos + start;\n parent.length = end - start;\n ret.push(this.type.decode(stream, parent));\n stream.pos = pos;\n } else ret.push({\n offset: startPos + start,\n length: end - start\n });\n start = end;\n }\n stream.pos = startPos + start;\n return ret;\n }\n size(arr, parent) {\n let size = 2;\n if (arr.length === 0) return size;\n let type = this.type || new $6uUbQ$Buffer;\n // find maximum offset to detminine offset type\n let offset = 1;\n for(let i = 0; i < arr.length; i++){\n let item = arr[i];\n offset += type.size(item, parent);\n }\n let offsetType;\n if (offset <= 0xff) offsetType = $6uUbQ$uint8;\n else if (offset <= 0xffff) offsetType = $6uUbQ$uint16;\n else if (offset <= 0xffffff) offsetType = $6uUbQ$uint24;\n else if (offset <= 0xffffffff) offsetType = $6uUbQ$uint32;\n else throw new Error(\"Bad offset in CFFIndex\");\n size += 1 + offsetType.size() * (arr.length + 1);\n size += offset - 1;\n return size;\n }\n encode(stream, arr, parent) {\n stream.writeUInt16BE(arr.length);\n if (arr.length === 0) return;\n let type = this.type || new $6uUbQ$Buffer;\n // find maximum offset to detminine offset type\n let sizes = [];\n let offset = 1;\n for (let item of arr){\n let s = type.size(item, parent);\n sizes.push(s);\n offset += s;\n }\n let offsetType;\n if (offset <= 0xff) offsetType = $6uUbQ$uint8;\n else if (offset <= 0xffff) offsetType = $6uUbQ$uint16;\n else if (offset <= 0xffffff) offsetType = $6uUbQ$uint24;\n else if (offset <= 0xffffffff) offsetType = $6uUbQ$uint32;\n else throw new Error(\"Bad offset in CFFIndex\");\n // write offset size\n stream.writeUInt8(offsetType.size());\n // write elements\n offset = 1;\n offsetType.encode(stream, offset);\n for (let size of sizes){\n offset += size;\n offsetType.encode(stream, offset);\n }\n for (let item of arr)type.encode(stream, item, parent);\n return;\n }\n constructor(type){\n this.type = type;\n }\n}\n\n\n\n\n\nconst $c2d28e92708f99da$var$FLOAT_EOF = 0xf;\nconst $c2d28e92708f99da$var$FLOAT_LOOKUP = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n 'E',\n 'E-',\n null,\n '-'\n];\nconst $c2d28e92708f99da$var$FLOAT_ENCODE_LOOKUP = {\n '.': 10,\n 'E': 11,\n 'E-': 12,\n '-': 14\n};\nclass $c2d28e92708f99da$export$2e2bcd8739ae039 {\n static decode(stream, value) {\n if (32 <= value && value <= 246) return value - 139;\n if (247 <= value && value <= 250) return (value - 247) * 256 + stream.readUInt8() + 108;\n if (251 <= value && value <= 254) return -(value - 251) * 256 - stream.readUInt8() - 108;\n if (value === 28) return stream.readInt16BE();\n if (value === 29) return stream.readInt32BE();\n if (value === 30) {\n let str = '';\n while(true){\n let b = stream.readUInt8();\n let n1 = b >> 4;\n if (n1 === $c2d28e92708f99da$var$FLOAT_EOF) break;\n str += $c2d28e92708f99da$var$FLOAT_LOOKUP[n1];\n let n2 = b & 15;\n if (n2 === $c2d28e92708f99da$var$FLOAT_EOF) break;\n str += $c2d28e92708f99da$var$FLOAT_LOOKUP[n2];\n }\n return parseFloat(str);\n }\n return null;\n }\n static size(value) {\n // if the value needs to be forced to the largest size (32 bit)\n // e.g. for unknown pointers, set to 32768\n if (value.forceLarge) value = 32768;\n if ((value | 0) !== value) {\n let str = '' + value;\n return 1 + Math.ceil((str.length + 1) / 2);\n } else if (-107 <= value && value <= 107) return 1;\n else if (108 <= value && value <= 1131 || -1131 <= value && value <= -108) return 2;\n else if (-32768 <= value && value <= 32767) return 3;\n else return 5;\n }\n static encode(stream, value) {\n // if the value needs to be forced to the largest size (32 bit)\n // e.g. for unknown pointers, save the old value and set to 32768\n let val = Number(value);\n if (value.forceLarge) {\n stream.writeUInt8(29);\n return stream.writeInt32BE(val);\n } else if ((val | 0) !== val) {\n stream.writeUInt8(30);\n let str = '' + val;\n for(let i = 0; i < str.length; i += 2){\n let c1 = str[i];\n let n1 = $c2d28e92708f99da$var$FLOAT_ENCODE_LOOKUP[c1] || +c1;\n if (i === str.length - 1) var n2 = $c2d28e92708f99da$var$FLOAT_EOF;\n else {\n let c2 = str[i + 1];\n var n2 = $c2d28e92708f99da$var$FLOAT_ENCODE_LOOKUP[c2] || +c2;\n }\n stream.writeUInt8(n1 << 4 | n2 & 15);\n }\n if (n2 !== $c2d28e92708f99da$var$FLOAT_EOF) return stream.writeUInt8($c2d28e92708f99da$var$FLOAT_EOF << 4);\n } else if (-107 <= val && val <= 107) return stream.writeUInt8(val + 139);\n else if (108 <= val && val <= 1131) {\n val -= 108;\n stream.writeUInt8((val >> 8) + 247);\n return stream.writeUInt8(val & 0xff);\n } else if (-1131 <= val && val <= -108) {\n val = -val - 108;\n stream.writeUInt8((val >> 8) + 251);\n return stream.writeUInt8(val & 0xff);\n } else if (-32768 <= val && val <= 32767) {\n stream.writeUInt8(28);\n return stream.writeInt16BE(val);\n } else {\n stream.writeUInt8(29);\n return stream.writeInt32BE(val);\n }\n }\n}\n\n\nclass $61aa549f16d58b9b$export$2e2bcd8739ae039 {\n decodeOperands(type, stream, ret, operands) {\n if (Array.isArray(type)) return operands.map((op, i)=>this.decodeOperands(type[i], stream, ret, [\n op\n ]));\n else if (type.decode != null) return type.decode(stream, ret, operands);\n else switch(type){\n case 'number':\n case 'offset':\n case 'sid':\n return operands[0];\n case 'boolean':\n return !!operands[0];\n default:\n return operands;\n }\n }\n encodeOperands(type, stream, ctx, operands) {\n if (Array.isArray(type)) return operands.map((op, i)=>this.encodeOperands(type[i], stream, ctx, op)[0]);\n else if (type.encode != null) return type.encode(stream, operands, ctx);\n else if (typeof operands === 'number') return [\n operands\n ];\n else if (typeof operands === 'boolean') return [\n +operands\n ];\n else if (Array.isArray(operands)) return operands;\n else return [\n operands\n ];\n }\n decode(stream, parent) {\n let end = stream.pos + parent.length;\n let ret = {};\n let operands = [];\n // define hidden properties\n Object.defineProperties(ret, {\n parent: {\n value: parent\n },\n _startOffset: {\n value: stream.pos\n }\n });\n // fill in defaults\n for(let key in this.fields){\n let field = this.fields[key];\n ret[field[1]] = field[3];\n }\n while(stream.pos < end){\n let b = stream.readUInt8();\n if (b < 28) {\n if (b === 12) b = b << 8 | stream.readUInt8();\n let field = this.fields[b];\n if (!field) throw new Error(`Unknown operator ${b}`);\n let val = this.decodeOperands(field[2], stream, ret, operands);\n if (val != null) {\n if (val instanceof (0, $6uUbQ$PropertyDescriptor)) Object.defineProperty(ret, field[1], val);\n else ret[field[1]] = val;\n }\n operands = [];\n } else operands.push((0, $c2d28e92708f99da$export$2e2bcd8739ae039).decode(stream, b));\n }\n return ret;\n }\n size(dict, parent, includePointers = true) {\n let ctx = {\n parent: parent,\n val: dict,\n pointerSize: 0,\n startOffset: parent.startOffset || 0\n };\n let len = 0;\n for(let k in this.fields){\n let field = this.fields[k];\n let val = dict[field[1]];\n if (val == null || (0, $6uUbQ$fastdeepequal)(val, field[3])) continue;\n let operands = this.encodeOperands(field[2], null, ctx, val);\n for (let op of operands)len += (0, $c2d28e92708f99da$export$2e2bcd8739ae039).size(op);\n let key = Array.isArray(field[0]) ? field[0] : [\n field[0]\n ];\n len += key.length;\n }\n if (includePointers) len += ctx.pointerSize;\n return len;\n }\n encode(stream, dict, parent) {\n let ctx = {\n pointers: [],\n startOffset: stream.pos,\n parent: parent,\n val: dict,\n pointerSize: 0\n };\n ctx.pointerOffset = stream.pos + this.size(dict, ctx, false);\n for (let field of this.ops){\n let val = dict[field[1]];\n if (val == null || (0, $6uUbQ$fastdeepequal)(val, field[3])) continue;\n let operands = this.encodeOperands(field[2], stream, ctx, val);\n for (let op of operands)(0, $c2d28e92708f99da$export$2e2bcd8739ae039).encode(stream, op);\n let key = Array.isArray(field[0]) ? field[0] : [\n field[0]\n ];\n for (let op of key)stream.writeUInt8(op);\n }\n let i = 0;\n while(i < ctx.pointers.length){\n let ptr = ctx.pointers[i++];\n ptr.type.encode(stream, ptr.val, ptr.parent);\n }\n return;\n }\n constructor(ops = []){\n this.ops = ops;\n this.fields = {};\n for (let field of ops){\n let key = Array.isArray(field[0]) ? field[0][0] << 8 | field[0][1] : field[0];\n this.fields[key] = field;\n }\n }\n}\n\n\n\n\nclass $0e34a43d05bde82c$export$2e2bcd8739ae039 extends $6uUbQ$Pointer {\n decode(stream, parent, operands) {\n this.offsetType = {\n decode: ()=>operands[0]\n };\n return super.decode(stream, parent, operands);\n }\n encode(stream, value, ctx) {\n if (!stream) {\n // compute the size (so ctx.pointerSize is correct)\n this.offsetType = {\n size: ()=>0\n };\n this.size(value, ctx);\n return [\n new $0e34a43d05bde82c$var$Ptr(0)\n ];\n }\n let ptr = null;\n this.offsetType = {\n encode: (stream, val)=>ptr = val\n };\n super.encode(stream, value, ctx);\n return [\n new $0e34a43d05bde82c$var$Ptr(ptr)\n ];\n }\n constructor(type, options = {}){\n if (options.type == null) options.type = 'global';\n super(null, type, options);\n }\n}\nclass $0e34a43d05bde82c$var$Ptr {\n valueOf() {\n return this.val;\n }\n constructor(val){\n this.val = val;\n this.forceLarge = true;\n }\n}\n\n\n\n\n\nclass $6d59db2e29cc77b3$var$CFFBlendOp {\n static decode(stream, parent, operands) {\n let numBlends = operands.pop();\n // TODO: actually blend. For now just consume the deltas\n // since we don't use any of the values anyway.\n while(operands.length > numBlends)operands.pop();\n }\n}\nvar $6d59db2e29cc77b3$export$2e2bcd8739ae039 = new (0, $61aa549f16d58b9b$export$2e2bcd8739ae039)([\n // key name type default\n [\n 6,\n 'BlueValues',\n 'delta',\n null\n ],\n [\n 7,\n 'OtherBlues',\n 'delta',\n null\n ],\n [\n 8,\n 'FamilyBlues',\n 'delta',\n null\n ],\n [\n 9,\n 'FamilyOtherBlues',\n 'delta',\n null\n ],\n [\n [\n 12,\n 9\n ],\n 'BlueScale',\n 'number',\n 0.039625\n ],\n [\n [\n 12,\n 10\n ],\n 'BlueShift',\n 'number',\n 7\n ],\n [\n [\n 12,\n 11\n ],\n 'BlueFuzz',\n 'number',\n 1\n ],\n [\n 10,\n 'StdHW',\n 'number',\n null\n ],\n [\n 11,\n 'StdVW',\n 'number',\n null\n ],\n [\n [\n 12,\n 12\n ],\n 'StemSnapH',\n 'delta',\n null\n ],\n [\n [\n 12,\n 13\n ],\n 'StemSnapV',\n 'delta',\n null\n ],\n [\n [\n 12,\n 14\n ],\n 'ForceBold',\n 'boolean',\n false\n ],\n [\n [\n 12,\n 17\n ],\n 'LanguageGroup',\n 'number',\n 0\n ],\n [\n [\n 12,\n 18\n ],\n 'ExpansionFactor',\n 'number',\n 0.06\n ],\n [\n [\n 12,\n 19\n ],\n 'initialRandomSeed',\n 'number',\n 0\n ],\n [\n 20,\n 'defaultWidthX',\n 'number',\n 0\n ],\n [\n 21,\n 'nominalWidthX',\n 'number',\n 0\n ],\n [\n 22,\n 'vsindex',\n 'number',\n 0\n ],\n [\n 23,\n 'blend',\n $6d59db2e29cc77b3$var$CFFBlendOp,\n null\n ],\n [\n 19,\n 'Subrs',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)(new (0, $43e9821ef3717eec$export$2e2bcd8739ae039), {\n type: 'local'\n }),\n null\n ]\n]);\n\n\n// Automatically generated from Appendix A of the CFF specification; do\n// not edit. Length should be 391.\nvar $229224aec43783c5$export$2e2bcd8739ae039 = [\n \".notdef\",\n \"space\",\n \"exclam\",\n \"quotedbl\",\n \"numbersign\",\n \"dollar\",\n \"percent\",\n \"ampersand\",\n \"quoteright\",\n \"parenleft\",\n \"parenright\",\n \"asterisk\",\n \"plus\",\n \"comma\",\n \"hyphen\",\n \"period\",\n \"slash\",\n \"zero\",\n \"one\",\n \"two\",\n \"three\",\n \"four\",\n \"five\",\n \"six\",\n \"seven\",\n \"eight\",\n \"nine\",\n \"colon\",\n \"semicolon\",\n \"less\",\n \"equal\",\n \"greater\",\n \"question\",\n \"at\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"bracketleft\",\n \"backslash\",\n \"bracketright\",\n \"asciicircum\",\n \"underscore\",\n \"quoteleft\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"braceleft\",\n \"bar\",\n \"braceright\",\n \"asciitilde\",\n \"exclamdown\",\n \"cent\",\n \"sterling\",\n \"fraction\",\n \"yen\",\n \"florin\",\n \"section\",\n \"currency\",\n \"quotesingle\",\n \"quotedblleft\",\n \"guillemotleft\",\n \"guilsinglleft\",\n \"guilsinglright\",\n \"fi\",\n \"fl\",\n \"endash\",\n \"dagger\",\n \"daggerdbl\",\n \"periodcentered\",\n \"paragraph\",\n \"bullet\",\n \"quotesinglbase\",\n \"quotedblbase\",\n \"quotedblright\",\n \"guillemotright\",\n \"ellipsis\",\n \"perthousand\",\n \"questiondown\",\n \"grave\",\n \"acute\",\n \"circumflex\",\n \"tilde\",\n \"macron\",\n \"breve\",\n \"dotaccent\",\n \"dieresis\",\n \"ring\",\n \"cedilla\",\n \"hungarumlaut\",\n \"ogonek\",\n \"caron\",\n \"emdash\",\n \"AE\",\n \"ordfeminine\",\n \"Lslash\",\n \"Oslash\",\n \"OE\",\n \"ordmasculine\",\n \"ae\",\n \"dotlessi\",\n \"lslash\",\n \"oslash\",\n \"oe\",\n \"germandbls\",\n \"onesuperior\",\n \"logicalnot\",\n \"mu\",\n \"trademark\",\n \"Eth\",\n \"onehalf\",\n \"plusminus\",\n \"Thorn\",\n \"onequarter\",\n \"divide\",\n \"brokenbar\",\n \"degree\",\n \"thorn\",\n \"threequarters\",\n \"twosuperior\",\n \"registered\",\n \"minus\",\n \"eth\",\n \"multiply\",\n \"threesuperior\",\n \"copyright\",\n \"Aacute\",\n \"Acircumflex\",\n \"Adieresis\",\n \"Agrave\",\n \"Aring\",\n \"Atilde\",\n \"Ccedilla\",\n \"Eacute\",\n \"Ecircumflex\",\n \"Edieresis\",\n \"Egrave\",\n \"Iacute\",\n \"Icircumflex\",\n \"Idieresis\",\n \"Igrave\",\n \"Ntilde\",\n \"Oacute\",\n \"Ocircumflex\",\n \"Odieresis\",\n \"Ograve\",\n \"Otilde\",\n \"Scaron\",\n \"Uacute\",\n \"Ucircumflex\",\n \"Udieresis\",\n \"Ugrave\",\n \"Yacute\",\n \"Ydieresis\",\n \"Zcaron\",\n \"aacute\",\n \"acircumflex\",\n \"adieresis\",\n \"agrave\",\n \"aring\",\n \"atilde\",\n \"ccedilla\",\n \"eacute\",\n \"ecircumflex\",\n \"edieresis\",\n \"egrave\",\n \"iacute\",\n \"icircumflex\",\n \"idieresis\",\n \"igrave\",\n \"ntilde\",\n \"oacute\",\n \"ocircumflex\",\n \"odieresis\",\n \"ograve\",\n \"otilde\",\n \"scaron\",\n \"uacute\",\n \"ucircumflex\",\n \"udieresis\",\n \"ugrave\",\n \"yacute\",\n \"ydieresis\",\n \"zcaron\",\n \"exclamsmall\",\n \"Hungarumlautsmall\",\n \"dollaroldstyle\",\n \"dollarsuperior\",\n \"ampersandsmall\",\n \"Acutesmall\",\n \"parenleftsuperior\",\n \"parenrightsuperior\",\n \"twodotenleader\",\n \"onedotenleader\",\n \"zerooldstyle\",\n \"oneoldstyle\",\n \"twooldstyle\",\n \"threeoldstyle\",\n \"fouroldstyle\",\n \"fiveoldstyle\",\n \"sixoldstyle\",\n \"sevenoldstyle\",\n \"eightoldstyle\",\n \"nineoldstyle\",\n \"commasuperior\",\n \"threequartersemdash\",\n \"periodsuperior\",\n \"questionsmall\",\n \"asuperior\",\n \"bsuperior\",\n \"centsuperior\",\n \"dsuperior\",\n \"esuperior\",\n \"isuperior\",\n \"lsuperior\",\n \"msuperior\",\n \"nsuperior\",\n \"osuperior\",\n \"rsuperior\",\n \"ssuperior\",\n \"tsuperior\",\n \"ff\",\n \"ffi\",\n \"ffl\",\n \"parenleftinferior\",\n \"parenrightinferior\",\n \"Circumflexsmall\",\n \"hyphensuperior\",\n \"Gravesmall\",\n \"Asmall\",\n \"Bsmall\",\n \"Csmall\",\n \"Dsmall\",\n \"Esmall\",\n \"Fsmall\",\n \"Gsmall\",\n \"Hsmall\",\n \"Ismall\",\n \"Jsmall\",\n \"Ksmall\",\n \"Lsmall\",\n \"Msmall\",\n \"Nsmall\",\n \"Osmall\",\n \"Psmall\",\n \"Qsmall\",\n \"Rsmall\",\n \"Ssmall\",\n \"Tsmall\",\n \"Usmall\",\n \"Vsmall\",\n \"Wsmall\",\n \"Xsmall\",\n \"Ysmall\",\n \"Zsmall\",\n \"colonmonetary\",\n \"onefitted\",\n \"rupiah\",\n \"Tildesmall\",\n \"exclamdownsmall\",\n \"centoldstyle\",\n \"Lslashsmall\",\n \"Scaronsmall\",\n \"Zcaronsmall\",\n \"Dieresissmall\",\n \"Brevesmall\",\n \"Caronsmall\",\n \"Dotaccentsmall\",\n \"Macronsmall\",\n \"figuredash\",\n \"hypheninferior\",\n \"Ogoneksmall\",\n \"Ringsmall\",\n \"Cedillasmall\",\n \"questiondownsmall\",\n \"oneeighth\",\n \"threeeighths\",\n \"fiveeighths\",\n \"seveneighths\",\n \"onethird\",\n \"twothirds\",\n \"zerosuperior\",\n \"foursuperior\",\n \"fivesuperior\",\n \"sixsuperior\",\n \"sevensuperior\",\n \"eightsuperior\",\n \"ninesuperior\",\n \"zeroinferior\",\n \"oneinferior\",\n \"twoinferior\",\n \"threeinferior\",\n \"fourinferior\",\n \"fiveinferior\",\n \"sixinferior\",\n \"seveninferior\",\n \"eightinferior\",\n \"nineinferior\",\n \"centinferior\",\n \"dollarinferior\",\n \"periodinferior\",\n \"commainferior\",\n \"Agravesmall\",\n \"Aacutesmall\",\n \"Acircumflexsmall\",\n \"Atildesmall\",\n \"Adieresissmall\",\n \"Aringsmall\",\n \"AEsmall\",\n \"Ccedillasmall\",\n \"Egravesmall\",\n \"Eacutesmall\",\n \"Ecircumflexsmall\",\n \"Edieresissmall\",\n \"Igravesmall\",\n \"Iacutesmall\",\n \"Icircumflexsmall\",\n \"Idieresissmall\",\n \"Ethsmall\",\n \"Ntildesmall\",\n \"Ogravesmall\",\n \"Oacutesmall\",\n \"Ocircumflexsmall\",\n \"Otildesmall\",\n \"Odieresissmall\",\n \"OEsmall\",\n \"Oslashsmall\",\n \"Ugravesmall\",\n \"Uacutesmall\",\n \"Ucircumflexsmall\",\n \"Udieresissmall\",\n \"Yacutesmall\",\n \"Thornsmall\",\n \"Ydieresissmall\",\n \"001.000\",\n \"001.001\",\n \"001.002\",\n \"001.003\",\n \"Black\",\n \"Bold\",\n \"Book\",\n \"Light\",\n \"Medium\",\n \"Regular\",\n \"Roman\",\n \"Semibold\"\n];\n\n\nlet $bc0433d9b7e41f5f$export$dee0027060fa13bd = [\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'space',\n 'exclam',\n 'quotedbl',\n 'numbersign',\n 'dollar',\n 'percent',\n 'ampersand',\n 'quoteright',\n 'parenleft',\n 'parenright',\n 'asterisk',\n 'plus',\n 'comma',\n 'hyphen',\n 'period',\n 'slash',\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'colon',\n 'semicolon',\n 'less',\n 'equal',\n 'greater',\n 'question',\n 'at',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'bracketleft',\n 'backslash',\n 'bracketright',\n 'asciicircum',\n 'underscore',\n 'quoteleft',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n 'braceleft',\n 'bar',\n 'braceright',\n 'asciitilde',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'exclamdown',\n 'cent',\n 'sterling',\n 'fraction',\n 'yen',\n 'florin',\n 'section',\n 'currency',\n 'quotesingle',\n 'quotedblleft',\n 'guillemotleft',\n 'guilsinglleft',\n 'guilsinglright',\n 'fi',\n 'fl',\n '',\n 'endash',\n 'dagger',\n 'daggerdbl',\n 'periodcentered',\n '',\n 'paragraph',\n 'bullet',\n 'quotesinglbase',\n 'quotedblbase',\n 'quotedblright',\n 'guillemotright',\n 'ellipsis',\n 'perthousand',\n '',\n 'questiondown',\n '',\n 'grave',\n 'acute',\n 'circumflex',\n 'tilde',\n 'macron',\n 'breve',\n 'dotaccent',\n 'dieresis',\n '',\n 'ring',\n 'cedilla',\n '',\n 'hungarumlaut',\n 'ogonek',\n 'caron',\n 'emdash',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'AE',\n '',\n 'ordfeminine',\n '',\n '',\n '',\n '',\n 'Lslash',\n 'Oslash',\n 'OE',\n 'ordmasculine',\n '',\n '',\n '',\n '',\n '',\n 'ae',\n '',\n '',\n '',\n 'dotlessi',\n '',\n '',\n 'lslash',\n 'oslash',\n 'oe',\n 'germandbls'\n];\nlet $bc0433d9b7e41f5f$export$4f58f497e14a53c3 = [\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'space',\n 'exclamsmall',\n 'Hungarumlautsmall',\n '',\n 'dollaroldstyle',\n 'dollarsuperior',\n 'ampersandsmall',\n 'Acutesmall',\n 'parenleftsuperior',\n 'parenrightsuperior',\n 'twodotenleader',\n 'onedotenleader',\n 'comma',\n 'hyphen',\n 'period',\n 'fraction',\n 'zerooldstyle',\n 'oneoldstyle',\n 'twooldstyle',\n 'threeoldstyle',\n 'fouroldstyle',\n 'fiveoldstyle',\n 'sixoldstyle',\n 'sevenoldstyle',\n 'eightoldstyle',\n 'nineoldstyle',\n 'colon',\n 'semicolon',\n 'commasuperior',\n 'threequartersemdash',\n 'periodsuperior',\n 'questionsmall',\n '',\n 'asuperior',\n 'bsuperior',\n 'centsuperior',\n 'dsuperior',\n 'esuperior',\n '',\n '',\n 'isuperior',\n '',\n '',\n 'lsuperior',\n 'msuperior',\n 'nsuperior',\n 'osuperior',\n '',\n '',\n 'rsuperior',\n 'ssuperior',\n 'tsuperior',\n '',\n 'ff',\n 'fi',\n 'fl',\n 'ffi',\n 'ffl',\n 'parenleftinferior',\n '',\n 'parenrightinferior',\n 'Circumflexsmall',\n 'hyphensuperior',\n 'Gravesmall',\n 'Asmall',\n 'Bsmall',\n 'Csmall',\n 'Dsmall',\n 'Esmall',\n 'Fsmall',\n 'Gsmall',\n 'Hsmall',\n 'Ismall',\n 'Jsmall',\n 'Ksmall',\n 'Lsmall',\n 'Msmall',\n 'Nsmall',\n 'Osmall',\n 'Psmall',\n 'Qsmall',\n 'Rsmall',\n 'Ssmall',\n 'Tsmall',\n 'Usmall',\n 'Vsmall',\n 'Wsmall',\n 'Xsmall',\n 'Ysmall',\n 'Zsmall',\n 'colonmonetary',\n 'onefitted',\n 'rupiah',\n 'Tildesmall',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'exclamdownsmall',\n 'centoldstyle',\n 'Lslashsmall',\n '',\n '',\n 'Scaronsmall',\n 'Zcaronsmall',\n 'Dieresissmall',\n 'Brevesmall',\n 'Caronsmall',\n '',\n 'Dotaccentsmall',\n '',\n '',\n 'Macronsmall',\n '',\n '',\n 'figuredash',\n 'hypheninferior',\n '',\n '',\n 'Ogoneksmall',\n 'Ringsmall',\n 'Cedillasmall',\n '',\n '',\n '',\n 'onequarter',\n 'onehalf',\n 'threequarters',\n 'questiondownsmall',\n 'oneeighth',\n 'threeeighths',\n 'fiveeighths',\n 'seveneighths',\n 'onethird',\n 'twothirds',\n '',\n '',\n 'zerosuperior',\n 'onesuperior',\n 'twosuperior',\n 'threesuperior',\n 'foursuperior',\n 'fivesuperior',\n 'sixsuperior',\n 'sevensuperior',\n 'eightsuperior',\n 'ninesuperior',\n 'zeroinferior',\n 'oneinferior',\n 'twoinferior',\n 'threeinferior',\n 'fourinferior',\n 'fiveinferior',\n 'sixinferior',\n 'seveninferior',\n 'eightinferior',\n 'nineinferior',\n 'centinferior',\n 'dollarinferior',\n 'periodinferior',\n 'commainferior',\n 'Agravesmall',\n 'Aacutesmall',\n 'Acircumflexsmall',\n 'Atildesmall',\n 'Adieresissmall',\n 'Aringsmall',\n 'AEsmall',\n 'Ccedillasmall',\n 'Egravesmall',\n 'Eacutesmall',\n 'Ecircumflexsmall',\n 'Edieresissmall',\n 'Igravesmall',\n 'Iacutesmall',\n 'Icircumflexsmall',\n 'Idieresissmall',\n 'Ethsmall',\n 'Ntildesmall',\n 'Ogravesmall',\n 'Oacutesmall',\n 'Ocircumflexsmall',\n 'Otildesmall',\n 'Odieresissmall',\n 'OEsmall',\n 'Oslashsmall',\n 'Ugravesmall',\n 'Uacutesmall',\n 'Ucircumflexsmall',\n 'Udieresissmall',\n 'Yacutesmall',\n 'Thornsmall',\n 'Ydieresissmall'\n];\n\n\nlet $ef658f5c9a1488b2$export$c33b50336c234f16 = [\n '.notdef',\n 'space',\n 'exclam',\n 'quotedbl',\n 'numbersign',\n 'dollar',\n 'percent',\n 'ampersand',\n 'quoteright',\n 'parenleft',\n 'parenright',\n 'asterisk',\n 'plus',\n 'comma',\n 'hyphen',\n 'period',\n 'slash',\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'colon',\n 'semicolon',\n 'less',\n 'equal',\n 'greater',\n 'question',\n 'at',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'bracketleft',\n 'backslash',\n 'bracketright',\n 'asciicircum',\n 'underscore',\n 'quoteleft',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n 'braceleft',\n 'bar',\n 'braceright',\n 'asciitilde',\n 'exclamdown',\n 'cent',\n 'sterling',\n 'fraction',\n 'yen',\n 'florin',\n 'section',\n 'currency',\n 'quotesingle',\n 'quotedblleft',\n 'guillemotleft',\n 'guilsinglleft',\n 'guilsinglright',\n 'fi',\n 'fl',\n 'endash',\n 'dagger',\n 'daggerdbl',\n 'periodcentered',\n 'paragraph',\n 'bullet',\n 'quotesinglbase',\n 'quotedblbase',\n 'quotedblright',\n 'guillemotright',\n 'ellipsis',\n 'perthousand',\n 'questiondown',\n 'grave',\n 'acute',\n 'circumflex',\n 'tilde',\n 'macron',\n 'breve',\n 'dotaccent',\n 'dieresis',\n 'ring',\n 'cedilla',\n 'hungarumlaut',\n 'ogonek',\n 'caron',\n 'emdash',\n 'AE',\n 'ordfeminine',\n 'Lslash',\n 'Oslash',\n 'OE',\n 'ordmasculine',\n 'ae',\n 'dotlessi',\n 'lslash',\n 'oslash',\n 'oe',\n 'germandbls',\n 'onesuperior',\n 'logicalnot',\n 'mu',\n 'trademark',\n 'Eth',\n 'onehalf',\n 'plusminus',\n 'Thorn',\n 'onequarter',\n 'divide',\n 'brokenbar',\n 'degree',\n 'thorn',\n 'threequarters',\n 'twosuperior',\n 'registered',\n 'minus',\n 'eth',\n 'multiply',\n 'threesuperior',\n 'copyright',\n 'Aacute',\n 'Acircumflex',\n 'Adieresis',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Ccedilla',\n 'Eacute',\n 'Ecircumflex',\n 'Edieresis',\n 'Egrave',\n 'Iacute',\n 'Icircumflex',\n 'Idieresis',\n 'Igrave',\n 'Ntilde',\n 'Oacute',\n 'Ocircumflex',\n 'Odieresis',\n 'Ograve',\n 'Otilde',\n 'Scaron',\n 'Uacute',\n 'Ucircumflex',\n 'Udieresis',\n 'Ugrave',\n 'Yacute',\n 'Ydieresis',\n 'Zcaron',\n 'aacute',\n 'acircumflex',\n 'adieresis',\n 'agrave',\n 'aring',\n 'atilde',\n 'ccedilla',\n 'eacute',\n 'ecircumflex',\n 'edieresis',\n 'egrave',\n 'iacute',\n 'icircumflex',\n 'idieresis',\n 'igrave',\n 'ntilde',\n 'oacute',\n 'ocircumflex',\n 'odieresis',\n 'ograve',\n 'otilde',\n 'scaron',\n 'uacute',\n 'ucircumflex',\n 'udieresis',\n 'ugrave',\n 'yacute',\n 'ydieresis',\n 'zcaron'\n];\nlet $ef658f5c9a1488b2$export$3ed0f9e1fee8d489 = [\n '.notdef',\n 'space',\n 'exclamsmall',\n 'Hungarumlautsmall',\n 'dollaroldstyle',\n 'dollarsuperior',\n 'ampersandsmall',\n 'Acutesmall',\n 'parenleftsuperior',\n 'parenrightsuperior',\n 'twodotenleader',\n 'onedotenleader',\n 'comma',\n 'hyphen',\n 'period',\n 'fraction',\n 'zerooldstyle',\n 'oneoldstyle',\n 'twooldstyle',\n 'threeoldstyle',\n 'fouroldstyle',\n 'fiveoldstyle',\n 'sixoldstyle',\n 'sevenoldstyle',\n 'eightoldstyle',\n 'nineoldstyle',\n 'colon',\n 'semicolon',\n 'commasuperior',\n 'threequartersemdash',\n 'periodsuperior',\n 'questionsmall',\n 'asuperior',\n 'bsuperior',\n 'centsuperior',\n 'dsuperior',\n 'esuperior',\n 'isuperior',\n 'lsuperior',\n 'msuperior',\n 'nsuperior',\n 'osuperior',\n 'rsuperior',\n 'ssuperior',\n 'tsuperior',\n 'ff',\n 'fi',\n 'fl',\n 'ffi',\n 'ffl',\n 'parenleftinferior',\n 'parenrightinferior',\n 'Circumflexsmall',\n 'hyphensuperior',\n 'Gravesmall',\n 'Asmall',\n 'Bsmall',\n 'Csmall',\n 'Dsmall',\n 'Esmall',\n 'Fsmall',\n 'Gsmall',\n 'Hsmall',\n 'Ismall',\n 'Jsmall',\n 'Ksmall',\n 'Lsmall',\n 'Msmall',\n 'Nsmall',\n 'Osmall',\n 'Psmall',\n 'Qsmall',\n 'Rsmall',\n 'Ssmall',\n 'Tsmall',\n 'Usmall',\n 'Vsmall',\n 'Wsmall',\n 'Xsmall',\n 'Ysmall',\n 'Zsmall',\n 'colonmonetary',\n 'onefitted',\n 'rupiah',\n 'Tildesmall',\n 'exclamdownsmall',\n 'centoldstyle',\n 'Lslashsmall',\n 'Scaronsmall',\n 'Zcaronsmall',\n 'Dieresissmall',\n 'Brevesmall',\n 'Caronsmall',\n 'Dotaccentsmall',\n 'Macronsmall',\n 'figuredash',\n 'hypheninferior',\n 'Ogoneksmall',\n 'Ringsmall',\n 'Cedillasmall',\n 'onequarter',\n 'onehalf',\n 'threequarters',\n 'questiondownsmall',\n 'oneeighth',\n 'threeeighths',\n 'fiveeighths',\n 'seveneighths',\n 'onethird',\n 'twothirds',\n 'zerosuperior',\n 'onesuperior',\n 'twosuperior',\n 'threesuperior',\n 'foursuperior',\n 'fivesuperior',\n 'sixsuperior',\n 'sevensuperior',\n 'eightsuperior',\n 'ninesuperior',\n 'zeroinferior',\n 'oneinferior',\n 'twoinferior',\n 'threeinferior',\n 'fourinferior',\n 'fiveinferior',\n 'sixinferior',\n 'seveninferior',\n 'eightinferior',\n 'nineinferior',\n 'centinferior',\n 'dollarinferior',\n 'periodinferior',\n 'commainferior',\n 'Agravesmall',\n 'Aacutesmall',\n 'Acircumflexsmall',\n 'Atildesmall',\n 'Adieresissmall',\n 'Aringsmall',\n 'AEsmall',\n 'Ccedillasmall',\n 'Egravesmall',\n 'Eacutesmall',\n 'Ecircumflexsmall',\n 'Edieresissmall',\n 'Igravesmall',\n 'Iacutesmall',\n 'Icircumflexsmall',\n 'Idieresissmall',\n 'Ethsmall',\n 'Ntildesmall',\n 'Ogravesmall',\n 'Oacutesmall',\n 'Ocircumflexsmall',\n 'Otildesmall',\n 'Odieresissmall',\n 'OEsmall',\n 'Oslashsmall',\n 'Ugravesmall',\n 'Uacutesmall',\n 'Ucircumflexsmall',\n 'Udieresissmall',\n 'Yacutesmall',\n 'Thornsmall',\n 'Ydieresissmall'\n];\nlet $ef658f5c9a1488b2$export$dc28be11139d4120 = [\n '.notdef',\n 'space',\n 'dollaroldstyle',\n 'dollarsuperior',\n 'parenleftsuperior',\n 'parenrightsuperior',\n 'twodotenleader',\n 'onedotenleader',\n 'comma',\n 'hyphen',\n 'period',\n 'fraction',\n 'zerooldstyle',\n 'oneoldstyle',\n 'twooldstyle',\n 'threeoldstyle',\n 'fouroldstyle',\n 'fiveoldstyle',\n 'sixoldstyle',\n 'sevenoldstyle',\n 'eightoldstyle',\n 'nineoldstyle',\n 'colon',\n 'semicolon',\n 'commasuperior',\n 'threequartersemdash',\n 'periodsuperior',\n 'asuperior',\n 'bsuperior',\n 'centsuperior',\n 'dsuperior',\n 'esuperior',\n 'isuperior',\n 'lsuperior',\n 'msuperior',\n 'nsuperior',\n 'osuperior',\n 'rsuperior',\n 'ssuperior',\n 'tsuperior',\n 'ff',\n 'fi',\n 'fl',\n 'ffi',\n 'ffl',\n 'parenleftinferior',\n 'parenrightinferior',\n 'hyphensuperior',\n 'colonmonetary',\n 'onefitted',\n 'rupiah',\n 'centoldstyle',\n 'figuredash',\n 'hypheninferior',\n 'onequarter',\n 'onehalf',\n 'threequarters',\n 'oneeighth',\n 'threeeighths',\n 'fiveeighths',\n 'seveneighths',\n 'onethird',\n 'twothirds',\n 'zerosuperior',\n 'onesuperior',\n 'twosuperior',\n 'threesuperior',\n 'foursuperior',\n 'fivesuperior',\n 'sixsuperior',\n 'sevensuperior',\n 'eightsuperior',\n 'ninesuperior',\n 'zeroinferior',\n 'oneinferior',\n 'twoinferior',\n 'threeinferior',\n 'fourinferior',\n 'fiveinferior',\n 'sixinferior',\n 'seveninferior',\n 'eightinferior',\n 'nineinferior',\n 'centinferior',\n 'dollarinferior',\n 'periodinferior',\n 'commainferior'\n];\n\n\n\n//########################\n// Scripts and Languages #\n//########################\nlet $7cbbe4e24ef3cb75$var$LangSysTable = new $6uUbQ$Struct({\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n reqFeatureIndex: $6uUbQ$uint16,\n featureCount: $6uUbQ$uint16,\n featureIndexes: new $6uUbQ$Array($6uUbQ$uint16, 'featureCount')\n});\nlet $7cbbe4e24ef3cb75$var$LangSysRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n langSys: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$LangSysTable, {\n type: 'parent'\n })\n});\nlet $7cbbe4e24ef3cb75$var$Script = new $6uUbQ$Struct({\n defaultLangSys: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$LangSysTable),\n count: $6uUbQ$uint16,\n langSysRecords: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$LangSysRecord, 'count')\n});\nlet $7cbbe4e24ef3cb75$var$ScriptRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n script: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$Script, {\n type: 'parent'\n })\n});\nlet $7cbbe4e24ef3cb75$export$3e15fc05ce864229 = new $6uUbQ$Array($7cbbe4e24ef3cb75$var$ScriptRecord, $6uUbQ$uint16);\n//#######################\n// Features and Lookups #\n//#######################\nlet $7cbbe4e24ef3cb75$var$FeatureParams = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n nameID: $6uUbQ$uint16\n});\nlet $7cbbe4e24ef3cb75$export$6e91cf7616333d5 = new $6uUbQ$Struct({\n featureParams: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$FeatureParams),\n lookupCount: $6uUbQ$uint16,\n lookupListIndexes: new $6uUbQ$Array($6uUbQ$uint16, 'lookupCount')\n});\nlet $7cbbe4e24ef3cb75$var$FeatureRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n feature: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$6e91cf7616333d5, {\n type: 'parent'\n })\n});\nlet $7cbbe4e24ef3cb75$export$aa18130def4b6cb4 = new $6uUbQ$Array($7cbbe4e24ef3cb75$var$FeatureRecord, $6uUbQ$uint16);\nlet $7cbbe4e24ef3cb75$var$LookupFlags = new $6uUbQ$Struct({\n markAttachmentType: $6uUbQ$uint8,\n flags: new $6uUbQ$Bitfield($6uUbQ$uint8, [\n 'rightToLeft',\n 'ignoreBaseGlyphs',\n 'ignoreLigatures',\n 'ignoreMarks',\n 'useMarkFilteringSet'\n ])\n});\nfunction $7cbbe4e24ef3cb75$export$df0008c6ff2da22a(SubTable) {\n let Lookup = new $6uUbQ$Struct({\n lookupType: $6uUbQ$uint16,\n flags: $7cbbe4e24ef3cb75$var$LookupFlags,\n subTableCount: $6uUbQ$uint16,\n subTables: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, SubTable), 'subTableCount'),\n markFilteringSet: new $6uUbQ$Optional($6uUbQ$uint16, (t)=>t.flags.flags.useMarkFilteringSet)\n });\n return new $6uUbQ$LazyArray(new $6uUbQ$Pointer($6uUbQ$uint16, Lookup), $6uUbQ$uint16);\n}\n//#################\n// Coverage Table #\n//#################\nlet $7cbbe4e24ef3cb75$var$RangeRecord = new $6uUbQ$Struct({\n start: $6uUbQ$uint16,\n end: $6uUbQ$uint16,\n startCoverageIndex: $6uUbQ$uint16\n});\nlet $7cbbe4e24ef3cb75$export$17608c3f81a6111 = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n glyphCount: $6uUbQ$uint16,\n glyphs: new $6uUbQ$Array($6uUbQ$uint16, 'glyphCount')\n },\n 2: {\n rangeCount: $6uUbQ$uint16,\n rangeRecords: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$RangeRecord, 'rangeCount')\n }\n});\n//#########################\n// Class Definition Table #\n//#########################\nlet $7cbbe4e24ef3cb75$var$ClassRangeRecord = new $6uUbQ$Struct({\n start: $6uUbQ$uint16,\n end: $6uUbQ$uint16,\n class: $6uUbQ$uint16\n});\nlet $7cbbe4e24ef3cb75$export$843d551fbbafef71 = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n startGlyph: $6uUbQ$uint16,\n glyphCount: $6uUbQ$uint16,\n classValueArray: new $6uUbQ$Array($6uUbQ$uint16, 'glyphCount')\n },\n 2: {\n classRangeCount: $6uUbQ$uint16,\n classRangeRecord: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$ClassRangeRecord, 'classRangeCount')\n }\n});\nlet $7cbbe4e24ef3cb75$export$8215d14a63d9fb10 = new $6uUbQ$Struct({\n a: $6uUbQ$uint16,\n b: $6uUbQ$uint16,\n deltaFormat: $6uUbQ$uint16\n});\n//#############################################\n// Contextual Substitution/Positioning Tables #\n//#############################################\nlet $7cbbe4e24ef3cb75$var$LookupRecord = new $6uUbQ$Struct({\n sequenceIndex: $6uUbQ$uint16,\n lookupListIndex: $6uUbQ$uint16\n});\nlet $7cbbe4e24ef3cb75$var$Rule = new $6uUbQ$Struct({\n glyphCount: $6uUbQ$uint16,\n lookupCount: $6uUbQ$uint16,\n input: new $6uUbQ$Array($6uUbQ$uint16, (t)=>t.glyphCount - 1),\n lookupRecords: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$LookupRecord, 'lookupCount')\n});\nlet $7cbbe4e24ef3cb75$var$RuleSet = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$Rule), $6uUbQ$uint16);\nlet $7cbbe4e24ef3cb75$var$ClassRule = new $6uUbQ$Struct({\n glyphCount: $6uUbQ$uint16,\n lookupCount: $6uUbQ$uint16,\n classes: new $6uUbQ$Array($6uUbQ$uint16, (t)=>t.glyphCount - 1),\n lookupRecords: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$LookupRecord, 'lookupCount')\n});\nlet $7cbbe4e24ef3cb75$var$ClassSet = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$ClassRule), $6uUbQ$uint16);\nlet $7cbbe4e24ef3cb75$export$841858b892ce1f4c = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111),\n ruleSetCount: $6uUbQ$uint16,\n ruleSets: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$RuleSet), 'ruleSetCount')\n },\n 2: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111),\n classDef: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$843d551fbbafef71),\n classSetCnt: $6uUbQ$uint16,\n classSet: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$ClassSet), 'classSetCnt')\n },\n 3: {\n glyphCount: $6uUbQ$uint16,\n lookupCount: $6uUbQ$uint16,\n coverages: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111), 'glyphCount'),\n lookupRecords: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$LookupRecord, 'lookupCount')\n }\n});\n//######################################################\n// Chaining Contextual Substitution/Positioning Tables #\n//######################################################\nlet $7cbbe4e24ef3cb75$var$ChainRule = new $6uUbQ$Struct({\n backtrackGlyphCount: $6uUbQ$uint16,\n backtrack: new $6uUbQ$Array($6uUbQ$uint16, 'backtrackGlyphCount'),\n inputGlyphCount: $6uUbQ$uint16,\n input: new $6uUbQ$Array($6uUbQ$uint16, (t)=>t.inputGlyphCount - 1),\n lookaheadGlyphCount: $6uUbQ$uint16,\n lookahead: new $6uUbQ$Array($6uUbQ$uint16, 'lookaheadGlyphCount'),\n lookupCount: $6uUbQ$uint16,\n lookupRecords: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$LookupRecord, 'lookupCount')\n});\nlet $7cbbe4e24ef3cb75$var$ChainRuleSet = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$ChainRule), $6uUbQ$uint16);\nlet $7cbbe4e24ef3cb75$export$5e6d09e6861162f6 = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111),\n chainCount: $6uUbQ$uint16,\n chainRuleSets: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$ChainRuleSet), 'chainCount')\n },\n 2: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111),\n backtrackClassDef: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$843d551fbbafef71),\n inputClassDef: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$843d551fbbafef71),\n lookaheadClassDef: new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$843d551fbbafef71),\n chainCount: $6uUbQ$uint16,\n chainClassSet: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$var$ChainRuleSet), 'chainCount')\n },\n 3: {\n backtrackGlyphCount: $6uUbQ$uint16,\n backtrackCoverage: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111), 'backtrackGlyphCount'),\n inputGlyphCount: $6uUbQ$uint16,\n inputCoverage: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111), 'inputGlyphCount'),\n lookaheadGlyphCount: $6uUbQ$uint16,\n lookaheadCoverage: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $7cbbe4e24ef3cb75$export$17608c3f81a6111), 'lookaheadGlyphCount'),\n lookupCount: $6uUbQ$uint16,\n lookupRecords: new $6uUbQ$Array($7cbbe4e24ef3cb75$var$LookupRecord, 'lookupCount')\n }\n});\n\n\n\n/*******************\n * Variation Store *\n *******************/ let $1a47b0c45c1c22fe$var$F2DOT14 = new $6uUbQ$Fixed(16, 'BE', 14);\nlet $1a47b0c45c1c22fe$var$RegionAxisCoordinates = new $6uUbQ$Struct({\n startCoord: $1a47b0c45c1c22fe$var$F2DOT14,\n peakCoord: $1a47b0c45c1c22fe$var$F2DOT14,\n endCoord: $1a47b0c45c1c22fe$var$F2DOT14\n});\nlet $1a47b0c45c1c22fe$var$VariationRegionList = new $6uUbQ$Struct({\n axisCount: $6uUbQ$uint16,\n regionCount: $6uUbQ$uint16,\n variationRegions: new $6uUbQ$Array(new $6uUbQ$Array($1a47b0c45c1c22fe$var$RegionAxisCoordinates, 'axisCount'), 'regionCount')\n});\nlet $1a47b0c45c1c22fe$var$DeltaSet = new $6uUbQ$Struct({\n shortDeltas: new $6uUbQ$Array($6uUbQ$int16, (t)=>t.parent.shortDeltaCount),\n regionDeltas: new $6uUbQ$Array($6uUbQ$int8, (t)=>t.parent.regionIndexCount - t.parent.shortDeltaCount),\n deltas: (t)=>t.shortDeltas.concat(t.regionDeltas)\n});\nlet $1a47b0c45c1c22fe$var$ItemVariationData = new $6uUbQ$Struct({\n itemCount: $6uUbQ$uint16,\n shortDeltaCount: $6uUbQ$uint16,\n regionIndexCount: $6uUbQ$uint16,\n regionIndexes: new $6uUbQ$Array($6uUbQ$uint16, 'regionIndexCount'),\n deltaSets: new $6uUbQ$Array($1a47b0c45c1c22fe$var$DeltaSet, 'itemCount')\n});\nlet $1a47b0c45c1c22fe$export$fe1b122a2710f241 = new $6uUbQ$Struct({\n format: $6uUbQ$uint16,\n variationRegionList: new $6uUbQ$Pointer($6uUbQ$uint32, $1a47b0c45c1c22fe$var$VariationRegionList),\n variationDataCount: $6uUbQ$uint16,\n itemVariationData: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint32, $1a47b0c45c1c22fe$var$ItemVariationData), 'variationDataCount')\n});\n/**********************\n * Feature Variations *\n **********************/ let $1a47b0c45c1c22fe$var$ConditionTable = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n axisIndex: $6uUbQ$uint16,\n axisIndex: $6uUbQ$uint16,\n filterRangeMinValue: $1a47b0c45c1c22fe$var$F2DOT14,\n filterRangeMaxValue: $1a47b0c45c1c22fe$var$F2DOT14\n }\n});\nlet $1a47b0c45c1c22fe$var$ConditionSet = new $6uUbQ$Struct({\n conditionCount: $6uUbQ$uint16,\n conditionTable: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint32, $1a47b0c45c1c22fe$var$ConditionTable), 'conditionCount')\n});\nlet $1a47b0c45c1c22fe$var$FeatureTableSubstitutionRecord = new $6uUbQ$Struct({\n featureIndex: $6uUbQ$uint16,\n alternateFeatureTable: new $6uUbQ$Pointer($6uUbQ$uint32, (0, $7cbbe4e24ef3cb75$export$6e91cf7616333d5), {\n type: 'parent'\n })\n});\nlet $1a47b0c45c1c22fe$var$FeatureTableSubstitution = new $6uUbQ$Struct({\n version: $6uUbQ$fixed32,\n substitutionCount: $6uUbQ$uint16,\n substitutions: new $6uUbQ$Array($1a47b0c45c1c22fe$var$FeatureTableSubstitutionRecord, 'substitutionCount')\n});\nlet $1a47b0c45c1c22fe$var$FeatureVariationRecord = new $6uUbQ$Struct({\n conditionSet: new $6uUbQ$Pointer($6uUbQ$uint32, $1a47b0c45c1c22fe$var$ConditionSet, {\n type: 'parent'\n }),\n featureTableSubstitution: new $6uUbQ$Pointer($6uUbQ$uint32, $1a47b0c45c1c22fe$var$FeatureTableSubstitution, {\n type: 'parent'\n })\n});\nlet $1a47b0c45c1c22fe$export$441b70b7971dd419 = new $6uUbQ$Struct({\n majorVersion: $6uUbQ$uint16,\n minorVersion: $6uUbQ$uint16,\n featureVariationRecordCount: $6uUbQ$uint32,\n featureVariationRecords: new $6uUbQ$Array($1a47b0c45c1c22fe$var$FeatureVariationRecord, 'featureVariationRecordCount')\n});\n\n\n// Checks if an operand is an index of a predefined value,\n// otherwise delegates to the provided type.\nclass $b84fd3dd9d8eddb2$var$PredefinedOp {\n decode(stream, parent, operands) {\n if (this.predefinedOps[operands[0]]) return this.predefinedOps[operands[0]];\n return this.type.decode(stream, parent, operands);\n }\n size(value, ctx) {\n return this.type.size(value, ctx);\n }\n encode(stream, value, ctx) {\n let index = this.predefinedOps.indexOf(value);\n if (index !== -1) return index;\n return this.type.encode(stream, value, ctx);\n }\n constructor(predefinedOps, type){\n this.predefinedOps = predefinedOps;\n this.type = type;\n }\n}\nclass $b84fd3dd9d8eddb2$var$CFFEncodingVersion extends $6uUbQ$Number {\n decode(stream) {\n return $6uUbQ$uint8.decode(stream) & 0x7f;\n }\n constructor(){\n super('UInt8');\n }\n}\nlet $b84fd3dd9d8eddb2$var$Range1 = new $6uUbQ$Struct({\n first: $6uUbQ$uint16,\n nLeft: $6uUbQ$uint8\n});\nlet $b84fd3dd9d8eddb2$var$Range2 = new $6uUbQ$Struct({\n first: $6uUbQ$uint16,\n nLeft: $6uUbQ$uint16\n});\nlet $b84fd3dd9d8eddb2$var$CFFCustomEncoding = new $6uUbQ$VersionedStruct(new $b84fd3dd9d8eddb2$var$CFFEncodingVersion(), {\n 0: {\n nCodes: $6uUbQ$uint8,\n codes: new $6uUbQ$Array($6uUbQ$uint8, 'nCodes')\n },\n 1: {\n nRanges: $6uUbQ$uint8,\n ranges: new $6uUbQ$Array($b84fd3dd9d8eddb2$var$Range1, 'nRanges')\n }\n});\nlet $b84fd3dd9d8eddb2$var$CFFEncoding = new $b84fd3dd9d8eddb2$var$PredefinedOp([\n (0, $bc0433d9b7e41f5f$export$dee0027060fa13bd),\n (0, $bc0433d9b7e41f5f$export$4f58f497e14a53c3)\n], new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$CFFCustomEncoding, {\n lazy: true\n}));\n// Decodes an array of ranges until the total\n// length is equal to the provided length.\nclass $b84fd3dd9d8eddb2$var$RangeArray extends $6uUbQ$Array {\n decode(stream, parent) {\n let length = (0, $6uUbQ$resolveLength)(this.length, stream, parent);\n let count = 0;\n let res = [];\n while(count < length){\n let range = this.type.decode(stream, parent);\n range.offset = count;\n count += range.nLeft + 1;\n res.push(range);\n }\n return res;\n }\n}\nlet $b84fd3dd9d8eddb2$var$CFFCustomCharset = new $6uUbQ$VersionedStruct($6uUbQ$uint8, {\n 0: {\n glyphs: new $6uUbQ$Array($6uUbQ$uint16, (t)=>t.parent.CharStrings.length - 1)\n },\n 1: {\n ranges: new $b84fd3dd9d8eddb2$var$RangeArray($b84fd3dd9d8eddb2$var$Range1, (t)=>t.parent.CharStrings.length - 1)\n },\n 2: {\n ranges: new $b84fd3dd9d8eddb2$var$RangeArray($b84fd3dd9d8eddb2$var$Range2, (t)=>t.parent.CharStrings.length - 1)\n }\n});\nlet $b84fd3dd9d8eddb2$var$CFFCharset = new $b84fd3dd9d8eddb2$var$PredefinedOp([\n (0, $ef658f5c9a1488b2$export$c33b50336c234f16),\n (0, $ef658f5c9a1488b2$export$3ed0f9e1fee8d489),\n (0, $ef658f5c9a1488b2$export$dc28be11139d4120)\n], new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$CFFCustomCharset, {\n lazy: true\n}));\nlet $b84fd3dd9d8eddb2$var$FDRange3 = new $6uUbQ$Struct({\n first: $6uUbQ$uint16,\n fd: $6uUbQ$uint8\n});\nlet $b84fd3dd9d8eddb2$var$FDRange4 = new $6uUbQ$Struct({\n first: $6uUbQ$uint32,\n fd: $6uUbQ$uint16\n});\nlet $b84fd3dd9d8eddb2$var$FDSelect = new $6uUbQ$VersionedStruct($6uUbQ$uint8, {\n 0: {\n fds: new $6uUbQ$Array($6uUbQ$uint8, (t)=>t.parent.CharStrings.length)\n },\n 3: {\n nRanges: $6uUbQ$uint16,\n ranges: new $6uUbQ$Array($b84fd3dd9d8eddb2$var$FDRange3, 'nRanges'),\n sentinel: $6uUbQ$uint16\n },\n 4: {\n nRanges: $6uUbQ$uint32,\n ranges: new $6uUbQ$Array($b84fd3dd9d8eddb2$var$FDRange4, 'nRanges'),\n sentinel: $6uUbQ$uint32\n }\n});\nlet $b84fd3dd9d8eddb2$var$ptr = new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)((0, $6d59db2e29cc77b3$export$2e2bcd8739ae039));\nclass $b84fd3dd9d8eddb2$var$CFFPrivateOp {\n decode(stream, parent, operands) {\n parent.length = operands[0];\n return $b84fd3dd9d8eddb2$var$ptr.decode(stream, parent, [\n operands[1]\n ]);\n }\n size(dict, ctx) {\n return [\n (0, $6d59db2e29cc77b3$export$2e2bcd8739ae039).size(dict, ctx, false),\n $b84fd3dd9d8eddb2$var$ptr.size(dict, ctx)[0]\n ];\n }\n encode(stream, dict, ctx) {\n return [\n (0, $6d59db2e29cc77b3$export$2e2bcd8739ae039).size(dict, ctx, false),\n $b84fd3dd9d8eddb2$var$ptr.encode(stream, dict, ctx)[0]\n ];\n }\n}\nlet $b84fd3dd9d8eddb2$var$FontDict = new (0, $61aa549f16d58b9b$export$2e2bcd8739ae039)([\n // key name type(s) default\n [\n 18,\n 'Private',\n new $b84fd3dd9d8eddb2$var$CFFPrivateOp,\n null\n ],\n [\n [\n 12,\n 38\n ],\n 'FontName',\n 'sid',\n null\n ],\n [\n [\n 12,\n 7\n ],\n 'FontMatrix',\n 'array',\n [\n 0.001,\n 0,\n 0,\n 0.001,\n 0,\n 0\n ]\n ],\n [\n [\n 12,\n 5\n ],\n 'PaintType',\n 'number',\n 0\n ]\n]);\nlet $b84fd3dd9d8eddb2$var$CFFTopDict = new (0, $61aa549f16d58b9b$export$2e2bcd8739ae039)([\n // key name type(s) default\n [\n [\n 12,\n 30\n ],\n 'ROS',\n [\n 'sid',\n 'sid',\n 'number'\n ],\n null\n ],\n [\n 0,\n 'version',\n 'sid',\n null\n ],\n [\n 1,\n 'Notice',\n 'sid',\n null\n ],\n [\n [\n 12,\n 0\n ],\n 'Copyright',\n 'sid',\n null\n ],\n [\n 2,\n 'FullName',\n 'sid',\n null\n ],\n [\n 3,\n 'FamilyName',\n 'sid',\n null\n ],\n [\n 4,\n 'Weight',\n 'sid',\n null\n ],\n [\n [\n 12,\n 1\n ],\n 'isFixedPitch',\n 'boolean',\n false\n ],\n [\n [\n 12,\n 2\n ],\n 'ItalicAngle',\n 'number',\n 0\n ],\n [\n [\n 12,\n 3\n ],\n 'UnderlinePosition',\n 'number',\n -100\n ],\n [\n [\n 12,\n 4\n ],\n 'UnderlineThickness',\n 'number',\n 50\n ],\n [\n [\n 12,\n 5\n ],\n 'PaintType',\n 'number',\n 0\n ],\n [\n [\n 12,\n 6\n ],\n 'CharstringType',\n 'number',\n 2\n ],\n [\n [\n 12,\n 7\n ],\n 'FontMatrix',\n 'array',\n [\n 0.001,\n 0,\n 0,\n 0.001,\n 0,\n 0\n ]\n ],\n [\n 13,\n 'UniqueID',\n 'number',\n null\n ],\n [\n 5,\n 'FontBBox',\n 'array',\n [\n 0,\n 0,\n 0,\n 0\n ]\n ],\n [\n [\n 12,\n 8\n ],\n 'StrokeWidth',\n 'number',\n 0\n ],\n [\n 14,\n 'XUID',\n 'array',\n null\n ],\n [\n 15,\n 'charset',\n $b84fd3dd9d8eddb2$var$CFFCharset,\n (0, $ef658f5c9a1488b2$export$c33b50336c234f16)\n ],\n [\n 16,\n 'Encoding',\n $b84fd3dd9d8eddb2$var$CFFEncoding,\n (0, $bc0433d9b7e41f5f$export$dee0027060fa13bd)\n ],\n [\n 17,\n 'CharStrings',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)(new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)),\n null\n ],\n [\n 18,\n 'Private',\n new $b84fd3dd9d8eddb2$var$CFFPrivateOp,\n null\n ],\n [\n [\n 12,\n 20\n ],\n 'SyntheticBase',\n 'number',\n null\n ],\n [\n [\n 12,\n 21\n ],\n 'PostScript',\n 'sid',\n null\n ],\n [\n [\n 12,\n 22\n ],\n 'BaseFontName',\n 'sid',\n null\n ],\n [\n [\n 12,\n 23\n ],\n 'BaseFontBlend',\n 'delta',\n null\n ],\n // CID font specific\n [\n [\n 12,\n 31\n ],\n 'CIDFontVersion',\n 'number',\n 0\n ],\n [\n [\n 12,\n 32\n ],\n 'CIDFontRevision',\n 'number',\n 0\n ],\n [\n [\n 12,\n 33\n ],\n 'CIDFontType',\n 'number',\n 0\n ],\n [\n [\n 12,\n 34\n ],\n 'CIDCount',\n 'number',\n 8720\n ],\n [\n [\n 12,\n 35\n ],\n 'UIDBase',\n 'number',\n null\n ],\n [\n [\n 12,\n 37\n ],\n 'FDSelect',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$FDSelect),\n null\n ],\n [\n [\n 12,\n 36\n ],\n 'FDArray',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)(new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$FontDict)),\n null\n ],\n [\n [\n 12,\n 38\n ],\n 'FontName',\n 'sid',\n null\n ]\n]);\nlet $b84fd3dd9d8eddb2$var$VariationStore = new $6uUbQ$Struct({\n length: $6uUbQ$uint16,\n itemVariationStore: (0, $1a47b0c45c1c22fe$export$fe1b122a2710f241)\n});\nlet $b84fd3dd9d8eddb2$var$CFF2TopDict = new (0, $61aa549f16d58b9b$export$2e2bcd8739ae039)([\n [\n [\n 12,\n 7\n ],\n 'FontMatrix',\n 'array',\n [\n 0.001,\n 0,\n 0,\n 0.001,\n 0,\n 0\n ]\n ],\n [\n 17,\n 'CharStrings',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)(new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)),\n null\n ],\n [\n [\n 12,\n 37\n ],\n 'FDSelect',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$FDSelect),\n null\n ],\n [\n [\n 12,\n 36\n ],\n 'FDArray',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)(new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$FontDict)),\n null\n ],\n [\n 24,\n 'vstore',\n new (0, $0e34a43d05bde82c$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$VariationStore),\n null\n ],\n [\n 25,\n 'maxstack',\n 'number',\n 193\n ]\n]);\nlet $b84fd3dd9d8eddb2$var$CFFTop = new $6uUbQ$VersionedStruct($6uUbQ$fixed16, {\n 1: {\n hdrSize: $6uUbQ$uint8,\n offSize: $6uUbQ$uint8,\n nameIndex: new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)(new $6uUbQ$String('length')),\n topDictIndex: new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)($b84fd3dd9d8eddb2$var$CFFTopDict),\n stringIndex: new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)(new $6uUbQ$String('length')),\n globalSubrIndex: new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)\n },\n 2: {\n hdrSize: $6uUbQ$uint8,\n length: $6uUbQ$uint16,\n topDict: $b84fd3dd9d8eddb2$var$CFF2TopDict,\n globalSubrIndex: new (0, $43e9821ef3717eec$export$2e2bcd8739ae039)\n }\n});\nvar $b84fd3dd9d8eddb2$export$2e2bcd8739ae039 = $b84fd3dd9d8eddb2$var$CFFTop;\n\n\n\n\nclass $822ac0d589e4e237$var$CFFFont {\n static decode(stream) {\n return new $822ac0d589e4e237$var$CFFFont(stream);\n }\n decode() {\n let start = this.stream.pos;\n let top = (0, $b84fd3dd9d8eddb2$export$2e2bcd8739ae039).decode(this.stream);\n for(let key in top){\n let val = top[key];\n this[key] = val;\n }\n if (this.version < 2) {\n if (this.topDictIndex.length !== 1) throw new Error(\"Only a single font is allowed in CFF\");\n this.topDict = this.topDictIndex[0];\n }\n this.isCIDFont = this.topDict.ROS != null;\n return this;\n }\n string(sid) {\n if (this.version >= 2) return null;\n if (sid < (0, $229224aec43783c5$export$2e2bcd8739ae039).length) return (0, $229224aec43783c5$export$2e2bcd8739ae039)[sid];\n return this.stringIndex[sid - (0, $229224aec43783c5$export$2e2bcd8739ae039).length];\n }\n get postscriptName() {\n if (this.version < 2) return this.nameIndex[0];\n return null;\n }\n get fullName() {\n return this.string(this.topDict.FullName);\n }\n get familyName() {\n return this.string(this.topDict.FamilyName);\n }\n getCharString(glyph) {\n this.stream.pos = this.topDict.CharStrings[glyph].offset;\n return this.stream.readBuffer(this.topDict.CharStrings[glyph].length);\n }\n getGlyphName(gid) {\n // CFF2 glyph names are in the post table.\n if (this.version >= 2) return null;\n // CID-keyed fonts don't have glyph names\n if (this.isCIDFont) return null;\n let { charset: charset } = this.topDict;\n if (Array.isArray(charset)) return charset[gid];\n if (gid === 0) return '.notdef';\n gid -= 1;\n switch(charset.version){\n case 0:\n return this.string(charset.glyphs[gid]);\n case 1:\n case 2:\n for(let i = 0; i < charset.ranges.length; i++){\n let range = charset.ranges[i];\n if (range.offset <= gid && gid <= range.offset + range.nLeft) return this.string(range.first + (gid - range.offset));\n }\n break;\n }\n return null;\n }\n fdForGlyph(gid) {\n if (!this.topDict.FDSelect) return null;\n switch(this.topDict.FDSelect.version){\n case 0:\n return this.topDict.FDSelect.fds[gid];\n case 3:\n case 4:\n let { ranges: ranges } = this.topDict.FDSelect;\n let low = 0;\n let high = ranges.length - 1;\n while(low <= high){\n let mid = low + high >> 1;\n if (gid < ranges[mid].first) high = mid - 1;\n else if (mid < high && gid >= ranges[mid + 1].first) low = mid + 1;\n else return ranges[mid].fd;\n }\n default:\n throw new Error(`Unknown FDSelect version: ${this.topDict.FDSelect.version}`);\n }\n }\n privateDictForGlyph(gid) {\n if (this.topDict.FDSelect) {\n let fd = this.fdForGlyph(gid);\n if (this.topDict.FDArray[fd]) return this.topDict.FDArray[fd].Private;\n return null;\n }\n if (this.version < 2) return this.topDict.Private;\n return this.topDict.FDArray[0].Private;\n }\n constructor(stream){\n this.stream = stream;\n this.decode();\n }\n}\nvar $822ac0d589e4e237$export$2e2bcd8739ae039 = $822ac0d589e4e237$var$CFFFont;\n\n\n\nlet $2bbf2bc1ce37cd8f$var$VerticalOrigin = new $6uUbQ$Struct({\n glyphIndex: $6uUbQ$uint16,\n vertOriginY: $6uUbQ$int16\n});\nvar $2bbf2bc1ce37cd8f$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n majorVersion: $6uUbQ$uint16,\n minorVersion: $6uUbQ$uint16,\n defaultVertOriginY: $6uUbQ$int16,\n numVertOriginYMetrics: $6uUbQ$uint16,\n metrics: new $6uUbQ$Array($2bbf2bc1ce37cd8f$var$VerticalOrigin, 'numVertOriginYMetrics')\n});\n\n\n\n\nlet $0941618dc22a946d$export$16b227cb15d716a0 = new $6uUbQ$Struct({\n height: $6uUbQ$uint8,\n width: $6uUbQ$uint8,\n horiBearingX: $6uUbQ$int8,\n horiBearingY: $6uUbQ$int8,\n horiAdvance: $6uUbQ$uint8,\n vertBearingX: $6uUbQ$int8,\n vertBearingY: $6uUbQ$int8,\n vertAdvance: $6uUbQ$uint8\n});\nlet $0941618dc22a946d$export$62c53e75f69bfe12 = new $6uUbQ$Struct({\n height: $6uUbQ$uint8,\n width: $6uUbQ$uint8,\n bearingX: $6uUbQ$int8,\n bearingY: $6uUbQ$int8,\n advance: $6uUbQ$uint8\n});\nlet $0941618dc22a946d$var$EBDTComponent = new $6uUbQ$Struct({\n glyph: $6uUbQ$uint16,\n xOffset: $6uUbQ$int8,\n yOffset: $6uUbQ$int8\n});\nclass $0941618dc22a946d$var$ByteAligned {\n}\nclass $0941618dc22a946d$var$BitAligned {\n}\nlet $0941618dc22a946d$export$f1f5ddeb20d14f = new $6uUbQ$VersionedStruct('version', {\n 1: {\n metrics: $0941618dc22a946d$export$62c53e75f69bfe12,\n data: $0941618dc22a946d$var$ByteAligned\n },\n 2: {\n metrics: $0941618dc22a946d$export$62c53e75f69bfe12,\n data: $0941618dc22a946d$var$BitAligned\n },\n // format 3 is deprecated\n // format 4 is not supported by Microsoft\n 5: {\n data: $0941618dc22a946d$var$BitAligned\n },\n 6: {\n metrics: $0941618dc22a946d$export$16b227cb15d716a0,\n data: $0941618dc22a946d$var$ByteAligned\n },\n 7: {\n metrics: $0941618dc22a946d$export$16b227cb15d716a0,\n data: $0941618dc22a946d$var$BitAligned\n },\n 8: {\n metrics: $0941618dc22a946d$export$62c53e75f69bfe12,\n pad: new $6uUbQ$Reserved($6uUbQ$uint8),\n numComponents: $6uUbQ$uint16,\n components: new $6uUbQ$Array($0941618dc22a946d$var$EBDTComponent, 'numComponents')\n },\n 9: {\n metrics: $0941618dc22a946d$export$16b227cb15d716a0,\n pad: new $6uUbQ$Reserved($6uUbQ$uint8),\n numComponents: $6uUbQ$uint16,\n components: new $6uUbQ$Array($0941618dc22a946d$var$EBDTComponent, 'numComponents')\n },\n 17: {\n metrics: $0941618dc22a946d$export$62c53e75f69bfe12,\n dataLen: $6uUbQ$uint32,\n data: new $6uUbQ$Buffer('dataLen')\n },\n 18: {\n metrics: $0941618dc22a946d$export$16b227cb15d716a0,\n dataLen: $6uUbQ$uint32,\n data: new $6uUbQ$Buffer('dataLen')\n },\n 19: {\n dataLen: $6uUbQ$uint32,\n data: new $6uUbQ$Buffer('dataLen')\n }\n});\n\n\nlet $9911c4c7201c13de$var$SBitLineMetrics = new $6uUbQ$Struct({\n ascender: $6uUbQ$int8,\n descender: $6uUbQ$int8,\n widthMax: $6uUbQ$uint8,\n caretSlopeNumerator: $6uUbQ$int8,\n caretSlopeDenominator: $6uUbQ$int8,\n caretOffset: $6uUbQ$int8,\n minOriginSB: $6uUbQ$int8,\n minAdvanceSB: $6uUbQ$int8,\n maxBeforeBL: $6uUbQ$int8,\n minAfterBL: $6uUbQ$int8,\n pad: new $6uUbQ$Reserved($6uUbQ$int8, 2)\n});\nlet $9911c4c7201c13de$var$CodeOffsetPair = new $6uUbQ$Struct({\n glyphCode: $6uUbQ$uint16,\n offset: $6uUbQ$uint16\n});\nlet $9911c4c7201c13de$var$IndexSubtable = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n header: {\n imageFormat: $6uUbQ$uint16,\n imageDataOffset: $6uUbQ$uint32\n },\n 1: {\n offsetArray: new $6uUbQ$Array($6uUbQ$uint32, (t)=>t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)\n },\n 2: {\n imageSize: $6uUbQ$uint32,\n bigMetrics: (0, $0941618dc22a946d$export$16b227cb15d716a0)\n },\n 3: {\n offsetArray: new $6uUbQ$Array($6uUbQ$uint16, (t)=>t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)\n },\n 4: {\n numGlyphs: $6uUbQ$uint32,\n glyphArray: new $6uUbQ$Array($9911c4c7201c13de$var$CodeOffsetPair, (t)=>t.numGlyphs + 1)\n },\n 5: {\n imageSize: $6uUbQ$uint32,\n bigMetrics: (0, $0941618dc22a946d$export$16b227cb15d716a0),\n numGlyphs: $6uUbQ$uint32,\n glyphCodeArray: new $6uUbQ$Array($6uUbQ$uint16, 'numGlyphs')\n }\n});\nlet $9911c4c7201c13de$var$IndexSubtableArray = new $6uUbQ$Struct({\n firstGlyphIndex: $6uUbQ$uint16,\n lastGlyphIndex: $6uUbQ$uint16,\n subtable: new $6uUbQ$Pointer($6uUbQ$uint32, $9911c4c7201c13de$var$IndexSubtable)\n});\nlet $9911c4c7201c13de$var$BitmapSizeTable = new $6uUbQ$Struct({\n indexSubTableArray: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($9911c4c7201c13de$var$IndexSubtableArray, 1), {\n type: 'parent'\n }),\n indexTablesSize: $6uUbQ$uint32,\n numberOfIndexSubTables: $6uUbQ$uint32,\n colorRef: $6uUbQ$uint32,\n hori: $9911c4c7201c13de$var$SBitLineMetrics,\n vert: $9911c4c7201c13de$var$SBitLineMetrics,\n startGlyphIndex: $6uUbQ$uint16,\n endGlyphIndex: $6uUbQ$uint16,\n ppemX: $6uUbQ$uint8,\n ppemY: $6uUbQ$uint8,\n bitDepth: $6uUbQ$uint8,\n flags: new $6uUbQ$Bitfield($6uUbQ$uint8, [\n 'horizontal',\n 'vertical'\n ])\n});\nvar $9911c4c7201c13de$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint32,\n numSizes: $6uUbQ$uint32,\n sizes: new $6uUbQ$Array($9911c4c7201c13de$var$BitmapSizeTable, 'numSizes')\n});\n\n\n\nlet $abb847051efd51b1$var$ImageTable = new $6uUbQ$Struct({\n ppem: $6uUbQ$uint16,\n resolution: $6uUbQ$uint16,\n imageOffsets: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint32, 'void'), (t)=>t.parent.parent.maxp.numGlyphs + 1)\n});\nvar // This is the Apple sbix table, used by the \"Apple Color Emoji\" font.\n// It includes several image tables with images for each bitmap glyph\n// of several different sizes.\n$abb847051efd51b1$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n flags: new $6uUbQ$Bitfield($6uUbQ$uint16, [\n 'renderOutlines'\n ]),\n numImgTables: $6uUbQ$uint32,\n imageTables: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint32, $abb847051efd51b1$var$ImageTable), 'numImgTables')\n});\n\n\n\nlet $eb629188f3dfefdd$var$LayerRecord = new $6uUbQ$Struct({\n gid: $6uUbQ$uint16,\n paletteIndex: $6uUbQ$uint16 // Index value to use in the appropriate palette. This value must\n}); // be less than numPaletteEntries in the CPAL table, except for\n// the special case noted below. Each palette entry is 16 bits.\n// A palette index of 0xFFFF is a special case indicating that\n// the text foreground color should be used.\nlet $eb629188f3dfefdd$var$BaseGlyphRecord = new $6uUbQ$Struct({\n gid: $6uUbQ$uint16,\n // and is not rendered for color.\n firstLayerIndex: $6uUbQ$uint16,\n // There will be numLayers consecutive entries for this base glyph.\n numLayers: $6uUbQ$uint16\n});\nvar $eb629188f3dfefdd$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n numBaseGlyphRecords: $6uUbQ$uint16,\n baseGlyphRecord: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($eb629188f3dfefdd$var$BaseGlyphRecord, 'numBaseGlyphRecords')),\n layerRecords: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($eb629188f3dfefdd$var$LayerRecord, 'numLayerRecords'), {\n lazy: true\n }),\n numLayerRecords: $6uUbQ$uint16\n});\n\n\n\nlet $08734b8e7dc64587$var$ColorRecord = new $6uUbQ$Struct({\n blue: $6uUbQ$uint8,\n green: $6uUbQ$uint8,\n red: $6uUbQ$uint8,\n alpha: $6uUbQ$uint8\n});\nvar $08734b8e7dc64587$export$2e2bcd8739ae039 = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n header: {\n numPaletteEntries: $6uUbQ$uint16,\n numPalettes: $6uUbQ$uint16,\n numColorRecords: $6uUbQ$uint16,\n colorRecords: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($08734b8e7dc64587$var$ColorRecord, 'numColorRecords')),\n colorRecordIndices: new $6uUbQ$Array($6uUbQ$uint16, 'numPalettes')\n },\n 0: {},\n 1: {\n offsetPaletteTypeArray: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($6uUbQ$uint32, 'numPalettes')),\n offsetPaletteLabelArray: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($6uUbQ$uint16, 'numPalettes')),\n offsetPaletteEntryLabelArray: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($6uUbQ$uint16, 'numPaletteEntries'))\n }\n});\n\n\n\n\n\nlet $497cef411d884e34$var$BaseCoord = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n coordinate: $6uUbQ$int16 // X or Y value, in design units\n },\n 2: {\n coordinate: $6uUbQ$int16,\n referenceGlyph: $6uUbQ$uint16,\n baseCoordPoint: $6uUbQ$uint16 // Index of contour point on the referenceGlyph\n },\n 3: {\n coordinate: $6uUbQ$int16,\n deviceTable: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10)) // Device table for X or Y value\n }\n});\nlet $497cef411d884e34$var$BaseValues = new $6uUbQ$Struct({\n defaultIndex: $6uUbQ$uint16,\n baseCoordCount: $6uUbQ$uint16,\n baseCoords: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseCoord), 'baseCoordCount')\n});\nlet $497cef411d884e34$var$FeatMinMaxRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n minCoord: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseCoord, {\n type: 'parent'\n }),\n maxCoord: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseCoord, {\n type: 'parent'\n }) // May be NULL\n});\nlet $497cef411d884e34$var$MinMax = new $6uUbQ$Struct({\n minCoord: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseCoord),\n maxCoord: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseCoord),\n featMinMaxCount: $6uUbQ$uint16,\n featMinMaxRecords: new $6uUbQ$Array($497cef411d884e34$var$FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order\n});\nlet $497cef411d884e34$var$BaseLangSysRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n minMax: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$MinMax, {\n type: 'parent'\n })\n});\nlet $497cef411d884e34$var$BaseScript = new $6uUbQ$Struct({\n baseValues: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseValues),\n defaultMinMax: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$MinMax),\n baseLangSysCount: $6uUbQ$uint16,\n baseLangSysRecords: new $6uUbQ$Array($497cef411d884e34$var$BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag\n});\nlet $497cef411d884e34$var$BaseScriptRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n script: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseScript, {\n type: 'parent'\n })\n});\nlet $497cef411d884e34$var$BaseScriptList = new $6uUbQ$Array($497cef411d884e34$var$BaseScriptRecord, $6uUbQ$uint16);\n// Array of 4-byte baseline identification tags-must be in alphabetical order\nlet $497cef411d884e34$var$BaseTagList = new $6uUbQ$Array(new $6uUbQ$String(4), $6uUbQ$uint16);\nlet $497cef411d884e34$var$Axis = new $6uUbQ$Struct({\n baseTagList: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseTagList),\n baseScriptList: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$BaseScriptList)\n});\nvar $497cef411d884e34$export$2e2bcd8739ae039 = new $6uUbQ$VersionedStruct($6uUbQ$uint32, {\n header: {\n horizAxis: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$Axis),\n vertAxis: new $6uUbQ$Pointer($6uUbQ$uint16, $497cef411d884e34$var$Axis) // May be NULL\n },\n 0x00010000: {},\n 0x00010001: {\n itemVariationStore: new $6uUbQ$Pointer($6uUbQ$uint32, (0, $1a47b0c45c1c22fe$export$fe1b122a2710f241))\n }\n});\n\n\n\n\n\nlet $cf5f33c63ef209e6$var$AttachPoint = new $6uUbQ$Array($6uUbQ$uint16, $6uUbQ$uint16);\nlet $cf5f33c63ef209e6$var$AttachList = new $6uUbQ$Struct({\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n glyphCount: $6uUbQ$uint16,\n attachPoints: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $cf5f33c63ef209e6$var$AttachPoint), 'glyphCount')\n});\nlet $cf5f33c63ef209e6$var$CaretValue = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n coordinate: $6uUbQ$int16\n },\n 2: {\n caretValuePoint: $6uUbQ$uint16\n },\n 3: {\n coordinate: $6uUbQ$int16,\n deviceTable: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10))\n }\n});\nlet $cf5f33c63ef209e6$var$LigGlyph = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $cf5f33c63ef209e6$var$CaretValue), $6uUbQ$uint16);\nlet $cf5f33c63ef209e6$var$LigCaretList = new $6uUbQ$Struct({\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n ligGlyphCount: $6uUbQ$uint16,\n ligGlyphs: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $cf5f33c63ef209e6$var$LigGlyph), 'ligGlyphCount')\n});\nlet $cf5f33c63ef209e6$var$MarkGlyphSetsDef = new $6uUbQ$Struct({\n markSetTableFormat: $6uUbQ$uint16,\n markSetCount: $6uUbQ$uint16,\n coverage: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint32, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)), 'markSetCount')\n});\nvar $cf5f33c63ef209e6$export$2e2bcd8739ae039 = new $6uUbQ$VersionedStruct($6uUbQ$uint32, {\n header: {\n glyphClassDef: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$843d551fbbafef71)),\n attachList: new $6uUbQ$Pointer($6uUbQ$uint16, $cf5f33c63ef209e6$var$AttachList),\n ligCaretList: new $6uUbQ$Pointer($6uUbQ$uint16, $cf5f33c63ef209e6$var$LigCaretList),\n markAttachClassDef: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$843d551fbbafef71))\n },\n 0x00010000: {},\n 0x00010002: {\n markGlyphSetsDef: new $6uUbQ$Pointer($6uUbQ$uint16, $cf5f33c63ef209e6$var$MarkGlyphSetsDef)\n },\n 0x00010003: {\n markGlyphSetsDef: new $6uUbQ$Pointer($6uUbQ$uint16, $cf5f33c63ef209e6$var$MarkGlyphSetsDef),\n itemVariationStore: new $6uUbQ$Pointer($6uUbQ$uint32, (0, $1a47b0c45c1c22fe$export$fe1b122a2710f241))\n }\n});\n\n\n\n\n\nlet $47e0e8ef515d9903$var$ValueFormat = new $6uUbQ$Bitfield($6uUbQ$uint16, [\n 'xPlacement',\n 'yPlacement',\n 'xAdvance',\n 'yAdvance',\n 'xPlaDevice',\n 'yPlaDevice',\n 'xAdvDevice',\n 'yAdvDevice'\n]);\nlet $47e0e8ef515d9903$var$types = {\n xPlacement: $6uUbQ$int16,\n yPlacement: $6uUbQ$int16,\n xAdvance: $6uUbQ$int16,\n yAdvance: $6uUbQ$int16,\n xPlaDevice: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10), {\n type: 'global',\n relativeTo: (ctx)=>ctx.rel\n }),\n yPlaDevice: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10), {\n type: 'global',\n relativeTo: (ctx)=>ctx.rel\n }),\n xAdvDevice: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10), {\n type: 'global',\n relativeTo: (ctx)=>ctx.rel\n }),\n yAdvDevice: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10), {\n type: 'global',\n relativeTo: (ctx)=>ctx.rel\n })\n};\nclass $47e0e8ef515d9903$var$ValueRecord {\n buildStruct(parent) {\n let struct = parent;\n while(!struct[this.key] && struct.parent)struct = struct.parent;\n if (!struct[this.key]) return;\n let fields = {};\n fields.rel = ()=>struct._startOffset;\n let format = struct[this.key];\n for(let key in format)if (format[key]) fields[key] = $47e0e8ef515d9903$var$types[key];\n return new $6uUbQ$Struct(fields);\n }\n size(val, ctx) {\n return this.buildStruct(ctx).size(val, ctx);\n }\n decode(stream, parent) {\n let res = this.buildStruct(parent).decode(stream, parent);\n delete res.rel;\n return res;\n }\n constructor(key = 'valueFormat'){\n this.key = key;\n }\n}\nlet $47e0e8ef515d9903$var$PairValueRecord = new $6uUbQ$Struct({\n secondGlyph: $6uUbQ$uint16,\n value1: new $47e0e8ef515d9903$var$ValueRecord('valueFormat1'),\n value2: new $47e0e8ef515d9903$var$ValueRecord('valueFormat2')\n});\nlet $47e0e8ef515d9903$var$PairSet = new $6uUbQ$Array($47e0e8ef515d9903$var$PairValueRecord, $6uUbQ$uint16);\nlet $47e0e8ef515d9903$var$Class2Record = new $6uUbQ$Struct({\n value1: new $47e0e8ef515d9903$var$ValueRecord('valueFormat1'),\n value2: new $47e0e8ef515d9903$var$ValueRecord('valueFormat2')\n});\nlet $47e0e8ef515d9903$var$Anchor = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n xCoordinate: $6uUbQ$int16,\n yCoordinate: $6uUbQ$int16\n },\n 2: {\n xCoordinate: $6uUbQ$int16,\n yCoordinate: $6uUbQ$int16,\n anchorPoint: $6uUbQ$uint16\n },\n 3: {\n xCoordinate: $6uUbQ$int16,\n yCoordinate: $6uUbQ$int16,\n xDeviceTable: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10)),\n yDeviceTable: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$8215d14a63d9fb10))\n }\n});\nlet $47e0e8ef515d9903$var$EntryExitRecord = new $6uUbQ$Struct({\n entryAnchor: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$Anchor, {\n type: 'parent'\n }),\n exitAnchor: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$Anchor, {\n type: 'parent'\n })\n});\nlet $47e0e8ef515d9903$var$MarkRecord = new $6uUbQ$Struct({\n class: $6uUbQ$uint16,\n markAnchor: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$Anchor, {\n type: 'parent'\n })\n});\nlet $47e0e8ef515d9903$var$MarkArray = new $6uUbQ$Array($47e0e8ef515d9903$var$MarkRecord, $6uUbQ$uint16);\nlet $47e0e8ef515d9903$var$BaseRecord = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$Anchor), (t)=>t.parent.classCount);\nlet $47e0e8ef515d9903$var$BaseArray = new $6uUbQ$Array($47e0e8ef515d9903$var$BaseRecord, $6uUbQ$uint16);\nlet $47e0e8ef515d9903$var$ComponentRecord = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$Anchor), (t)=>t.parent.parent.classCount);\nlet $47e0e8ef515d9903$var$LigatureAttach = new $6uUbQ$Array($47e0e8ef515d9903$var$ComponentRecord, $6uUbQ$uint16);\nlet $47e0e8ef515d9903$var$LigatureArray = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$LigatureAttach), $6uUbQ$uint16);\nlet $47e0e8ef515d9903$export$73a8cfb19cd43a0f = new $6uUbQ$VersionedStruct('lookupType', {\n 1: new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n valueFormat: $47e0e8ef515d9903$var$ValueFormat,\n value: new $47e0e8ef515d9903$var$ValueRecord()\n },\n 2: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n valueFormat: $47e0e8ef515d9903$var$ValueFormat,\n valueCount: $6uUbQ$uint16,\n values: new $6uUbQ$LazyArray(new $47e0e8ef515d9903$var$ValueRecord(), 'valueCount')\n }\n }),\n 2: new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n valueFormat1: $47e0e8ef515d9903$var$ValueFormat,\n valueFormat2: $47e0e8ef515d9903$var$ValueFormat,\n pairSetCount: $6uUbQ$uint16,\n pairSets: new $6uUbQ$LazyArray(new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$PairSet), 'pairSetCount')\n },\n 2: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n valueFormat1: $47e0e8ef515d9903$var$ValueFormat,\n valueFormat2: $47e0e8ef515d9903$var$ValueFormat,\n classDef1: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$843d551fbbafef71)),\n classDef2: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$843d551fbbafef71)),\n class1Count: $6uUbQ$uint16,\n class2Count: $6uUbQ$uint16,\n classRecords: new $6uUbQ$LazyArray(new $6uUbQ$LazyArray($47e0e8ef515d9903$var$Class2Record, 'class2Count'), 'class1Count')\n }\n }),\n 3: {\n format: $6uUbQ$uint16,\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n entryExitCount: $6uUbQ$uint16,\n entryExitRecords: new $6uUbQ$Array($47e0e8ef515d9903$var$EntryExitRecord, 'entryExitCount')\n },\n 4: {\n format: $6uUbQ$uint16,\n markCoverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n baseCoverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n classCount: $6uUbQ$uint16,\n markArray: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$MarkArray),\n baseArray: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$BaseArray)\n },\n 5: {\n format: $6uUbQ$uint16,\n markCoverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n ligatureCoverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n classCount: $6uUbQ$uint16,\n markArray: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$MarkArray),\n ligatureArray: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$LigatureArray)\n },\n 6: {\n format: $6uUbQ$uint16,\n mark1Coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n mark2Coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n classCount: $6uUbQ$uint16,\n mark1Array: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$MarkArray),\n mark2Array: new $6uUbQ$Pointer($6uUbQ$uint16, $47e0e8ef515d9903$var$BaseArray)\n },\n 7: (0, $7cbbe4e24ef3cb75$export$841858b892ce1f4c),\n 8: (0, $7cbbe4e24ef3cb75$export$5e6d09e6861162f6),\n 9: {\n posFormat: $6uUbQ$uint16,\n lookupType: $6uUbQ$uint16,\n extension: new $6uUbQ$Pointer($6uUbQ$uint32, null)\n }\n});\n// Fix circular reference\n$47e0e8ef515d9903$export$73a8cfb19cd43a0f.versions[9].extension.type = $47e0e8ef515d9903$export$73a8cfb19cd43a0f;\nvar $47e0e8ef515d9903$export$2e2bcd8739ae039 = new $6uUbQ$VersionedStruct($6uUbQ$uint32, {\n header: {\n scriptList: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$3e15fc05ce864229)),\n featureList: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$aa18130def4b6cb4)),\n lookupList: new $6uUbQ$Pointer($6uUbQ$uint16, new (0, $7cbbe4e24ef3cb75$export$df0008c6ff2da22a)($47e0e8ef515d9903$export$73a8cfb19cd43a0f))\n },\n 0x00010000: {},\n 0x00010001: {\n featureVariations: new $6uUbQ$Pointer($6uUbQ$uint32, (0, $1a47b0c45c1c22fe$export$441b70b7971dd419))\n }\n});\n\n\n\n\n\nlet $d3f442064af66e06$var$Sequence = new $6uUbQ$Array($6uUbQ$uint16, $6uUbQ$uint16);\nlet $d3f442064af66e06$var$AlternateSet = $d3f442064af66e06$var$Sequence;\nlet $d3f442064af66e06$var$Ligature = new $6uUbQ$Struct({\n glyph: $6uUbQ$uint16,\n compCount: $6uUbQ$uint16,\n components: new $6uUbQ$Array($6uUbQ$uint16, (t)=>t.compCount - 1)\n});\nlet $d3f442064af66e06$var$LigatureSet = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $d3f442064af66e06$var$Ligature), $6uUbQ$uint16);\nlet $d3f442064af66e06$var$GSUBLookup = new $6uUbQ$VersionedStruct('lookupType', {\n 1: new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 1: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n deltaGlyphID: $6uUbQ$int16\n },\n 2: {\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n glyphCount: $6uUbQ$uint16,\n substitute: new $6uUbQ$LazyArray($6uUbQ$uint16, 'glyphCount')\n }\n }),\n 2: {\n substFormat: $6uUbQ$uint16,\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n count: $6uUbQ$uint16,\n sequences: new $6uUbQ$LazyArray(new $6uUbQ$Pointer($6uUbQ$uint16, $d3f442064af66e06$var$Sequence), 'count')\n },\n 3: {\n substFormat: $6uUbQ$uint16,\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n count: $6uUbQ$uint16,\n alternateSet: new $6uUbQ$LazyArray(new $6uUbQ$Pointer($6uUbQ$uint16, $d3f442064af66e06$var$AlternateSet), 'count')\n },\n 4: {\n substFormat: $6uUbQ$uint16,\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n count: $6uUbQ$uint16,\n ligatureSets: new $6uUbQ$LazyArray(new $6uUbQ$Pointer($6uUbQ$uint16, $d3f442064af66e06$var$LigatureSet), 'count')\n },\n 5: (0, $7cbbe4e24ef3cb75$export$841858b892ce1f4c),\n 6: (0, $7cbbe4e24ef3cb75$export$5e6d09e6861162f6),\n 7: {\n substFormat: $6uUbQ$uint16,\n lookupType: $6uUbQ$uint16,\n extension: new $6uUbQ$Pointer($6uUbQ$uint32, null)\n },\n 8: {\n substFormat: $6uUbQ$uint16,\n coverage: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)),\n backtrackCoverage: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)), 'backtrackGlyphCount'),\n lookaheadGlyphCount: $6uUbQ$uint16,\n lookaheadCoverage: new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$17608c3f81a6111)), 'lookaheadGlyphCount'),\n glyphCount: $6uUbQ$uint16,\n substitutes: new $6uUbQ$Array($6uUbQ$uint16, 'glyphCount')\n }\n});\n// Fix circular reference\n$d3f442064af66e06$var$GSUBLookup.versions[7].extension.type = $d3f442064af66e06$var$GSUBLookup;\nvar $d3f442064af66e06$export$2e2bcd8739ae039 = new $6uUbQ$VersionedStruct($6uUbQ$uint32, {\n header: {\n scriptList: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$3e15fc05ce864229)),\n featureList: new $6uUbQ$Pointer($6uUbQ$uint16, (0, $7cbbe4e24ef3cb75$export$aa18130def4b6cb4)),\n lookupList: new $6uUbQ$Pointer($6uUbQ$uint16, new (0, $7cbbe4e24ef3cb75$export$df0008c6ff2da22a)($d3f442064af66e06$var$GSUBLookup))\n },\n 0x00010000: {},\n 0x00010001: {\n featureVariations: new $6uUbQ$Pointer($6uUbQ$uint32, (0, $1a47b0c45c1c22fe$export$441b70b7971dd419))\n }\n});\n\n\n\n\n\nlet $71cfb3c4767fbd0c$var$JstfGSUBModList = new $6uUbQ$Array($6uUbQ$uint16, $6uUbQ$uint16);\nlet $71cfb3c4767fbd0c$var$JstfPriority = new $6uUbQ$Struct({\n shrinkageEnableGSUB: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n shrinkageDisableGSUB: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n shrinkageEnableGPOS: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n shrinkageDisableGPOS: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n shrinkageJstfMax: new $6uUbQ$Pointer($6uUbQ$uint16, new (0, $7cbbe4e24ef3cb75$export$df0008c6ff2da22a)((0, $47e0e8ef515d9903$export$73a8cfb19cd43a0f))),\n extensionEnableGSUB: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n extensionDisableGSUB: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n extensionEnableGPOS: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n extensionDisableGPOS: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfGSUBModList),\n extensionJstfMax: new $6uUbQ$Pointer($6uUbQ$uint16, new (0, $7cbbe4e24ef3cb75$export$df0008c6ff2da22a)((0, $47e0e8ef515d9903$export$73a8cfb19cd43a0f)))\n});\nlet $71cfb3c4767fbd0c$var$JstfLangSys = new $6uUbQ$Array(new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfPriority), $6uUbQ$uint16);\nlet $71cfb3c4767fbd0c$var$JstfLangSysRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n jstfLangSys: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfLangSys)\n});\nlet $71cfb3c4767fbd0c$var$JstfScript = new $6uUbQ$Struct({\n extenderGlyphs: new $6uUbQ$Pointer($6uUbQ$uint16, new $6uUbQ$Array($6uUbQ$uint16, $6uUbQ$uint16)),\n defaultLangSys: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfLangSys),\n langSysCount: $6uUbQ$uint16,\n langSysRecords: new $6uUbQ$Array($71cfb3c4767fbd0c$var$JstfLangSysRecord, 'langSysCount')\n});\nlet $71cfb3c4767fbd0c$var$JstfScriptRecord = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n script: new $6uUbQ$Pointer($6uUbQ$uint16, $71cfb3c4767fbd0c$var$JstfScript, {\n type: 'parent'\n })\n});\nvar $71cfb3c4767fbd0c$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint32,\n scriptCount: $6uUbQ$uint16,\n scriptList: new $6uUbQ$Array($71cfb3c4767fbd0c$var$JstfScriptRecord, 'scriptCount')\n});\n\n\n\n\n// TODO: add this to restructure\nclass $d059a6bd2d3b5b63$var$VariableSizeNumber {\n decode(stream, parent) {\n switch(this.size(0, parent)){\n case 1:\n return stream.readUInt8();\n case 2:\n return stream.readUInt16BE();\n case 3:\n return stream.readUInt24BE();\n case 4:\n return stream.readUInt32BE();\n }\n }\n size(val, parent) {\n return (0, $6uUbQ$resolveLength)(this._size, null, parent);\n }\n constructor(size){\n this._size = size;\n }\n}\nlet $d059a6bd2d3b5b63$var$MapDataEntry = new $6uUbQ$Struct({\n entry: new $d059a6bd2d3b5b63$var$VariableSizeNumber((t)=>((t.parent.entryFormat & 0x0030) >> 4) + 1),\n outerIndex: (t)=>t.entry >> (t.parent.entryFormat & 0x000F) + 1,\n innerIndex: (t)=>t.entry & (1 << (t.parent.entryFormat & 0x000F) + 1) - 1\n});\nlet $d059a6bd2d3b5b63$var$DeltaSetIndexMap = new $6uUbQ$Struct({\n entryFormat: $6uUbQ$uint16,\n mapCount: $6uUbQ$uint16,\n mapData: new $6uUbQ$Array($d059a6bd2d3b5b63$var$MapDataEntry, 'mapCount')\n});\nvar $d059a6bd2d3b5b63$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n majorVersion: $6uUbQ$uint16,\n minorVersion: $6uUbQ$uint16,\n itemVariationStore: new $6uUbQ$Pointer($6uUbQ$uint32, (0, $1a47b0c45c1c22fe$export$fe1b122a2710f241)),\n advanceWidthMapping: new $6uUbQ$Pointer($6uUbQ$uint32, $d059a6bd2d3b5b63$var$DeltaSetIndexMap),\n LSBMapping: new $6uUbQ$Pointer($6uUbQ$uint32, $d059a6bd2d3b5b63$var$DeltaSetIndexMap),\n RSBMapping: new $6uUbQ$Pointer($6uUbQ$uint32, $d059a6bd2d3b5b63$var$DeltaSetIndexMap)\n});\n\n\n\nlet $dceeca3e1977ce30$var$Signature = new $6uUbQ$Struct({\n format: $6uUbQ$uint32,\n length: $6uUbQ$uint32,\n offset: $6uUbQ$uint32\n});\nlet $dceeca3e1977ce30$var$SignatureBlock = new $6uUbQ$Struct({\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16, 2),\n cbSignature: $6uUbQ$uint32,\n signature: new $6uUbQ$Buffer('cbSignature')\n});\nvar $dceeca3e1977ce30$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n ulVersion: $6uUbQ$uint32,\n usNumSigs: $6uUbQ$uint16,\n usFlag: $6uUbQ$uint16,\n signatures: new $6uUbQ$Array($dceeca3e1977ce30$var$Signature, 'usNumSigs'),\n signatureBlocks: new $6uUbQ$Array($dceeca3e1977ce30$var$SignatureBlock, 'usNumSigs')\n});\n\n\n\nlet $8acd740a9435aad0$var$GaspRange = new $6uUbQ$Struct({\n rangeMaxPPEM: $6uUbQ$uint16,\n rangeGaspBehavior: new $6uUbQ$Bitfield($6uUbQ$uint16, [\n 'grayscale',\n 'gridfit',\n 'symmetricSmoothing',\n 'symmetricGridfit' // only in version 1, for ClearType\n ])\n});\nvar $8acd740a9435aad0$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n numRanges: $6uUbQ$uint16,\n gaspRanges: new $6uUbQ$Array($8acd740a9435aad0$var$GaspRange, 'numRanges') // Sorted by ppem\n});\n\n\n\nlet $b5f380243c34d6a0$var$DeviceRecord = new $6uUbQ$Struct({\n pixelSize: $6uUbQ$uint8,\n maximumWidth: $6uUbQ$uint8,\n widths: new $6uUbQ$Array($6uUbQ$uint8, (t)=>t.parent.parent.maxp.numGlyphs)\n});\nvar // The Horizontal Device Metrics table stores integer advance widths scaled to particular pixel sizes\n$b5f380243c34d6a0$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n numRecords: $6uUbQ$int16,\n sizeDeviceRecord: $6uUbQ$int32,\n records: new $6uUbQ$Array($b5f380243c34d6a0$var$DeviceRecord, 'numRecords')\n});\n\n\n\nlet $ca2df1256966e313$var$KernPair = new $6uUbQ$Struct({\n left: $6uUbQ$uint16,\n right: $6uUbQ$uint16,\n value: $6uUbQ$int16\n});\nlet $ca2df1256966e313$var$ClassTable = new $6uUbQ$Struct({\n firstGlyph: $6uUbQ$uint16,\n nGlyphs: $6uUbQ$uint16,\n offsets: new $6uUbQ$Array($6uUbQ$uint16, 'nGlyphs'),\n max: (t)=>t.offsets.length && Math.max.apply(Math, t.offsets)\n});\nlet $ca2df1256966e313$var$Kern2Array = new $6uUbQ$Struct({\n off: (t)=>t._startOffset - t.parent.parent._startOffset,\n len: (t)=>((t.parent.leftTable.max - t.off) / t.parent.rowWidth + 1) * (t.parent.rowWidth / 2),\n values: new $6uUbQ$LazyArray($6uUbQ$int16, 'len')\n});\nlet $ca2df1256966e313$var$KernSubtable = new $6uUbQ$VersionedStruct('format', {\n 0: {\n nPairs: $6uUbQ$uint16,\n searchRange: $6uUbQ$uint16,\n entrySelector: $6uUbQ$uint16,\n rangeShift: $6uUbQ$uint16,\n pairs: new $6uUbQ$Array($ca2df1256966e313$var$KernPair, 'nPairs')\n },\n 2: {\n rowWidth: $6uUbQ$uint16,\n leftTable: new $6uUbQ$Pointer($6uUbQ$uint16, $ca2df1256966e313$var$ClassTable, {\n type: 'parent'\n }),\n rightTable: new $6uUbQ$Pointer($6uUbQ$uint16, $ca2df1256966e313$var$ClassTable, {\n type: 'parent'\n }),\n array: new $6uUbQ$Pointer($6uUbQ$uint16, $ca2df1256966e313$var$Kern2Array, {\n type: 'parent'\n })\n },\n 3: {\n glyphCount: $6uUbQ$uint16,\n kernValueCount: $6uUbQ$uint8,\n leftClassCount: $6uUbQ$uint8,\n rightClassCount: $6uUbQ$uint8,\n flags: $6uUbQ$uint8,\n kernValue: new $6uUbQ$Array($6uUbQ$int16, 'kernValueCount'),\n leftClass: new $6uUbQ$Array($6uUbQ$uint8, 'glyphCount'),\n rightClass: new $6uUbQ$Array($6uUbQ$uint8, 'glyphCount'),\n kernIndex: new $6uUbQ$Array($6uUbQ$uint8, (t)=>t.leftClassCount * t.rightClassCount)\n }\n});\nlet $ca2df1256966e313$var$KernTable = new $6uUbQ$VersionedStruct('version', {\n 0: {\n subVersion: $6uUbQ$uint16,\n length: $6uUbQ$uint16,\n format: $6uUbQ$uint8,\n coverage: new $6uUbQ$Bitfield($6uUbQ$uint8, [\n 'horizontal',\n 'minimum',\n 'crossStream',\n 'override' // If set to 1 the value in this table replaces the accumulated value\n ]),\n subtable: $ca2df1256966e313$var$KernSubtable,\n padding: new $6uUbQ$Reserved($6uUbQ$uint8, (t)=>t.length - t._currentOffset)\n },\n 1: {\n length: $6uUbQ$uint32,\n coverage: new $6uUbQ$Bitfield($6uUbQ$uint8, [\n null,\n null,\n null,\n null,\n null,\n 'variation',\n 'crossStream',\n 'vertical' // Set if table has vertical kerning values\n ]),\n format: $6uUbQ$uint8,\n tupleIndex: $6uUbQ$uint16,\n subtable: $ca2df1256966e313$var$KernSubtable,\n padding: new $6uUbQ$Reserved($6uUbQ$uint8, (t)=>t.length - t._currentOffset)\n }\n});\nvar $ca2df1256966e313$export$2e2bcd8739ae039 = new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 0: {\n nTables: $6uUbQ$uint16,\n tables: new $6uUbQ$Array($ca2df1256966e313$var$KernTable, 'nTables')\n },\n 1: {\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n nTables: $6uUbQ$uint32,\n tables: new $6uUbQ$Array($ca2df1256966e313$var$KernTable, 'nTables')\n }\n});\n\n\n\nvar // Linear Threshold table\n// Records the ppem for each glyph at which the scaling becomes linear again,\n// despite instructions effecting the advance width\n$7a9f92b0c46ebe33$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n numGlyphs: $6uUbQ$uint16,\n yPels: new $6uUbQ$Array($6uUbQ$uint8, 'numGlyphs')\n});\n\n\n\nvar // PCL 5 Table\n// NOTE: The PCLT table is strongly discouraged for OpenType fonts with TrueType outlines\n$2b2ccc419d152631$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n fontNumber: $6uUbQ$uint32,\n pitch: $6uUbQ$uint16,\n xHeight: $6uUbQ$uint16,\n style: $6uUbQ$uint16,\n typeFamily: $6uUbQ$uint16,\n capHeight: $6uUbQ$uint16,\n symbolSet: $6uUbQ$uint16,\n typeface: new $6uUbQ$String(16),\n characterComplement: new $6uUbQ$String(8),\n fileName: new $6uUbQ$String(6),\n strokeWeight: new $6uUbQ$String(1),\n widthType: new $6uUbQ$String(1),\n serifStyle: $6uUbQ$uint8,\n reserved: new $6uUbQ$Reserved($6uUbQ$uint8)\n});\n\n\n\n// VDMX tables contain ascender/descender overrides for certain (usually small)\n// sizes. This is needed in order to match font metrics on Windows.\nlet $ca5b40b9bcda9c9b$var$Ratio = new $6uUbQ$Struct({\n bCharSet: $6uUbQ$uint8,\n xRatio: $6uUbQ$uint8,\n yStartRatio: $6uUbQ$uint8,\n yEndRatio: $6uUbQ$uint8 // Ending y-Ratio value\n});\nlet $ca5b40b9bcda9c9b$var$vTable = new $6uUbQ$Struct({\n yPelHeight: $6uUbQ$uint16,\n yMax: $6uUbQ$int16,\n yMin: $6uUbQ$int16 // Minimum value (in pels) for this yPelHeight\n});\nlet $ca5b40b9bcda9c9b$var$VdmxGroup = new $6uUbQ$Struct({\n recs: $6uUbQ$uint16,\n startsz: $6uUbQ$uint8,\n endsz: $6uUbQ$uint8,\n entries: new $6uUbQ$Array($ca5b40b9bcda9c9b$var$vTable, 'recs') // The VDMX records\n});\nvar $ca5b40b9bcda9c9b$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n numRecs: $6uUbQ$uint16,\n numRatios: $6uUbQ$uint16,\n ratioRanges: new $6uUbQ$Array($ca5b40b9bcda9c9b$var$Ratio, 'numRatios'),\n offsets: new $6uUbQ$Array($6uUbQ$uint16, 'numRatios'),\n groups: new $6uUbQ$Array($ca5b40b9bcda9c9b$var$VdmxGroup, 'numRecs') // The actual VDMX groupings\n});\n\n\n\nvar // Vertical Header Table\n$69530a3c40755af0$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n ascent: $6uUbQ$int16,\n descent: $6uUbQ$int16,\n lineGap: $6uUbQ$int16,\n advanceHeightMax: $6uUbQ$int16,\n minTopSideBearing: $6uUbQ$int16,\n minBottomSideBearing: $6uUbQ$int16,\n yMaxExtent: $6uUbQ$int16,\n caretSlopeRise: $6uUbQ$int16,\n caretSlopeRun: $6uUbQ$int16,\n caretOffset: $6uUbQ$int16,\n reserved: new $6uUbQ$Reserved($6uUbQ$int16, 4),\n metricDataFormat: $6uUbQ$int16,\n numberOfMetrics: $6uUbQ$uint16 // Number of advance heights in the Vertical Metrics table\n});\n\n\n\nlet $344073dd270f0e62$var$VmtxEntry = new $6uUbQ$Struct({\n advance: $6uUbQ$uint16,\n bearing: $6uUbQ$int16 // The top sidebearing of the glyph\n});\nvar // Vertical Metrics Table\n$344073dd270f0e62$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n metrics: new $6uUbQ$LazyArray($344073dd270f0e62$var$VmtxEntry, (t)=>t.parent.vhea.numberOfMetrics),\n bearings: new $6uUbQ$LazyArray($6uUbQ$int16, (t)=>t.parent.maxp.numGlyphs - t.parent.vhea.numberOfMetrics)\n});\n\n\n\nlet $3793b781918cfced$var$shortFrac = new $6uUbQ$Fixed(16, 'BE', 14);\nlet $3793b781918cfced$var$Correspondence = new $6uUbQ$Struct({\n fromCoord: $3793b781918cfced$var$shortFrac,\n toCoord: $3793b781918cfced$var$shortFrac\n});\nlet $3793b781918cfced$var$Segment = new $6uUbQ$Struct({\n pairCount: $6uUbQ$uint16,\n correspondence: new $6uUbQ$Array($3793b781918cfced$var$Correspondence, 'pairCount')\n});\nvar $3793b781918cfced$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$fixed32,\n axisCount: $6uUbQ$uint32,\n segment: new $6uUbQ$Array($3793b781918cfced$var$Segment, 'axisCount')\n});\n\n\n\n\nclass $6cb7dd5f47d82580$var$UnboundedArrayAccessor {\n getItem(index) {\n if (this._items[index] == null) {\n let pos = this.stream.pos;\n this.stream.pos = this.base + this.type.size(null, this.parent) * index;\n this._items[index] = this.type.decode(this.stream, this.parent);\n this.stream.pos = pos;\n }\n return this._items[index];\n }\n inspect() {\n return `[UnboundedArray ${this.type.constructor.name}]`;\n }\n constructor(type, stream, parent){\n this.type = type;\n this.stream = stream;\n this.parent = parent;\n this.base = this.stream.pos;\n this._items = [];\n }\n}\nclass $6cb7dd5f47d82580$export$c5af1eebc882e39a extends $6uUbQ$Array {\n decode(stream, parent) {\n return new $6cb7dd5f47d82580$var$UnboundedArrayAccessor(this.type, stream, parent);\n }\n constructor(type){\n super(type, 0);\n }\n}\nlet $6cb7dd5f47d82580$export$8351f8c2ae2f103c = function(ValueType = $6uUbQ$uint16) {\n // Helper class that makes internal structures invisible to pointers\n class Shadow {\n decode(stream, ctx) {\n ctx = ctx.parent.parent;\n return this.type.decode(stream, ctx);\n }\n size(val, ctx) {\n ctx = ctx.parent.parent;\n return this.type.size(val, ctx);\n }\n encode(stream, val, ctx) {\n ctx = ctx.parent.parent;\n return this.type.encode(stream, val, ctx);\n }\n constructor(type){\n this.type = type;\n }\n }\n ValueType = new Shadow(ValueType);\n let BinarySearchHeader = new $6uUbQ$Struct({\n unitSize: $6uUbQ$uint16,\n nUnits: $6uUbQ$uint16,\n searchRange: $6uUbQ$uint16,\n entrySelector: $6uUbQ$uint16,\n rangeShift: $6uUbQ$uint16\n });\n let LookupSegmentSingle = new $6uUbQ$Struct({\n lastGlyph: $6uUbQ$uint16,\n firstGlyph: $6uUbQ$uint16,\n value: ValueType\n });\n let LookupSegmentArray = new $6uUbQ$Struct({\n lastGlyph: $6uUbQ$uint16,\n firstGlyph: $6uUbQ$uint16,\n values: new $6uUbQ$Pointer($6uUbQ$uint16, new $6uUbQ$Array(ValueType, (t)=>t.lastGlyph - t.firstGlyph + 1), {\n type: 'parent'\n })\n });\n let LookupSingle = new $6uUbQ$Struct({\n glyph: $6uUbQ$uint16,\n value: ValueType\n });\n return new $6uUbQ$VersionedStruct($6uUbQ$uint16, {\n 0: {\n values: new $6cb7dd5f47d82580$export$c5af1eebc882e39a(ValueType) // length == number of glyphs maybe?\n },\n 2: {\n binarySearchHeader: BinarySearchHeader,\n segments: new $6uUbQ$Array(LookupSegmentSingle, (t)=>t.binarySearchHeader.nUnits)\n },\n 4: {\n binarySearchHeader: BinarySearchHeader,\n segments: new $6uUbQ$Array(LookupSegmentArray, (t)=>t.binarySearchHeader.nUnits)\n },\n 6: {\n binarySearchHeader: BinarySearchHeader,\n segments: new $6uUbQ$Array(LookupSingle, (t)=>t.binarySearchHeader.nUnits)\n },\n 8: {\n firstGlyph: $6uUbQ$uint16,\n count: $6uUbQ$uint16,\n values: new $6uUbQ$Array(ValueType, 'count')\n }\n });\n};\nfunction $6cb7dd5f47d82580$export$79f7d93d790934ba(entryData = {}, lookupType = $6uUbQ$uint16) {\n let entry = Object.assign({\n newState: $6uUbQ$uint16,\n flags: $6uUbQ$uint16\n }, entryData);\n let Entry = new $6uUbQ$Struct(entry);\n let StateArray = new $6cb7dd5f47d82580$export$c5af1eebc882e39a(new $6uUbQ$Array($6uUbQ$uint16, (t)=>t.nClasses));\n let StateHeader = new $6uUbQ$Struct({\n nClasses: $6uUbQ$uint32,\n classTable: new $6uUbQ$Pointer($6uUbQ$uint32, new $6cb7dd5f47d82580$export$8351f8c2ae2f103c(lookupType)),\n stateArray: new $6uUbQ$Pointer($6uUbQ$uint32, StateArray),\n entryTable: new $6uUbQ$Pointer($6uUbQ$uint32, new $6cb7dd5f47d82580$export$c5af1eebc882e39a(Entry))\n });\n return StateHeader;\n}\nfunction $6cb7dd5f47d82580$export$105027425199cc51(entryData = {}, lookupType = $6uUbQ$uint16) {\n let ClassLookupTable = new $6uUbQ$Struct({\n version () {\n return 8;\n },\n firstGlyph: $6uUbQ$uint16,\n values: new $6uUbQ$Array($6uUbQ$uint8, $6uUbQ$uint16)\n });\n let entry = Object.assign({\n newStateOffset: $6uUbQ$uint16,\n // convert offset to stateArray index\n newState: (t)=>(t.newStateOffset - (t.parent.stateArray.base - t.parent._startOffset)) / t.parent.nClasses,\n flags: $6uUbQ$uint16\n }, entryData);\n let Entry = new $6uUbQ$Struct(entry);\n let StateArray = new $6cb7dd5f47d82580$export$c5af1eebc882e39a(new $6uUbQ$Array($6uUbQ$uint8, (t)=>t.nClasses));\n let StateHeader1 = new $6uUbQ$Struct({\n nClasses: $6uUbQ$uint16,\n classTable: new $6uUbQ$Pointer($6uUbQ$uint16, ClassLookupTable),\n stateArray: new $6uUbQ$Pointer($6uUbQ$uint16, StateArray),\n entryTable: new $6uUbQ$Pointer($6uUbQ$uint16, new $6cb7dd5f47d82580$export$c5af1eebc882e39a(Entry))\n });\n return StateHeader1;\n}\n\n\nlet $6a3746e8c708f5a3$var$BslnSubtable = new $6uUbQ$VersionedStruct('format', {\n 0: {\n deltas: new $6uUbQ$Array($6uUbQ$int16, 32)\n },\n 1: {\n deltas: new $6uUbQ$Array($6uUbQ$int16, 32),\n mappingData: new (0, $6cb7dd5f47d82580$export$8351f8c2ae2f103c)($6uUbQ$uint16)\n },\n 2: {\n standardGlyph: $6uUbQ$uint16,\n controlPoints: new $6uUbQ$Array($6uUbQ$uint16, 32)\n },\n 3: {\n standardGlyph: $6uUbQ$uint16,\n controlPoints: new $6uUbQ$Array($6uUbQ$uint16, 32),\n mappingData: new (0, $6cb7dd5f47d82580$export$8351f8c2ae2f103c)($6uUbQ$uint16)\n }\n});\nvar $6a3746e8c708f5a3$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$fixed32,\n format: $6uUbQ$uint16,\n defaultBaseline: $6uUbQ$uint16,\n subtable: $6a3746e8c708f5a3$var$BslnSubtable\n});\n\n\n\nlet $d0c76fac617b308a$var$Setting = new $6uUbQ$Struct({\n setting: $6uUbQ$uint16,\n nameIndex: $6uUbQ$int16,\n name: (t)=>t.parent.parent.parent.name.records.fontFeatures[t.nameIndex]\n});\nlet $d0c76fac617b308a$var$FeatureName = new $6uUbQ$Struct({\n feature: $6uUbQ$uint16,\n nSettings: $6uUbQ$uint16,\n settingTable: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array($d0c76fac617b308a$var$Setting, 'nSettings'), {\n type: 'parent'\n }),\n featureFlags: new $6uUbQ$Bitfield($6uUbQ$uint8, [\n null,\n null,\n null,\n null,\n null,\n null,\n 'hasDefault',\n 'exclusive'\n ]),\n defaultSetting: $6uUbQ$uint8,\n nameIndex: $6uUbQ$int16,\n name: (t)=>t.parent.parent.name.records.fontFeatures[t.nameIndex]\n});\nvar $d0c76fac617b308a$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$fixed32,\n featureNameCount: $6uUbQ$uint16,\n reserved1: new $6uUbQ$Reserved($6uUbQ$uint16),\n reserved2: new $6uUbQ$Reserved($6uUbQ$uint32),\n featureNames: new $6uUbQ$Array($d0c76fac617b308a$var$FeatureName, 'featureNameCount')\n});\n\n\n\nlet $e83fd065f00fcd01$var$Axis = new $6uUbQ$Struct({\n axisTag: new $6uUbQ$String(4),\n minValue: $6uUbQ$fixed32,\n defaultValue: $6uUbQ$fixed32,\n maxValue: $6uUbQ$fixed32,\n flags: $6uUbQ$uint16,\n nameID: $6uUbQ$uint16,\n name: (t)=>t.parent.parent.name.records.fontFeatures[t.nameID]\n});\nlet $e83fd065f00fcd01$var$Instance = new $6uUbQ$Struct({\n nameID: $6uUbQ$uint16,\n name: (t)=>t.parent.parent.name.records.fontFeatures[t.nameID],\n flags: $6uUbQ$uint16,\n coord: new $6uUbQ$Array($6uUbQ$fixed32, (t)=>t.parent.axisCount),\n postscriptNameID: new $6uUbQ$Optional($6uUbQ$uint16, (t)=>t.parent.instanceSize - t._currentOffset > 0)\n});\nvar $e83fd065f00fcd01$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$fixed32,\n offsetToData: $6uUbQ$uint16,\n countSizePairs: $6uUbQ$uint16,\n axisCount: $6uUbQ$uint16,\n axisSize: $6uUbQ$uint16,\n instanceCount: $6uUbQ$uint16,\n instanceSize: $6uUbQ$uint16,\n axis: new $6uUbQ$Array($e83fd065f00fcd01$var$Axis, 'axisCount'),\n instance: new $6uUbQ$Array($e83fd065f00fcd01$var$Instance, 'instanceCount')\n});\n\n\n\nlet $dbe33c8d3a7f131c$var$shortFrac = new $6uUbQ$Fixed(16, 'BE', 14);\nclass $dbe33c8d3a7f131c$var$Offset {\n static decode(stream, parent) {\n // In short format, offsets are multiplied by 2.\n // This doesn't seem to be documented by Apple, but it\n // is implemented this way in Freetype.\n return parent.flags ? stream.readUInt32BE() : stream.readUInt16BE() * 2;\n }\n}\nlet $dbe33c8d3a7f131c$var$gvar = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n axisCount: $6uUbQ$uint16,\n globalCoordCount: $6uUbQ$uint16,\n globalCoords: new $6uUbQ$Pointer($6uUbQ$uint32, new $6uUbQ$Array(new $6uUbQ$Array($dbe33c8d3a7f131c$var$shortFrac, 'axisCount'), 'globalCoordCount')),\n glyphCount: $6uUbQ$uint16,\n flags: $6uUbQ$uint16,\n offsetToData: $6uUbQ$uint32,\n offsets: new $6uUbQ$Array(new $6uUbQ$Pointer($dbe33c8d3a7f131c$var$Offset, 'void', {\n relativeTo: (ctx)=>ctx.offsetToData,\n allowNull: false\n }), (t)=>t.glyphCount + 1)\n});\nvar $dbe33c8d3a7f131c$export$2e2bcd8739ae039 = $dbe33c8d3a7f131c$var$gvar;\n\n\n\n\nlet $05b01887df96c4ee$var$ClassTable = new $6uUbQ$Struct({\n length: $6uUbQ$uint16,\n coverage: $6uUbQ$uint16,\n subFeatureFlags: $6uUbQ$uint32,\n stateTable: new (0, $6cb7dd5f47d82580$export$105027425199cc51)\n});\nlet $05b01887df96c4ee$var$WidthDeltaRecord = new $6uUbQ$Struct({\n justClass: $6uUbQ$uint32,\n beforeGrowLimit: $6uUbQ$fixed32,\n beforeShrinkLimit: $6uUbQ$fixed32,\n afterGrowLimit: $6uUbQ$fixed32,\n afterShrinkLimit: $6uUbQ$fixed32,\n growFlags: $6uUbQ$uint16,\n shrinkFlags: $6uUbQ$uint16\n});\nlet $05b01887df96c4ee$var$WidthDeltaCluster = new $6uUbQ$Array($05b01887df96c4ee$var$WidthDeltaRecord, $6uUbQ$uint32);\nlet $05b01887df96c4ee$var$ActionData = new $6uUbQ$VersionedStruct('actionType', {\n 0: {\n lowerLimit: $6uUbQ$fixed32,\n upperLimit: $6uUbQ$fixed32,\n order: $6uUbQ$uint16,\n glyphs: new $6uUbQ$Array($6uUbQ$uint16, $6uUbQ$uint16)\n },\n 1: {\n addGlyph: $6uUbQ$uint16\n },\n 2: {\n substThreshold: $6uUbQ$fixed32,\n addGlyph: $6uUbQ$uint16,\n substGlyph: $6uUbQ$uint16\n },\n 3: {},\n 4: {\n variationAxis: $6uUbQ$uint32,\n minimumLimit: $6uUbQ$fixed32,\n noStretchValue: $6uUbQ$fixed32,\n maximumLimit: $6uUbQ$fixed32\n },\n 5: {\n flags: $6uUbQ$uint16,\n glyph: $6uUbQ$uint16\n }\n});\nlet $05b01887df96c4ee$var$Action = new $6uUbQ$Struct({\n actionClass: $6uUbQ$uint16,\n actionType: $6uUbQ$uint16,\n actionLength: $6uUbQ$uint32,\n actionData: $05b01887df96c4ee$var$ActionData,\n padding: new $6uUbQ$Reserved($6uUbQ$uint8, (t)=>t.actionLength - t._currentOffset)\n});\nlet $05b01887df96c4ee$var$PostcompensationAction = new $6uUbQ$Array($05b01887df96c4ee$var$Action, $6uUbQ$uint32);\nlet $05b01887df96c4ee$var$PostCompensationTable = new $6uUbQ$Struct({\n lookupTable: new (0, $6cb7dd5f47d82580$export$8351f8c2ae2f103c)(new $6uUbQ$Pointer($6uUbQ$uint16, $05b01887df96c4ee$var$PostcompensationAction))\n});\nlet $05b01887df96c4ee$var$JustificationTable = new $6uUbQ$Struct({\n classTable: new $6uUbQ$Pointer($6uUbQ$uint16, $05b01887df96c4ee$var$ClassTable, {\n type: 'parent'\n }),\n wdcOffset: $6uUbQ$uint16,\n postCompensationTable: new $6uUbQ$Pointer($6uUbQ$uint16, $05b01887df96c4ee$var$PostCompensationTable, {\n type: 'parent'\n }),\n widthDeltaClusters: new (0, $6cb7dd5f47d82580$export$8351f8c2ae2f103c)(new $6uUbQ$Pointer($6uUbQ$uint16, $05b01887df96c4ee$var$WidthDeltaCluster, {\n type: 'parent',\n relativeTo: (ctx)=>ctx.wdcOffset\n }))\n});\nvar $05b01887df96c4ee$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint32,\n format: $6uUbQ$uint16,\n horizontal: new $6uUbQ$Pointer($6uUbQ$uint16, $05b01887df96c4ee$var$JustificationTable),\n vertical: new $6uUbQ$Pointer($6uUbQ$uint16, $05b01887df96c4ee$var$JustificationTable)\n});\n\n\n\n\nlet $03ee6ebd54db1053$var$LigatureData = {\n action: $6uUbQ$uint16\n};\nlet $03ee6ebd54db1053$var$ContextualData = {\n markIndex: $6uUbQ$uint16,\n currentIndex: $6uUbQ$uint16\n};\nlet $03ee6ebd54db1053$var$InsertionData = {\n currentInsertIndex: $6uUbQ$uint16,\n markedInsertIndex: $6uUbQ$uint16\n};\nlet $03ee6ebd54db1053$var$SubstitutionTable = new $6uUbQ$Struct({\n items: new (0, $6cb7dd5f47d82580$export$c5af1eebc882e39a)(new $6uUbQ$Pointer($6uUbQ$uint32, new (0, $6cb7dd5f47d82580$export$8351f8c2ae2f103c)))\n});\nlet $03ee6ebd54db1053$var$SubtableData = new $6uUbQ$VersionedStruct('type', {\n 0: {\n stateTable: new (0, $6cb7dd5f47d82580$export$79f7d93d790934ba)\n },\n 1: {\n stateTable: new (0, $6cb7dd5f47d82580$export$79f7d93d790934ba)($03ee6ebd54db1053$var$ContextualData),\n substitutionTable: new $6uUbQ$Pointer($6uUbQ$uint32, $03ee6ebd54db1053$var$SubstitutionTable)\n },\n 2: {\n stateTable: new (0, $6cb7dd5f47d82580$export$79f7d93d790934ba)($03ee6ebd54db1053$var$LigatureData),\n ligatureActions: new $6uUbQ$Pointer($6uUbQ$uint32, new (0, $6cb7dd5f47d82580$export$c5af1eebc882e39a)($6uUbQ$uint32)),\n components: new $6uUbQ$Pointer($6uUbQ$uint32, new (0, $6cb7dd5f47d82580$export$c5af1eebc882e39a)($6uUbQ$uint16)),\n ligatureList: new $6uUbQ$Pointer($6uUbQ$uint32, new (0, $6cb7dd5f47d82580$export$c5af1eebc882e39a)($6uUbQ$uint16))\n },\n 4: {\n lookupTable: new (0, $6cb7dd5f47d82580$export$8351f8c2ae2f103c)\n },\n 5: {\n stateTable: new (0, $6cb7dd5f47d82580$export$79f7d93d790934ba)($03ee6ebd54db1053$var$InsertionData),\n insertionActions: new $6uUbQ$Pointer($6uUbQ$uint32, new (0, $6cb7dd5f47d82580$export$c5af1eebc882e39a)($6uUbQ$uint16))\n }\n});\nlet $03ee6ebd54db1053$var$Subtable = new $6uUbQ$Struct({\n length: $6uUbQ$uint32,\n coverage: $6uUbQ$uint24,\n type: $6uUbQ$uint8,\n subFeatureFlags: $6uUbQ$uint32,\n table: $03ee6ebd54db1053$var$SubtableData,\n padding: new $6uUbQ$Reserved($6uUbQ$uint8, (t)=>t.length - t._currentOffset)\n});\nlet $03ee6ebd54db1053$var$FeatureEntry = new $6uUbQ$Struct({\n featureType: $6uUbQ$uint16,\n featureSetting: $6uUbQ$uint16,\n enableFlags: $6uUbQ$uint32,\n disableFlags: $6uUbQ$uint32\n});\nlet $03ee6ebd54db1053$var$MorxChain = new $6uUbQ$Struct({\n defaultFlags: $6uUbQ$uint32,\n chainLength: $6uUbQ$uint32,\n nFeatureEntries: $6uUbQ$uint32,\n nSubtables: $6uUbQ$uint32,\n features: new $6uUbQ$Array($03ee6ebd54db1053$var$FeatureEntry, 'nFeatureEntries'),\n subtables: new $6uUbQ$Array($03ee6ebd54db1053$var$Subtable, 'nSubtables')\n});\nvar $03ee6ebd54db1053$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$uint16,\n unused: new $6uUbQ$Reserved($6uUbQ$uint16),\n nChains: $6uUbQ$uint32,\n chains: new $6uUbQ$Array($03ee6ebd54db1053$var$MorxChain, 'nChains')\n});\n\n\n\n\nlet $b7492a80b0d1a056$var$OpticalBounds = new $6uUbQ$Struct({\n left: $6uUbQ$int16,\n top: $6uUbQ$int16,\n right: $6uUbQ$int16,\n bottom: $6uUbQ$int16\n});\nvar $b7492a80b0d1a056$export$2e2bcd8739ae039 = new $6uUbQ$Struct({\n version: $6uUbQ$fixed32,\n format: $6uUbQ$uint16,\n lookupTable: new (0, $6cb7dd5f47d82580$export$8351f8c2ae2f103c)($b7492a80b0d1a056$var$OpticalBounds)\n});\n\n\nlet $c3395722bea751e2$var$tables = {};\nvar $c3395722bea751e2$export$2e2bcd8739ae039 = $c3395722bea751e2$var$tables;\n$c3395722bea751e2$var$tables.cmap = (0, $26a62205ad06574e$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.head = (0, $f2612a29f92ac062$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.hhea = (0, $2c179dd593583073$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.hmtx = (0, $bdc9060542264b85$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.maxp = (0, $dbf51cb3d3fe409d$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.name = (0, $2bcf221753ec8e32$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables['OS/2'] = (0, $84b272aa31b70606$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.post = (0, $32d9e2eb9565d93c$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.fpgm = (0, $5c0f37ca5ffb1850$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.loca = (0, $2b2b260902b1c57e$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.prep = (0, $7afb878c7bea4f66$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables['cvt '] = (0, $5202bd9d9ad8eaac$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.glyf = (0, $6c92b6371bce8bd9$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables['CFF '] = (0, $822ac0d589e4e237$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables['CFF2'] = (0, $822ac0d589e4e237$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.VORG = (0, $2bbf2bc1ce37cd8f$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.EBLC = (0, $9911c4c7201c13de$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.CBLC = $c3395722bea751e2$var$tables.EBLC;\n$c3395722bea751e2$var$tables.sbix = (0, $abb847051efd51b1$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.COLR = (0, $eb629188f3dfefdd$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.CPAL = (0, $08734b8e7dc64587$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.BASE = (0, $497cef411d884e34$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.GDEF = (0, $cf5f33c63ef209e6$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.GPOS = (0, $47e0e8ef515d9903$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.GSUB = (0, $d3f442064af66e06$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.JSTF = (0, $71cfb3c4767fbd0c$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.HVAR = (0, $d059a6bd2d3b5b63$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.DSIG = (0, $dceeca3e1977ce30$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.gasp = (0, $8acd740a9435aad0$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.hdmx = (0, $b5f380243c34d6a0$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.kern = (0, $ca2df1256966e313$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.LTSH = (0, $7a9f92b0c46ebe33$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.PCLT = (0, $2b2ccc419d152631$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.VDMX = (0, $ca5b40b9bcda9c9b$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.vhea = (0, $69530a3c40755af0$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.vmtx = (0, $344073dd270f0e62$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.avar = (0, $3793b781918cfced$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.bsln = (0, $6a3746e8c708f5a3$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.feat = (0, $d0c76fac617b308a$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.fvar = (0, $e83fd065f00fcd01$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.gvar = (0, $dbe33c8d3a7f131c$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.just = (0, $05b01887df96c4ee$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.morx = (0, $03ee6ebd54db1053$export$2e2bcd8739ae039);\n$c3395722bea751e2$var$tables.opbd = (0, $b7492a80b0d1a056$export$2e2bcd8739ae039);\n\n\nlet $816c07a04b6dba87$var$TableEntry = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n checkSum: $6uUbQ$uint32,\n offset: new $6uUbQ$Pointer($6uUbQ$uint32, 'void', {\n type: 'global'\n }),\n length: $6uUbQ$uint32\n});\nlet $816c07a04b6dba87$var$Directory = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n numTables: $6uUbQ$uint16,\n searchRange: $6uUbQ$uint16,\n entrySelector: $6uUbQ$uint16,\n rangeShift: $6uUbQ$uint16,\n tables: new $6uUbQ$Array($816c07a04b6dba87$var$TableEntry, 'numTables')\n});\n$816c07a04b6dba87$var$Directory.process = function() {\n let tables = {};\n for (let table of this.tables)tables[table.tag] = table;\n this.tables = tables;\n};\n$816c07a04b6dba87$var$Directory.preEncode = function() {\n if (!Array.isArray(this.tables)) {\n let tables = [];\n for(let tag in this.tables){\n let table = this.tables[tag];\n if (table) tables.push({\n tag: tag,\n checkSum: 0,\n offset: new $6uUbQ$VoidPointer((0, $c3395722bea751e2$export$2e2bcd8739ae039)[tag], table),\n length: (0, $c3395722bea751e2$export$2e2bcd8739ae039)[tag].size(table)\n });\n }\n this.tables = tables;\n }\n this.tag = 'true';\n this.numTables = this.tables.length;\n let maxExponentFor2 = Math.floor(Math.log(this.numTables) / Math.LN2);\n let maxPowerOf2 = Math.pow(2, maxExponentFor2);\n this.searchRange = maxPowerOf2 * 16;\n this.entrySelector = Math.log(maxPowerOf2) / Math.LN2;\n this.rangeShift = this.numTables * 16 - this.searchRange;\n};\nvar $816c07a04b6dba87$export$2e2bcd8739ae039 = $816c07a04b6dba87$var$Directory;\n\n\n\n\nfunction $12727730ddfc8bfe$export$2e0ae67339d5f1ac(arr, cmp) {\n let min = 0;\n let max = arr.length - 1;\n while(min <= max){\n let mid = min + max >> 1;\n let res = cmp(arr[mid]);\n if (res < 0) max = mid - 1;\n else if (res > 0) min = mid + 1;\n else return mid;\n }\n return -1;\n}\nfunction $12727730ddfc8bfe$export$d02631cccf789723(index, end) {\n let range = [];\n while(index < end)range.push(index++);\n return range;\n}\nconst $12727730ddfc8bfe$export$3d28c1996ced1f14 = new TextDecoder('ascii');\n// Based on https://github.com/niklasvh/base64-arraybuffer. MIT license.\nconst $12727730ddfc8bfe$var$CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst $12727730ddfc8bfe$var$LOOKUP = new Uint8Array(256);\nfor(let i = 0; i < $12727730ddfc8bfe$var$CHARS.length; i++)$12727730ddfc8bfe$var$LOOKUP[$12727730ddfc8bfe$var$CHARS.charCodeAt(i)] = i;\nfunction $12727730ddfc8bfe$export$94fdf11bafc8de6b(base64) {\n let bufferLength = base64.length * 0.75;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') bufferLength--;\n }\n let bytes = new Uint8Array(bufferLength);\n let p = 0;\n for(let i = 0, len = base64.length; i < len; i += 4){\n let encoded1 = $12727730ddfc8bfe$var$LOOKUP[base64.charCodeAt(i)];\n let encoded2 = $12727730ddfc8bfe$var$LOOKUP[base64.charCodeAt(i + 1)];\n let encoded3 = $12727730ddfc8bfe$var$LOOKUP[base64.charCodeAt(i + 2)];\n let encoded4 = $12727730ddfc8bfe$var$LOOKUP[base64.charCodeAt(i + 3)];\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return bytes;\n}\n\n\n\n\nclass $f08dd41ef10b694c$export$2e2bcd8739ae039 {\n findSubtable(cmapTable, pairs) {\n for (let [platformID, encodingID] of pairs)for (let cmap of cmapTable.tables){\n if (cmap.platformID === platformID && cmap.encodingID === encodingID) return cmap.table;\n }\n return null;\n }\n lookup(codepoint, variationSelector) {\n // If there is no Unicode cmap in this font, we need to re-encode\n // the codepoint in the encoding that the cmap supports.\n if (this.encoding) codepoint = this.encoding.get(codepoint) || codepoint;\n else if (variationSelector) {\n let gid = this.getVariationSelector(codepoint, variationSelector);\n if (gid) return gid;\n }\n let cmap = this.cmap;\n switch(cmap.version){\n case 0:\n return cmap.codeMap.get(codepoint) || 0;\n case 4:\n {\n let min = 0;\n let max = cmap.segCount - 1;\n while(min <= max){\n let mid = min + max >> 1;\n if (codepoint < cmap.startCode.get(mid)) max = mid - 1;\n else if (codepoint > cmap.endCode.get(mid)) min = mid + 1;\n else {\n let rangeOffset = cmap.idRangeOffset.get(mid);\n let gid;\n if (rangeOffset === 0) gid = codepoint + cmap.idDelta.get(mid);\n else {\n let index = rangeOffset / 2 + (codepoint - cmap.startCode.get(mid)) - (cmap.segCount - mid);\n gid = cmap.glyphIndexArray.get(index) || 0;\n if (gid !== 0) gid += cmap.idDelta.get(mid);\n }\n return gid & 0xffff;\n }\n }\n return 0;\n }\n case 8:\n throw new Error('TODO: cmap format 8');\n case 6:\n case 10:\n return cmap.glyphIndices.get(codepoint - cmap.firstCode) || 0;\n case 12:\n case 13:\n {\n let min = 0;\n let max = cmap.nGroups - 1;\n while(min <= max){\n let mid = min + max >> 1;\n let group = cmap.groups.get(mid);\n if (codepoint < group.startCharCode) max = mid - 1;\n else if (codepoint > group.endCharCode) min = mid + 1;\n else {\n if (cmap.version === 12) return group.glyphID + (codepoint - group.startCharCode);\n else return group.glyphID;\n }\n }\n return 0;\n }\n case 14:\n throw new Error('TODO: cmap format 14');\n default:\n throw new Error(`Unknown cmap format ${cmap.version}`);\n }\n }\n getVariationSelector(codepoint, variationSelector) {\n if (!this.uvs) return 0;\n let selectors = this.uvs.varSelectors.toArray();\n let i = (0, $12727730ddfc8bfe$export$2e0ae67339d5f1ac)(selectors, (x)=>variationSelector - x.varSelector);\n let sel = selectors[i];\n if (i !== -1 && sel.defaultUVS) i = (0, $12727730ddfc8bfe$export$2e0ae67339d5f1ac)(sel.defaultUVS, (x)=>codepoint < x.startUnicodeValue ? -1 : codepoint > x.startUnicodeValue + x.additionalCount ? 1 : 0);\n if (i !== -1 && sel.nonDefaultUVS) {\n i = (0, $12727730ddfc8bfe$export$2e0ae67339d5f1ac)(sel.nonDefaultUVS, (x)=>codepoint - x.unicodeValue);\n if (i !== -1) return sel.nonDefaultUVS[i].glyphID;\n }\n return 0;\n }\n getCharacterSet() {\n let cmap = this.cmap;\n switch(cmap.version){\n case 0:\n return (0, $12727730ddfc8bfe$export$d02631cccf789723)(0, cmap.codeMap.length);\n case 4:\n {\n let res = [];\n let endCodes = cmap.endCode.toArray();\n for(let i = 0; i < endCodes.length; i++){\n let tail = endCodes[i] + 1;\n let start = cmap.startCode.get(i);\n res.push(...(0, $12727730ddfc8bfe$export$d02631cccf789723)(start, tail));\n }\n return res;\n }\n case 8:\n throw new Error('TODO: cmap format 8');\n case 6:\n case 10:\n return (0, $12727730ddfc8bfe$export$d02631cccf789723)(cmap.firstCode, cmap.firstCode + cmap.glyphIndices.length);\n case 12:\n case 13:\n {\n let res = [];\n for (let group of cmap.groups.toArray())res.push(...(0, $12727730ddfc8bfe$export$d02631cccf789723)(group.startCharCode, group.endCharCode + 1));\n return res;\n }\n case 14:\n throw new Error('TODO: cmap format 14');\n default:\n throw new Error(`Unknown cmap format ${cmap.version}`);\n }\n }\n codePointsForGlyph(gid) {\n let cmap = this.cmap;\n switch(cmap.version){\n case 0:\n {\n let res = [];\n for(let i = 0; i < 256; i++)if (cmap.codeMap.get(i) === gid) res.push(i);\n return res;\n }\n case 4:\n {\n let res = [];\n for(let i = 0; i < cmap.segCount; i++){\n let end = cmap.endCode.get(i);\n let start = cmap.startCode.get(i);\n let rangeOffset = cmap.idRangeOffset.get(i);\n let delta = cmap.idDelta.get(i);\n for(var c = start; c <= end; c++){\n let g = 0;\n if (rangeOffset === 0) g = c + delta;\n else {\n let index = rangeOffset / 2 + (c - start) - (cmap.segCount - i);\n g = cmap.glyphIndexArray.get(index) || 0;\n if (g !== 0) g += delta;\n }\n if (g === gid) res.push(c);\n }\n }\n return res;\n }\n case 12:\n {\n let res = [];\n for (let group of cmap.groups.toArray())if (gid >= group.glyphID && gid <= group.glyphID + (group.endCharCode - group.startCharCode)) res.push(group.startCharCode + (gid - group.glyphID));\n return res;\n }\n case 13:\n {\n let res = [];\n for (let group of cmap.groups.toArray())if (gid === group.glyphID) res.push(...(0, $12727730ddfc8bfe$export$d02631cccf789723)(group.startCharCode, group.endCharCode + 1));\n return res;\n }\n default:\n throw new Error(`Unknown cmap format ${cmap.version}`);\n }\n }\n constructor(cmapTable){\n // Attempt to find a Unicode cmap first\n this.encoding = null;\n this.cmap = this.findSubtable(cmapTable, [\n // 32-bit subtables\n [\n 3,\n 10\n ],\n [\n 0,\n 6\n ],\n [\n 0,\n 4\n ],\n // 16-bit subtables\n [\n 3,\n 1\n ],\n [\n 0,\n 3\n ],\n [\n 0,\n 2\n ],\n [\n 0,\n 1\n ],\n [\n 0,\n 0\n ]\n ]);\n // If not unicode cmap was found, take the first table with a supported encoding.\n if (!this.cmap) for (let cmap of cmapTable.tables){\n let encoding = (0, $e449ad78d50845fe$export$badc544e0651b6b1)(cmap.platformID, cmap.encodingID, cmap.table.language - 1);\n let mapping = (0, $e449ad78d50845fe$export$1dceb3c14ed68bee)(encoding);\n if (mapping) {\n this.cmap = cmap.table;\n this.encoding = mapping;\n }\n }\n if (!this.cmap) throw new Error(\"Could not find a supported cmap table\");\n this.uvs = this.findSubtable(cmapTable, [\n [\n 0,\n 5\n ]\n ]);\n if (this.uvs && this.uvs.version !== 14) this.uvs = null;\n }\n}\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f08dd41ef10b694c$export$2e2bcd8739ae039.prototype, \"getCharacterSet\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f08dd41ef10b694c$export$2e2bcd8739ae039.prototype, \"codePointsForGlyph\", null);\n\n\n\nclass $0bba3a9db57637f3$export$2e2bcd8739ae039 {\n process(glyphs, positions) {\n for(let glyphIndex = 0; glyphIndex < glyphs.length - 1; glyphIndex++){\n let left = glyphs[glyphIndex].id;\n let right = glyphs[glyphIndex + 1].id;\n positions[glyphIndex].xAdvance += this.getKerning(left, right);\n }\n }\n getKerning(left, right) {\n let res = 0;\n for (let table of this.kern.tables){\n if (table.coverage.crossStream) continue;\n switch(table.version){\n case 0:\n if (!table.coverage.horizontal) continue;\n break;\n case 1:\n if (table.coverage.vertical || table.coverage.variation) continue;\n break;\n default:\n throw new Error(`Unsupported kerning table version ${table.version}`);\n }\n let val = 0;\n let s = table.subtable;\n switch(table.format){\n case 0:\n let pairIdx = (0, $12727730ddfc8bfe$export$2e0ae67339d5f1ac)(s.pairs, function(pair) {\n return left - pair.left || right - pair.right;\n });\n if (pairIdx >= 0) val = s.pairs[pairIdx].value;\n break;\n case 2:\n let leftOffset = 0, rightOffset = 0;\n if (left >= s.leftTable.firstGlyph && left < s.leftTable.firstGlyph + s.leftTable.nGlyphs) leftOffset = s.leftTable.offsets[left - s.leftTable.firstGlyph];\n else leftOffset = s.array.off;\n if (right >= s.rightTable.firstGlyph && right < s.rightTable.firstGlyph + s.rightTable.nGlyphs) rightOffset = s.rightTable.offsets[right - s.rightTable.firstGlyph];\n let index = (leftOffset + rightOffset - s.array.off) / 2;\n val = s.array.values.get(index);\n break;\n case 3:\n if (left >= s.glyphCount || right >= s.glyphCount) return 0;\n val = s.kernValue[s.kernIndex[s.leftClass[left] * s.rightClassCount + s.rightClass[right]]];\n break;\n default:\n throw new Error(`Unsupported kerning sub-table format ${table.format}`);\n }\n // Microsoft supports the override flag, which resets the result\n // Otherwise, the sum of the results from all subtables is returned\n if (table.coverage.override) res = val;\n else res += val;\n }\n return res;\n }\n constructor(font){\n this.kern = font.kern;\n }\n}\n\n\n\nclass $0a4bdfeb6dfd6f5e$export$2e2bcd8739ae039 {\n positionGlyphs(glyphs, positions) {\n // find each base + mark cluster, and position the marks relative to the base\n let clusterStart = 0;\n let clusterEnd = 0;\n for(let index = 0; index < glyphs.length; index++){\n let glyph = glyphs[index];\n if (glyph.isMark) clusterEnd = index;\n else {\n if (clusterStart !== clusterEnd) this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n clusterStart = clusterEnd = index;\n }\n }\n if (clusterStart !== clusterEnd) this.positionCluster(glyphs, positions, clusterStart, clusterEnd);\n return positions;\n }\n positionCluster(glyphs, positions, clusterStart, clusterEnd) {\n let base = glyphs[clusterStart];\n let baseBox = base.cbox.copy();\n // adjust bounding box for ligature glyphs\n if (base.codePoints.length > 1) // LTR. TODO: RTL support.\n baseBox.minX += (base.codePoints.length - 1) * baseBox.width / base.codePoints.length;\n let xOffset = -positions[clusterStart].xAdvance;\n let yOffset = 0;\n let yGap = this.font.unitsPerEm / 16;\n // position each of the mark glyphs relative to the base glyph\n for(let index = clusterStart + 1; index <= clusterEnd; index++){\n let mark = glyphs[index];\n let markBox = mark.cbox;\n let position = positions[index];\n let combiningClass = this.getCombiningClass(mark.codePoints[0]);\n if (combiningClass !== 'Not_Reordered') {\n position.xOffset = position.yOffset = 0;\n // x positioning\n switch(combiningClass){\n case 'Double_Above':\n case 'Double_Below':\n // LTR. TODO: RTL support.\n position.xOffset += baseBox.minX - markBox.width / 2 - markBox.minX;\n break;\n case 'Attached_Below_Left':\n case 'Below_Left':\n case 'Above_Left':\n // left align\n position.xOffset += baseBox.minX - markBox.minX;\n break;\n case 'Attached_Above_Right':\n case 'Below_Right':\n case 'Above_Right':\n // right align\n position.xOffset += baseBox.maxX - markBox.width - markBox.minX;\n break;\n default:\n // center align\n position.xOffset += baseBox.minX + (baseBox.width - markBox.width) / 2 - markBox.minX;\n }\n // y positioning\n switch(combiningClass){\n case 'Double_Below':\n case 'Below_Left':\n case 'Below':\n case 'Below_Right':\n case 'Attached_Below_Left':\n case 'Attached_Below':\n // add a small gap between the glyphs if they are not attached\n if (combiningClass === 'Attached_Below_Left' || combiningClass === 'Attached_Below') baseBox.minY += yGap;\n position.yOffset = -baseBox.minY - markBox.maxY;\n baseBox.minY += markBox.height;\n break;\n case 'Double_Above':\n case 'Above_Left':\n case 'Above':\n case 'Above_Right':\n case 'Attached_Above':\n case 'Attached_Above_Right':\n // add a small gap between the glyphs if they are not attached\n if (combiningClass === 'Attached_Above' || combiningClass === 'Attached_Above_Right') baseBox.maxY += yGap;\n position.yOffset = baseBox.maxY - markBox.minY;\n baseBox.maxY += markBox.height;\n break;\n }\n position.xAdvance = position.yAdvance = 0;\n position.xOffset += xOffset;\n position.yOffset += yOffset;\n } else {\n xOffset -= position.xAdvance;\n yOffset -= position.yAdvance;\n }\n }\n return;\n }\n getCombiningClass(codePoint) {\n let combiningClass = (0, $6uUbQ$getCombiningClass)(codePoint);\n // Thai / Lao need some per-character work\n if ((codePoint & -256) === 0x0e00) {\n if (combiningClass === 'Not_Reordered') switch(codePoint){\n case 0x0e31:\n case 0x0e34:\n case 0x0e35:\n case 0x0e36:\n case 0x0e37:\n case 0x0e47:\n case 0x0e4c:\n case 0x0e3d:\n case 0x0e4e:\n return 'Above_Right';\n case 0x0eb1:\n case 0x0eb4:\n case 0x0eb5:\n case 0x0eb6:\n case 0x0eb7:\n case 0x0ebb:\n case 0x0ecc:\n case 0x0ecd:\n return 'Above';\n case 0x0ebc:\n return 'Below';\n }\n else if (codePoint === 0x0e3a) return 'Below_Right';\n }\n switch(combiningClass){\n // Hebrew\n case 'CCC10':\n case 'CCC11':\n case 'CCC12':\n case 'CCC13':\n case 'CCC14':\n case 'CCC15':\n case 'CCC16':\n case 'CCC17':\n case 'CCC18':\n case 'CCC20':\n case 'CCC22':\n return 'Below';\n case 'CCC23':\n return 'Attached_Above';\n case 'CCC24':\n return 'Above_Right';\n case 'CCC25':\n case 'CCC19':\n return 'Above_Left';\n case 'CCC26':\n return 'Above';\n case 'CCC21':\n break;\n // Arabic and Syriac\n case 'CCC27':\n case 'CCC28':\n case 'CCC30':\n case 'CCC31':\n case 'CCC33':\n case 'CCC34':\n case 'CCC35':\n case 'CCC36':\n return 'Above';\n case 'CCC29':\n case 'CCC32':\n return 'Below';\n // Thai\n case 'CCC103':\n return 'Below_Right';\n case 'CCC107':\n return 'Above_Right';\n // Lao\n case 'CCC118':\n return 'Below';\n case 'CCC122':\n return 'Above';\n // Tibetan\n case 'CCC129':\n case 'CCC132':\n return 'Below';\n case 'CCC130':\n return 'Above';\n }\n return combiningClass;\n }\n constructor(font){\n this.font = font;\n }\n}\n\n\n/**\n * Represents a glyph bounding box\n */ class $f34600ab9d7f70d8$export$2e2bcd8739ae039 {\n /**\n * The width of the bounding box\n * @type {number}\n */ get width() {\n return this.maxX - this.minX;\n }\n /**\n * The height of the bounding box\n * @type {number}\n */ get height() {\n return this.maxY - this.minY;\n }\n addPoint(x, y) {\n if (Math.abs(x) !== Infinity) {\n if (x < this.minX) this.minX = x;\n if (x > this.maxX) this.maxX = x;\n }\n if (Math.abs(y) !== Infinity) {\n if (y < this.minY) this.minY = y;\n if (y > this.maxY) this.maxY = y;\n }\n }\n copy() {\n return new $f34600ab9d7f70d8$export$2e2bcd8739ae039(this.minX, this.minY, this.maxX, this.maxY);\n }\n constructor(minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity){\n /**\n * The minimum X position in the bounding box\n * @type {number}\n */ this.minX = minX;\n /**\n * The minimum Y position in the bounding box\n * @type {number}\n */ this.minY = minY;\n /**\n * The maxmimum X position in the bounding box\n * @type {number}\n */ this.maxX = maxX;\n /**\n * The maxmimum Y position in the bounding box\n * @type {number}\n */ this.maxY = maxY;\n }\n}\n\n\n\n// This maps the Unicode Script property to an OpenType script tag\n// Data from http://www.microsoft.com/typography/otspec/scripttags.htm\n// and http://www.unicode.org/Public/UNIDATA/PropertyValueAliases.txt.\nconst $130d1a642ebcd2b7$var$UNICODE_SCRIPTS = {\n Caucasian_Albanian: 'aghb',\n Arabic: 'arab',\n Imperial_Aramaic: 'armi',\n Armenian: 'armn',\n Avestan: 'avst',\n Balinese: 'bali',\n Bamum: 'bamu',\n Bassa_Vah: 'bass',\n Batak: 'batk',\n Bengali: [\n 'bng2',\n 'beng'\n ],\n Bopomofo: 'bopo',\n Brahmi: 'brah',\n Braille: 'brai',\n Buginese: 'bugi',\n Buhid: 'buhd',\n Chakma: 'cakm',\n Canadian_Aboriginal: 'cans',\n Carian: 'cari',\n Cham: 'cham',\n Cherokee: 'cher',\n Coptic: 'copt',\n Cypriot: 'cprt',\n Cyrillic: 'cyrl',\n Devanagari: [\n 'dev2',\n 'deva'\n ],\n Deseret: 'dsrt',\n Duployan: 'dupl',\n Egyptian_Hieroglyphs: 'egyp',\n Elbasan: 'elba',\n Ethiopic: 'ethi',\n Georgian: 'geor',\n Glagolitic: 'glag',\n Gothic: 'goth',\n Grantha: 'gran',\n Greek: 'grek',\n Gujarati: [\n 'gjr2',\n 'gujr'\n ],\n Gurmukhi: [\n 'gur2',\n 'guru'\n ],\n Hangul: 'hang',\n Han: 'hani',\n Hanunoo: 'hano',\n Hebrew: 'hebr',\n Hiragana: 'hira',\n Pahawh_Hmong: 'hmng',\n Katakana_Or_Hiragana: 'hrkt',\n Old_Italic: 'ital',\n Javanese: 'java',\n Kayah_Li: 'kali',\n Katakana: 'kana',\n Kharoshthi: 'khar',\n Khmer: 'khmr',\n Khojki: 'khoj',\n Kannada: [\n 'knd2',\n 'knda'\n ],\n Kaithi: 'kthi',\n Tai_Tham: 'lana',\n Lao: 'lao ',\n Latin: 'latn',\n Lepcha: 'lepc',\n Limbu: 'limb',\n Linear_A: 'lina',\n Linear_B: 'linb',\n Lisu: 'lisu',\n Lycian: 'lyci',\n Lydian: 'lydi',\n Mahajani: 'mahj',\n Mandaic: 'mand',\n Manichaean: 'mani',\n Mende_Kikakui: 'mend',\n Meroitic_Cursive: 'merc',\n Meroitic_Hieroglyphs: 'mero',\n Malayalam: [\n 'mlm2',\n 'mlym'\n ],\n Modi: 'modi',\n Mongolian: 'mong',\n Mro: 'mroo',\n Meetei_Mayek: 'mtei',\n Myanmar: [\n 'mym2',\n 'mymr'\n ],\n Old_North_Arabian: 'narb',\n Nabataean: 'nbat',\n Nko: 'nko ',\n Ogham: 'ogam',\n Ol_Chiki: 'olck',\n Old_Turkic: 'orkh',\n Oriya: [\n 'ory2',\n 'orya'\n ],\n Osmanya: 'osma',\n Palmyrene: 'palm',\n Pau_Cin_Hau: 'pauc',\n Old_Permic: 'perm',\n Phags_Pa: 'phag',\n Inscriptional_Pahlavi: 'phli',\n Psalter_Pahlavi: 'phlp',\n Phoenician: 'phnx',\n Miao: 'plrd',\n Inscriptional_Parthian: 'prti',\n Rejang: 'rjng',\n Runic: 'runr',\n Samaritan: 'samr',\n Old_South_Arabian: 'sarb',\n Saurashtra: 'saur',\n Shavian: 'shaw',\n Sharada: 'shrd',\n Siddham: 'sidd',\n Khudawadi: 'sind',\n Sinhala: 'sinh',\n Sora_Sompeng: 'sora',\n Sundanese: 'sund',\n Syloti_Nagri: 'sylo',\n Syriac: 'syrc',\n Tagbanwa: 'tagb',\n Takri: 'takr',\n Tai_Le: 'tale',\n New_Tai_Lue: 'talu',\n Tamil: [\n 'tml2',\n 'taml'\n ],\n Tai_Viet: 'tavt',\n Telugu: [\n 'tel2',\n 'telu'\n ],\n Tifinagh: 'tfng',\n Tagalog: 'tglg',\n Thaana: 'thaa',\n Thai: 'thai',\n Tibetan: 'tibt',\n Tirhuta: 'tirh',\n Ugaritic: 'ugar',\n Vai: 'vai ',\n Warang_Citi: 'wara',\n Old_Persian: 'xpeo',\n Cuneiform: 'xsux',\n Yi: 'yi ',\n Inherited: 'zinh',\n Common: 'zyyy',\n Unknown: 'zzzz'\n};\nconst $130d1a642ebcd2b7$var$OPENTYPE_SCRIPTS = {};\nfor(let script in $130d1a642ebcd2b7$var$UNICODE_SCRIPTS){\n let tag = $130d1a642ebcd2b7$var$UNICODE_SCRIPTS[script];\n if (Array.isArray(tag)) for (let t of tag)$130d1a642ebcd2b7$var$OPENTYPE_SCRIPTS[t] = script;\n else $130d1a642ebcd2b7$var$OPENTYPE_SCRIPTS[tag] = script;\n}\nfunction $130d1a642ebcd2b7$export$b32f0b5f69d65e51(script) {\n return $130d1a642ebcd2b7$var$UNICODE_SCRIPTS[script];\n}\nfunction $130d1a642ebcd2b7$export$ce50e82f12a827a4(tag) {\n return $130d1a642ebcd2b7$var$OPENTYPE_SCRIPTS[tag];\n}\nfunction $130d1a642ebcd2b7$export$e5cb25e204fb8450(string) {\n let len = string.length;\n let idx = 0;\n while(idx < len){\n let code = string.charCodeAt(idx++);\n // Check if this is a high surrogate\n if (0xd800 <= code && code <= 0xdbff && idx < len) {\n let next = string.charCodeAt(idx);\n // Check if this is a low surrogate\n if (0xdc00 <= next && next <= 0xdfff) {\n idx++;\n code = ((code & 0x3FF) << 10) + (next & 0x3FF) + 0x10000;\n }\n }\n let script = (0, $6uUbQ$getScript)(code);\n if (script !== 'Common' && script !== 'Inherited' && script !== 'Unknown') return $130d1a642ebcd2b7$var$UNICODE_SCRIPTS[script];\n }\n return $130d1a642ebcd2b7$var$UNICODE_SCRIPTS.Unknown;\n}\nfunction $130d1a642ebcd2b7$export$16fab0757cfc223d(codePoints) {\n for(let i = 0; i < codePoints.length; i++){\n let codePoint = codePoints[i];\n let script = (0, $6uUbQ$getScript)(codePoint);\n if (script !== 'Common' && script !== 'Inherited' && script !== 'Unknown') return $130d1a642ebcd2b7$var$UNICODE_SCRIPTS[script];\n }\n return $130d1a642ebcd2b7$var$UNICODE_SCRIPTS.Unknown;\n}\n// The scripts in this map are written from right to left\nconst $130d1a642ebcd2b7$var$RTL = {\n arab: true,\n hebr: true,\n syrc: true,\n thaa: true,\n cprt: true,\n khar: true,\n phnx: true,\n 'nko ': true,\n lydi: true,\n avst: true,\n armi: true,\n phli: true,\n prti: true,\n sarb: true,\n orkh: true,\n samr: true,\n mand: true,\n merc: true,\n mero: true,\n // Unicode 7.0 (not listed on http://www.microsoft.com/typography/otspec/scripttags.htm)\n mani: true,\n mend: true,\n nbat: true,\n narb: true,\n palm: true,\n phlp: true // Psalter Pahlavi\n};\nfunction $130d1a642ebcd2b7$export$9fddb9d0dd7d8a54(script) {\n if ($130d1a642ebcd2b7$var$RTL[script]) return 'rtl';\n return 'ltr';\n}\n\n\nclass $be07b3e97a42687a$export$2e2bcd8739ae039 {\n /**\n * The total advance width of the run.\n * @type {number}\n */ get advanceWidth() {\n let width = 0;\n for (let position of this.positions)width += position.xAdvance;\n return width;\n }\n /**\n * The total advance height of the run.\n * @type {number}\n */ get advanceHeight() {\n let height = 0;\n for (let position of this.positions)height += position.yAdvance;\n return height;\n }\n /**\n * The bounding box containing all glyphs in the run.\n * @type {BBox}\n */ get bbox() {\n let bbox = new (0, $f34600ab9d7f70d8$export$2e2bcd8739ae039);\n let x = 0;\n let y = 0;\n for(let index = 0; index < this.glyphs.length; index++){\n let glyph = this.glyphs[index];\n let p = this.positions[index];\n let b = glyph.bbox;\n bbox.addPoint(b.minX + x + p.xOffset, b.minY + y + p.yOffset);\n bbox.addPoint(b.maxX + x + p.xOffset, b.maxY + y + p.yOffset);\n x += p.xAdvance;\n y += p.yAdvance;\n }\n return bbox;\n }\n constructor(glyphs, features, script, language, direction){\n /**\n * An array of Glyph objects in the run\n * @type {Glyph[]}\n */ this.glyphs = glyphs;\n /**\n * An array of GlyphPosition objects for each glyph in the run\n * @type {GlyphPosition[]}\n */ this.positions = null;\n /**\n * The script that was requested for shaping. This was either passed in or detected automatically.\n * @type {string}\n */ this.script = script;\n /**\n * The language requested for shaping, as passed in. If `null`, the default language for the\n * script was used.\n * @type {string}\n */ this.language = language || null;\n /**\n * The direction requested for shaping, as passed in (either ltr or rtl).\n * If `null`, the default direction of the script is used.\n * @type {string}\n */ this.direction = direction || $130d1a642ebcd2b7$export$9fddb9d0dd7d8a54(script);\n /**\n * The features requested during shaping. This is a combination of user\n * specified features and features chosen by the shaper.\n * @type {object}\n */ this.features = {};\n // Convert features to an object\n if (Array.isArray(features)) for (let tag of features)this.features[tag] = true;\n else if (typeof features === 'object') this.features = features;\n }\n}\n\n\n/**\n * Represents positioning information for a glyph in a GlyphRun.\n */ class $1ac75d9a55b67f01$export$2e2bcd8739ae039 {\n constructor(xAdvance = 0, yAdvance = 0, xOffset = 0, yOffset = 0){\n /**\n * The amount to move the virtual pen in the X direction after rendering this glyph.\n * @type {number}\n */ this.xAdvance = xAdvance;\n /**\n * The amount to move the virtual pen in the Y direction after rendering this glyph.\n * @type {number}\n */ this.yAdvance = yAdvance;\n /**\n * The offset from the pen position in the X direction at which to render this glyph.\n * @type {number}\n */ this.xOffset = xOffset;\n /**\n * The offset from the pen position in the Y direction at which to render this glyph.\n * @type {number}\n */ this.yOffset = yOffset;\n }\n}\n\n\n\n// see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM09/AppendixF.html\n// and /System/Library/Frameworks/CoreText.framework/Versions/A/Headers/SFNTLayoutTypes.h on a Mac\nconst $3b6302b64eccc32c$var$features = {\n allTypographicFeatures: {\n code: 0,\n exclusive: false,\n allTypeFeatures: 0\n },\n ligatures: {\n code: 1,\n exclusive: false,\n requiredLigatures: 0,\n commonLigatures: 2,\n rareLigatures: 4,\n // logos: 6\n rebusPictures: 8,\n diphthongLigatures: 10,\n squaredLigatures: 12,\n abbrevSquaredLigatures: 14,\n symbolLigatures: 16,\n contextualLigatures: 18,\n historicalLigatures: 20\n },\n cursiveConnection: {\n code: 2,\n exclusive: true,\n unconnected: 0,\n partiallyConnected: 1,\n cursive: 2\n },\n letterCase: {\n code: 3,\n exclusive: true\n },\n // upperAndLowerCase: 0 # deprecated\n // allCaps: 1 # deprecated\n // allLowerCase: 2 # deprecated\n // smallCaps: 3 # deprecated\n // initialCaps: 4 # deprecated\n // initialCapsAndSmallCaps: 5 # deprecated\n verticalSubstitution: {\n code: 4,\n exclusive: false,\n substituteVerticalForms: 0\n },\n linguisticRearrangement: {\n code: 5,\n exclusive: false,\n linguisticRearrangement: 0\n },\n numberSpacing: {\n code: 6,\n exclusive: true,\n monospacedNumbers: 0,\n proportionalNumbers: 1,\n thirdWidthNumbers: 2,\n quarterWidthNumbers: 3\n },\n smartSwash: {\n code: 8,\n exclusive: false,\n wordInitialSwashes: 0,\n wordFinalSwashes: 2,\n // lineInitialSwashes: 4\n // lineFinalSwashes: 6\n nonFinalSwashes: 8\n },\n diacritics: {\n code: 9,\n exclusive: true,\n showDiacritics: 0,\n hideDiacritics: 1,\n decomposeDiacritics: 2\n },\n verticalPosition: {\n code: 10,\n exclusive: true,\n normalPosition: 0,\n superiors: 1,\n inferiors: 2,\n ordinals: 3,\n scientificInferiors: 4\n },\n fractions: {\n code: 11,\n exclusive: true,\n noFractions: 0,\n verticalFractions: 1,\n diagonalFractions: 2\n },\n overlappingCharacters: {\n code: 13,\n exclusive: false,\n preventOverlap: 0\n },\n typographicExtras: {\n code: 14,\n exclusive: false,\n // hyphensToEmDash: 0\n // hyphenToEnDash: 2\n slashedZero: 4\n },\n // formInterrobang: 6\n // smartQuotes: 8\n // periodsToEllipsis: 10\n mathematicalExtras: {\n code: 15,\n exclusive: false,\n // hyphenToMinus: 0\n // asteristoMultiply: 2\n // slashToDivide: 4\n // inequalityLigatures: 6\n // exponents: 8\n mathematicalGreek: 10\n },\n ornamentSets: {\n code: 16,\n exclusive: true,\n noOrnaments: 0,\n dingbats: 1,\n piCharacters: 2,\n fleurons: 3,\n decorativeBorders: 4,\n internationalSymbols: 5,\n mathSymbols: 6\n },\n characterAlternatives: {\n code: 17,\n exclusive: true,\n noAlternates: 0\n },\n // user defined options\n designComplexity: {\n code: 18,\n exclusive: true,\n designLevel1: 0,\n designLevel2: 1,\n designLevel3: 2,\n designLevel4: 3,\n designLevel5: 4\n },\n styleOptions: {\n code: 19,\n exclusive: true,\n noStyleOptions: 0,\n displayText: 1,\n engravedText: 2,\n illuminatedCaps: 3,\n titlingCaps: 4,\n tallCaps: 5\n },\n characterShape: {\n code: 20,\n exclusive: true,\n traditionalCharacters: 0,\n simplifiedCharacters: 1,\n JIS1978Characters: 2,\n JIS1983Characters: 3,\n JIS1990Characters: 4,\n traditionalAltOne: 5,\n traditionalAltTwo: 6,\n traditionalAltThree: 7,\n traditionalAltFour: 8,\n traditionalAltFive: 9,\n expertCharacters: 10,\n JIS2004Characters: 11,\n hojoCharacters: 12,\n NLCCharacters: 13,\n traditionalNamesCharacters: 14\n },\n numberCase: {\n code: 21,\n exclusive: true,\n lowerCaseNumbers: 0,\n upperCaseNumbers: 1\n },\n textSpacing: {\n code: 22,\n exclusive: true,\n proportionalText: 0,\n monospacedText: 1,\n halfWidthText: 2,\n thirdWidthText: 3,\n quarterWidthText: 4,\n altProportionalText: 5,\n altHalfWidthText: 6\n },\n transliteration: {\n code: 23,\n exclusive: true,\n noTransliteration: 0\n },\n // hanjaToHangul: 1\n // hiraganaToKatakana: 2\n // katakanaToHiragana: 3\n // kanaToRomanization: 4\n // romanizationToHiragana: 5\n // romanizationToKatakana: 6\n // hanjaToHangulAltOne: 7\n // hanjaToHangulAltTwo: 8\n // hanjaToHangulAltThree: 9\n annotation: {\n code: 24,\n exclusive: true,\n noAnnotation: 0,\n boxAnnotation: 1,\n roundedBoxAnnotation: 2,\n circleAnnotation: 3,\n invertedCircleAnnotation: 4,\n parenthesisAnnotation: 5,\n periodAnnotation: 6,\n romanNumeralAnnotation: 7,\n diamondAnnotation: 8,\n invertedBoxAnnotation: 9,\n invertedRoundedBoxAnnotation: 10\n },\n kanaSpacing: {\n code: 25,\n exclusive: true,\n fullWidthKana: 0,\n proportionalKana: 1\n },\n ideographicSpacing: {\n code: 26,\n exclusive: true,\n fullWidthIdeographs: 0,\n proportionalIdeographs: 1,\n halfWidthIdeographs: 2\n },\n unicodeDecomposition: {\n code: 27,\n exclusive: false,\n canonicalComposition: 0,\n compatibilityComposition: 2,\n transcodingComposition: 4\n },\n rubyKana: {\n code: 28,\n exclusive: false,\n // noRubyKana: 0 # deprecated - use rubyKanaOff instead\n // rubyKana: 1 # deprecated - use rubyKanaOn instead\n rubyKana: 2\n },\n CJKSymbolAlternatives: {\n code: 29,\n exclusive: true,\n noCJKSymbolAlternatives: 0,\n CJKSymbolAltOne: 1,\n CJKSymbolAltTwo: 2,\n CJKSymbolAltThree: 3,\n CJKSymbolAltFour: 4,\n CJKSymbolAltFive: 5\n },\n ideographicAlternatives: {\n code: 30,\n exclusive: true,\n noIdeographicAlternatives: 0,\n ideographicAltOne: 1,\n ideographicAltTwo: 2,\n ideographicAltThree: 3,\n ideographicAltFour: 4,\n ideographicAltFive: 5\n },\n CJKVerticalRomanPlacement: {\n code: 31,\n exclusive: true,\n CJKVerticalRomanCentered: 0,\n CJKVerticalRomanHBaseline: 1\n },\n italicCJKRoman: {\n code: 32,\n exclusive: false,\n // noCJKItalicRoman: 0 # deprecated - use CJKItalicRomanOff instead\n // CJKItalicRoman: 1 # deprecated - use CJKItalicRomanOn instead\n CJKItalicRoman: 2\n },\n caseSensitiveLayout: {\n code: 33,\n exclusive: false,\n caseSensitiveLayout: 0,\n caseSensitiveSpacing: 2\n },\n alternateKana: {\n code: 34,\n exclusive: false,\n alternateHorizKana: 0,\n alternateVertKana: 2\n },\n stylisticAlternatives: {\n code: 35,\n exclusive: false,\n noStylisticAlternates: 0,\n stylisticAltOne: 2,\n stylisticAltTwo: 4,\n stylisticAltThree: 6,\n stylisticAltFour: 8,\n stylisticAltFive: 10,\n stylisticAltSix: 12,\n stylisticAltSeven: 14,\n stylisticAltEight: 16,\n stylisticAltNine: 18,\n stylisticAltTen: 20,\n stylisticAltEleven: 22,\n stylisticAltTwelve: 24,\n stylisticAltThirteen: 26,\n stylisticAltFourteen: 28,\n stylisticAltFifteen: 30,\n stylisticAltSixteen: 32,\n stylisticAltSeventeen: 34,\n stylisticAltEighteen: 36,\n stylisticAltNineteen: 38,\n stylisticAltTwenty: 40\n },\n contextualAlternates: {\n code: 36,\n exclusive: false,\n contextualAlternates: 0,\n swashAlternates: 2,\n contextualSwashAlternates: 4\n },\n lowerCase: {\n code: 37,\n exclusive: true,\n defaultLowerCase: 0,\n lowerCaseSmallCaps: 1,\n lowerCasePetiteCaps: 2\n },\n upperCase: {\n code: 38,\n exclusive: true,\n defaultUpperCase: 0,\n upperCaseSmallCaps: 1,\n upperCasePetiteCaps: 2\n },\n languageTag: {\n code: 39,\n exclusive: true\n },\n CJKRomanSpacing: {\n code: 103,\n exclusive: true,\n halfWidthCJKRoman: 0,\n proportionalCJKRoman: 1,\n defaultCJKRoman: 2,\n fullWidthCJKRoman: 3\n }\n};\nconst $3b6302b64eccc32c$var$feature = (name, selector)=>[\n $3b6302b64eccc32c$var$features[name].code,\n $3b6302b64eccc32c$var$features[name][selector]\n ];\nconst $3b6302b64eccc32c$var$OTMapping = {\n rlig: $3b6302b64eccc32c$var$feature('ligatures', 'requiredLigatures'),\n clig: $3b6302b64eccc32c$var$feature('ligatures', 'contextualLigatures'),\n dlig: $3b6302b64eccc32c$var$feature('ligatures', 'rareLigatures'),\n hlig: $3b6302b64eccc32c$var$feature('ligatures', 'historicalLigatures'),\n liga: $3b6302b64eccc32c$var$feature('ligatures', 'commonLigatures'),\n hist: $3b6302b64eccc32c$var$feature('ligatures', 'historicalLigatures'),\n smcp: $3b6302b64eccc32c$var$feature('lowerCase', 'lowerCaseSmallCaps'),\n pcap: $3b6302b64eccc32c$var$feature('lowerCase', 'lowerCasePetiteCaps'),\n frac: $3b6302b64eccc32c$var$feature('fractions', 'diagonalFractions'),\n dnom: $3b6302b64eccc32c$var$feature('fractions', 'diagonalFractions'),\n numr: $3b6302b64eccc32c$var$feature('fractions', 'diagonalFractions'),\n afrc: $3b6302b64eccc32c$var$feature('fractions', 'verticalFractions'),\n // aalt\n // abvf, abvm, abvs, akhn, blwf, blwm, blws, cfar, cjct, cpsp, falt, isol, jalt, ljmo, mset?\n // ltra, ltrm, nukt, pref, pres, pstf, psts, rand, rkrf, rphf, rtla, rtlm, size, tjmo, tnum?\n // unic, vatu, vhal, vjmo, vpal, vrt2\n // dist -> trak table?\n // kern, vkrn -> kern table\n // lfbd + opbd + rtbd -> opbd table?\n // mark, mkmk -> acnt table?\n // locl -> languageTag + ltag table\n case: $3b6302b64eccc32c$var$feature('caseSensitiveLayout', 'caseSensitiveLayout'),\n ccmp: $3b6302b64eccc32c$var$feature('unicodeDecomposition', 'canonicalComposition'),\n cpct: $3b6302b64eccc32c$var$feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n valt: $3b6302b64eccc32c$var$feature('CJKVerticalRomanPlacement', 'CJKVerticalRomanCentered'),\n swsh: $3b6302b64eccc32c$var$feature('contextualAlternates', 'swashAlternates'),\n cswh: $3b6302b64eccc32c$var$feature('contextualAlternates', 'contextualSwashAlternates'),\n curs: $3b6302b64eccc32c$var$feature('cursiveConnection', 'cursive'),\n c2pc: $3b6302b64eccc32c$var$feature('upperCase', 'upperCasePetiteCaps'),\n c2sc: $3b6302b64eccc32c$var$feature('upperCase', 'upperCaseSmallCaps'),\n init: $3b6302b64eccc32c$var$feature('smartSwash', 'wordInitialSwashes'),\n fin2: $3b6302b64eccc32c$var$feature('smartSwash', 'wordFinalSwashes'),\n medi: $3b6302b64eccc32c$var$feature('smartSwash', 'nonFinalSwashes'),\n med2: $3b6302b64eccc32c$var$feature('smartSwash', 'nonFinalSwashes'),\n fin3: $3b6302b64eccc32c$var$feature('smartSwash', 'wordFinalSwashes'),\n fina: $3b6302b64eccc32c$var$feature('smartSwash', 'wordFinalSwashes'),\n pkna: $3b6302b64eccc32c$var$feature('kanaSpacing', 'proportionalKana'),\n half: $3b6302b64eccc32c$var$feature('textSpacing', 'halfWidthText'),\n halt: $3b6302b64eccc32c$var$feature('textSpacing', 'altHalfWidthText'),\n hkna: $3b6302b64eccc32c$var$feature('alternateKana', 'alternateHorizKana'),\n vkna: $3b6302b64eccc32c$var$feature('alternateKana', 'alternateVertKana'),\n // hngl: feature 'transliteration', 'hanjaToHangulSelector' # deprecated\n ital: $3b6302b64eccc32c$var$feature('italicCJKRoman', 'CJKItalicRoman'),\n lnum: $3b6302b64eccc32c$var$feature('numberCase', 'upperCaseNumbers'),\n onum: $3b6302b64eccc32c$var$feature('numberCase', 'lowerCaseNumbers'),\n mgrk: $3b6302b64eccc32c$var$feature('mathematicalExtras', 'mathematicalGreek'),\n // nalt: not enough info. what type of annotation?\n // ornm: ditto, which ornament style?\n calt: $3b6302b64eccc32c$var$feature('contextualAlternates', 'contextualAlternates'),\n vrt2: $3b6302b64eccc32c$var$feature('verticalSubstitution', 'substituteVerticalForms'),\n vert: $3b6302b64eccc32c$var$feature('verticalSubstitution', 'substituteVerticalForms'),\n tnum: $3b6302b64eccc32c$var$feature('numberSpacing', 'monospacedNumbers'),\n pnum: $3b6302b64eccc32c$var$feature('numberSpacing', 'proportionalNumbers'),\n sups: $3b6302b64eccc32c$var$feature('verticalPosition', 'superiors'),\n subs: $3b6302b64eccc32c$var$feature('verticalPosition', 'inferiors'),\n ordn: $3b6302b64eccc32c$var$feature('verticalPosition', 'ordinals'),\n pwid: $3b6302b64eccc32c$var$feature('textSpacing', 'proportionalText'),\n hwid: $3b6302b64eccc32c$var$feature('textSpacing', 'halfWidthText'),\n qwid: $3b6302b64eccc32c$var$feature('textSpacing', 'quarterWidthText'),\n twid: $3b6302b64eccc32c$var$feature('textSpacing', 'thirdWidthText'),\n fwid: $3b6302b64eccc32c$var$feature('textSpacing', 'proportionalText'),\n palt: $3b6302b64eccc32c$var$feature('textSpacing', 'altProportionalText'),\n trad: $3b6302b64eccc32c$var$feature('characterShape', 'traditionalCharacters'),\n smpl: $3b6302b64eccc32c$var$feature('characterShape', 'simplifiedCharacters'),\n jp78: $3b6302b64eccc32c$var$feature('characterShape', 'JIS1978Characters'),\n jp83: $3b6302b64eccc32c$var$feature('characterShape', 'JIS1983Characters'),\n jp90: $3b6302b64eccc32c$var$feature('characterShape', 'JIS1990Characters'),\n jp04: $3b6302b64eccc32c$var$feature('characterShape', 'JIS2004Characters'),\n expt: $3b6302b64eccc32c$var$feature('characterShape', 'expertCharacters'),\n hojo: $3b6302b64eccc32c$var$feature('characterShape', 'hojoCharacters'),\n nlck: $3b6302b64eccc32c$var$feature('characterShape', 'NLCCharacters'),\n tnam: $3b6302b64eccc32c$var$feature('characterShape', 'traditionalNamesCharacters'),\n ruby: $3b6302b64eccc32c$var$feature('rubyKana', 'rubyKana'),\n titl: $3b6302b64eccc32c$var$feature('styleOptions', 'titlingCaps'),\n zero: $3b6302b64eccc32c$var$feature('typographicExtras', 'slashedZero'),\n ss01: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltOne'),\n ss02: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltTwo'),\n ss03: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltThree'),\n ss04: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltFour'),\n ss05: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltFive'),\n ss06: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltSix'),\n ss07: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltSeven'),\n ss08: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltEight'),\n ss09: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltNine'),\n ss10: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltTen'),\n ss11: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltEleven'),\n ss12: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltTwelve'),\n ss13: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltThirteen'),\n ss14: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltFourteen'),\n ss15: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltFifteen'),\n ss16: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltSixteen'),\n ss17: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltSeventeen'),\n ss18: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltEighteen'),\n ss19: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltNineteen'),\n ss20: $3b6302b64eccc32c$var$feature('stylisticAlternatives', 'stylisticAltTwenty')\n};\n// salt: feature 'stylisticAlternatives', 'stylisticAltOne' # hmm, which one to choose\n// Add cv01-cv99 features\nfor(let i = 1; i <= 99; i++)$3b6302b64eccc32c$var$OTMapping[`cv${`00${i}`.slice(-2)}`] = [\n $3b6302b64eccc32c$var$features.characterAlternatives.code,\n i\n];\n// create inverse mapping\nlet $3b6302b64eccc32c$var$AATMapping = {};\nfor(let ot in $3b6302b64eccc32c$var$OTMapping){\n let aat = $3b6302b64eccc32c$var$OTMapping[ot];\n if ($3b6302b64eccc32c$var$AATMapping[aat[0]] == null) $3b6302b64eccc32c$var$AATMapping[aat[0]] = {};\n $3b6302b64eccc32c$var$AATMapping[aat[0]][aat[1]] = ot;\n}\nfunction $3b6302b64eccc32c$export$b813f7d2a1677c16(features) {\n let res = {};\n for(let k in features){\n let r;\n if (r = $3b6302b64eccc32c$var$OTMapping[k]) {\n if (res[r[0]] == null) res[r[0]] = {};\n res[r[0]][r[1]] = features[k];\n }\n }\n return res;\n}\n// Maps strings in a [featureType, featureSetting]\n// to their equivalent number codes\nfunction $3b6302b64eccc32c$var$mapFeatureStrings(f) {\n let [type, setting] = f;\n if (isNaN(type)) var typeCode = $3b6302b64eccc32c$var$features[type] && $3b6302b64eccc32c$var$features[type].code;\n else var typeCode = type;\n if (isNaN(setting)) var settingCode = $3b6302b64eccc32c$var$features[type] && $3b6302b64eccc32c$var$features[type][setting];\n else var settingCode = setting;\n return [\n typeCode,\n settingCode\n ];\n}\nfunction $3b6302b64eccc32c$export$bd6df347a4f391c4(features) {\n let res = {};\n if (Array.isArray(features)) for(let k = 0; k < features.length; k++){\n let r;\n let f = $3b6302b64eccc32c$var$mapFeatureStrings(features[k]);\n if (r = $3b6302b64eccc32c$var$AATMapping[f[0]] && $3b6302b64eccc32c$var$AATMapping[f[0]][f[1]]) res[r] = true;\n }\n else if (typeof features === 'object') for(let type in features){\n let feature = features[type];\n for(let setting in feature){\n let r;\n let f = $3b6302b64eccc32c$var$mapFeatureStrings([\n type,\n setting\n ]);\n if (feature[setting] && (r = $3b6302b64eccc32c$var$AATMapping[f[0]] && $3b6302b64eccc32c$var$AATMapping[f[0]][f[1]])) res[r] = true;\n }\n }\n return Object.keys(res);\n}\n\n\n\n\n\n\n\nclass $ff5ce077dae0f144$export$2e2bcd8739ae039 {\n lookup(glyph) {\n switch(this.table.version){\n case 0:\n return this.table.values.getItem(glyph);\n case 2:\n case 4:\n {\n let min = 0;\n let max = this.table.binarySearchHeader.nUnits - 1;\n while(min <= max){\n var mid = min + max >> 1;\n var seg = this.table.segments[mid];\n // special end of search value\n if (seg.firstGlyph === 0xffff) return null;\n if (glyph < seg.firstGlyph) max = mid - 1;\n else if (glyph > seg.lastGlyph) min = mid + 1;\n else {\n if (this.table.version === 2) return seg.value;\n else return seg.values[glyph - seg.firstGlyph];\n }\n }\n return null;\n }\n case 6:\n {\n let min = 0;\n let max = this.table.binarySearchHeader.nUnits - 1;\n while(min <= max){\n var mid = min + max >> 1;\n var seg = this.table.segments[mid];\n // special end of search value\n if (seg.glyph === 0xffff) return null;\n if (glyph < seg.glyph) max = mid - 1;\n else if (glyph > seg.glyph) min = mid + 1;\n else return seg.value;\n }\n return null;\n }\n case 8:\n return this.table.values[glyph - this.table.firstGlyph];\n default:\n throw new Error(`Unknown lookup table format: ${this.table.version}`);\n }\n }\n glyphsForValue(classValue) {\n let res = [];\n switch(this.table.version){\n case 2:\n case 4:\n for (let segment of this.table.segments)if (this.table.version === 2 && segment.value === classValue) res.push(...(0, $12727730ddfc8bfe$export$d02631cccf789723)(segment.firstGlyph, segment.lastGlyph + 1));\n else {\n for(let index = 0; index < segment.values.length; index++)if (segment.values[index] === classValue) res.push(segment.firstGlyph + index);\n }\n break;\n case 6:\n for (let segment of this.table.segments)if (segment.value === classValue) res.push(segment.glyph);\n break;\n case 8:\n for(let i = 0; i < this.table.values.length; i++)if (this.table.values[i] === classValue) res.push(this.table.firstGlyph + i);\n break;\n default:\n throw new Error(`Unknown lookup table format: ${this.table.version}`);\n }\n return res;\n }\n constructor(table){\n this.table = table;\n }\n}\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $ff5ce077dae0f144$export$2e2bcd8739ae039.prototype, \"glyphsForValue\", null);\n\n\nconst $50c7aac9316f2948$var$START_OF_TEXT_STATE = 0;\nconst $50c7aac9316f2948$var$START_OF_LINE_STATE = 1;\nconst $50c7aac9316f2948$var$END_OF_TEXT_CLASS = 0;\nconst $50c7aac9316f2948$var$OUT_OF_BOUNDS_CLASS = 1;\nconst $50c7aac9316f2948$var$DELETED_GLYPH_CLASS = 2;\nconst $50c7aac9316f2948$var$END_OF_LINE_CLASS = 3;\nconst $50c7aac9316f2948$var$DONT_ADVANCE = 0x4000;\nclass $50c7aac9316f2948$export$2e2bcd8739ae039 {\n process(glyphs, reverse, processEntry) {\n let currentState = $50c7aac9316f2948$var$START_OF_TEXT_STATE; // START_OF_LINE_STATE is used for kashida glyph insertions sometimes I think?\n let index = reverse ? glyphs.length - 1 : 0;\n let dir = reverse ? -1 : 1;\n while(dir === 1 && index <= glyphs.length || dir === -1 && index >= -1){\n let glyph = null;\n let classCode = $50c7aac9316f2948$var$OUT_OF_BOUNDS_CLASS;\n let shouldAdvance = true;\n if (index === glyphs.length || index === -1) classCode = $50c7aac9316f2948$var$END_OF_TEXT_CLASS;\n else {\n glyph = glyphs[index];\n if (glyph.id === 0xffff) classCode = $50c7aac9316f2948$var$DELETED_GLYPH_CLASS;\n else {\n classCode = this.lookupTable.lookup(glyph.id);\n if (classCode == null) classCode = $50c7aac9316f2948$var$OUT_OF_BOUNDS_CLASS;\n }\n }\n let row = this.stateTable.stateArray.getItem(currentState);\n let entryIndex = row[classCode];\n let entry = this.stateTable.entryTable.getItem(entryIndex);\n if (classCode !== $50c7aac9316f2948$var$END_OF_TEXT_CLASS && classCode !== $50c7aac9316f2948$var$DELETED_GLYPH_CLASS) {\n processEntry(glyph, entry, index);\n shouldAdvance = !(entry.flags & $50c7aac9316f2948$var$DONT_ADVANCE);\n }\n currentState = entry.newState;\n if (shouldAdvance) index += dir;\n }\n return glyphs;\n }\n /**\n * Performs a depth-first traversal of the glyph strings\n * represented by the state machine.\n */ traverse(opts, state = 0, visited = new Set) {\n if (visited.has(state)) return;\n visited.add(state);\n let { nClasses: nClasses, stateArray: stateArray, entryTable: entryTable } = this.stateTable;\n let row = stateArray.getItem(state);\n // Skip predefined classes\n for(let classCode = 4; classCode < nClasses; classCode++){\n let entryIndex = row[classCode];\n let entry = entryTable.getItem(entryIndex);\n // Try all glyphs in the class\n for (let glyph of this.lookupTable.glyphsForValue(classCode)){\n if (opts.enter) opts.enter(glyph, entry);\n if (entry.newState !== 0) this.traverse(opts, entry.newState, visited);\n if (opts.exit) opts.exit(glyph, entry);\n }\n }\n }\n constructor(stateTable){\n this.stateTable = stateTable;\n this.lookupTable = new (0, $ff5ce077dae0f144$export$2e2bcd8739ae039)(stateTable.classTable);\n }\n}\n\n\n\n\n// indic replacement flags\nconst $55f71433a605c87d$var$MARK_FIRST = 0x8000;\nconst $55f71433a605c87d$var$MARK_LAST = 0x2000;\nconst $55f71433a605c87d$var$VERB = 0x000F;\n// contextual substitution and glyph insertion flag\nconst $55f71433a605c87d$var$SET_MARK = 0x8000;\n// ligature entry flags\nconst $55f71433a605c87d$var$SET_COMPONENT = 0x8000;\nconst $55f71433a605c87d$var$PERFORM_ACTION = 0x2000;\n// ligature action masks\nconst $55f71433a605c87d$var$LAST_MASK = 0x80000000;\nconst $55f71433a605c87d$var$STORE_MASK = 0x40000000;\nconst $55f71433a605c87d$var$OFFSET_MASK = 0x3FFFFFFF;\nconst $55f71433a605c87d$var$VERTICAL_ONLY = 0x800000;\nconst $55f71433a605c87d$var$REVERSE_DIRECTION = 0x400000;\nconst $55f71433a605c87d$var$HORIZONTAL_AND_VERTICAL = 0x200000;\n// glyph insertion flags\nconst $55f71433a605c87d$var$CURRENT_IS_KASHIDA_LIKE = 0x2000;\nconst $55f71433a605c87d$var$MARKED_IS_KASHIDA_LIKE = 0x1000;\nconst $55f71433a605c87d$var$CURRENT_INSERT_BEFORE = 0x0800;\nconst $55f71433a605c87d$var$MARKED_INSERT_BEFORE = 0x0400;\nconst $55f71433a605c87d$var$CURRENT_INSERT_COUNT = 0x03E0;\nconst $55f71433a605c87d$var$MARKED_INSERT_COUNT = 0x001F;\nclass $55f71433a605c87d$export$2e2bcd8739ae039 {\n // Processes an array of glyphs and applies the specified features\n // Features should be in the form of {featureType:{featureSetting:boolean}}\n process(glyphs, features = {}) {\n for (let chain of this.morx.chains){\n let flags = chain.defaultFlags;\n // enable/disable the requested features\n for (let feature of chain.features){\n let f;\n if (f = features[feature.featureType]) {\n if (f[feature.featureSetting]) {\n flags &= feature.disableFlags;\n flags |= feature.enableFlags;\n } else if (f[feature.featureSetting] === false) {\n flags |= ~feature.disableFlags;\n flags &= ~feature.enableFlags;\n }\n }\n }\n for (let subtable of chain.subtables)if (subtable.subFeatureFlags & flags) this.processSubtable(subtable, glyphs);\n }\n // remove deleted glyphs\n let index = glyphs.length - 1;\n while(index >= 0){\n if (glyphs[index].id === 0xffff) glyphs.splice(index, 1);\n index--;\n }\n return glyphs;\n }\n processSubtable(subtable, glyphs) {\n this.subtable = subtable;\n this.glyphs = glyphs;\n if (this.subtable.type === 4) {\n this.processNoncontextualSubstitutions(this.subtable, this.glyphs);\n return;\n }\n this.ligatureStack = [];\n this.markedGlyph = null;\n this.firstGlyph = null;\n this.lastGlyph = null;\n this.markedIndex = null;\n let stateMachine = this.getStateMachine(subtable);\n let process = this.getProcessor();\n let reverse = !!(this.subtable.coverage & $55f71433a605c87d$var$REVERSE_DIRECTION);\n return stateMachine.process(this.glyphs, reverse, process);\n }\n getStateMachine(subtable) {\n return new (0, $50c7aac9316f2948$export$2e2bcd8739ae039)(subtable.table.stateTable);\n }\n getProcessor() {\n switch(this.subtable.type){\n case 0:\n return this.processIndicRearragement;\n case 1:\n return this.processContextualSubstitution;\n case 2:\n return this.processLigature;\n case 4:\n return this.processNoncontextualSubstitutions;\n case 5:\n return this.processGlyphInsertion;\n default:\n throw new Error(`Invalid morx subtable type: ${this.subtable.type}`);\n }\n }\n processIndicRearragement(glyph, entry, index) {\n if (entry.flags & $55f71433a605c87d$var$MARK_FIRST) this.firstGlyph = index;\n if (entry.flags & $55f71433a605c87d$var$MARK_LAST) this.lastGlyph = index;\n $55f71433a605c87d$var$reorderGlyphs(this.glyphs, entry.flags & $55f71433a605c87d$var$VERB, this.firstGlyph, this.lastGlyph);\n }\n processContextualSubstitution(glyph, entry, index) {\n let subsitutions = this.subtable.table.substitutionTable.items;\n if (entry.markIndex !== 0xffff) {\n let lookup = subsitutions.getItem(entry.markIndex);\n let lookupTable = new (0, $ff5ce077dae0f144$export$2e2bcd8739ae039)(lookup);\n glyph = this.glyphs[this.markedGlyph];\n var gid = lookupTable.lookup(glyph.id);\n if (gid) this.glyphs[this.markedGlyph] = this.font.getGlyph(gid, glyph.codePoints);\n }\n if (entry.currentIndex !== 0xffff) {\n let lookup = subsitutions.getItem(entry.currentIndex);\n let lookupTable = new (0, $ff5ce077dae0f144$export$2e2bcd8739ae039)(lookup);\n glyph = this.glyphs[index];\n var gid = lookupTable.lookup(glyph.id);\n if (gid) this.glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n }\n if (entry.flags & $55f71433a605c87d$var$SET_MARK) this.markedGlyph = index;\n }\n processLigature(glyph, entry, index) {\n if (entry.flags & $55f71433a605c87d$var$SET_COMPONENT) this.ligatureStack.push(index);\n if (entry.flags & $55f71433a605c87d$var$PERFORM_ACTION) {\n let actions = this.subtable.table.ligatureActions;\n let components = this.subtable.table.components;\n let ligatureList = this.subtable.table.ligatureList;\n let actionIndex = entry.action;\n let last = false;\n let ligatureIndex = 0;\n let codePoints = [];\n let ligatureGlyphs = [];\n while(!last){\n let componentGlyph = this.ligatureStack.pop();\n codePoints.unshift(...this.glyphs[componentGlyph].codePoints);\n let action = actions.getItem(actionIndex++);\n last = !!(action & $55f71433a605c87d$var$LAST_MASK);\n let store = !!(action & $55f71433a605c87d$var$STORE_MASK);\n let offset = (action & $55f71433a605c87d$var$OFFSET_MASK) << 2 >> 2; // sign extend 30 to 32 bits\n offset += this.glyphs[componentGlyph].id;\n let component = components.getItem(offset);\n ligatureIndex += component;\n if (last || store) {\n let ligatureEntry = ligatureList.getItem(ligatureIndex);\n this.glyphs[componentGlyph] = this.font.getGlyph(ligatureEntry, codePoints);\n ligatureGlyphs.push(componentGlyph);\n ligatureIndex = 0;\n codePoints = [];\n } else this.glyphs[componentGlyph] = this.font.getGlyph(0xffff);\n }\n // Put ligature glyph indexes back on the stack\n this.ligatureStack.push(...ligatureGlyphs);\n }\n }\n processNoncontextualSubstitutions(subtable, glyphs, index) {\n let lookupTable = new (0, $ff5ce077dae0f144$export$2e2bcd8739ae039)(subtable.table.lookupTable);\n for(index = 0; index < glyphs.length; index++){\n let glyph = glyphs[index];\n if (glyph.id !== 0xffff) {\n let gid = lookupTable.lookup(glyph.id);\n if (gid) glyphs[index] = this.font.getGlyph(gid, glyph.codePoints);\n }\n }\n }\n _insertGlyphs(glyphIndex, insertionActionIndex, count, isBefore) {\n let insertions = [];\n while(count--){\n let gid = this.subtable.table.insertionActions.getItem(insertionActionIndex++);\n insertions.push(this.font.getGlyph(gid));\n }\n if (!isBefore) glyphIndex++;\n this.glyphs.splice(glyphIndex, 0, ...insertions);\n }\n processGlyphInsertion(glyph, entry, index) {\n if (entry.flags & $55f71433a605c87d$var$SET_MARK) this.markedIndex = index;\n if (entry.markedInsertIndex !== 0xffff) {\n let count = (entry.flags & $55f71433a605c87d$var$MARKED_INSERT_COUNT) >>> 5;\n let isBefore = !!(entry.flags & $55f71433a605c87d$var$MARKED_INSERT_BEFORE);\n this._insertGlyphs(this.markedIndex, entry.markedInsertIndex, count, isBefore);\n }\n if (entry.currentInsertIndex !== 0xffff) {\n let count = (entry.flags & $55f71433a605c87d$var$CURRENT_INSERT_COUNT) >>> 5;\n let isBefore = !!(entry.flags & $55f71433a605c87d$var$CURRENT_INSERT_BEFORE);\n this._insertGlyphs(index, entry.currentInsertIndex, count, isBefore);\n }\n }\n getSupportedFeatures() {\n let features = [];\n for (let chain of this.morx.chains)for (let feature of chain.features)features.push([\n feature.featureType,\n feature.featureSetting\n ]);\n return features;\n }\n generateInputs(gid) {\n if (!this.inputCache) this.generateInputCache();\n return this.inputCache[gid] || [];\n }\n generateInputCache() {\n this.inputCache = {};\n for (let chain of this.morx.chains){\n let flags = chain.defaultFlags;\n for (let subtable of chain.subtables)if (subtable.subFeatureFlags & flags) this.generateInputsForSubtable(subtable);\n }\n }\n generateInputsForSubtable(subtable) {\n // Currently, only supporting ligature subtables.\n if (subtable.type !== 2) return;\n let reverse = !!(subtable.coverage & $55f71433a605c87d$var$REVERSE_DIRECTION);\n if (reverse) throw new Error('Reverse subtable, not supported.');\n this.subtable = subtable;\n this.ligatureStack = [];\n let stateMachine = this.getStateMachine(subtable);\n let process = this.getProcessor();\n let input = [];\n let stack = [];\n this.glyphs = [];\n stateMachine.traverse({\n enter: (glyph, entry)=>{\n let glyphs = this.glyphs;\n stack.push({\n glyphs: glyphs.slice(),\n ligatureStack: this.ligatureStack.slice()\n });\n // Add glyph to input and glyphs to process.\n let g = this.font.getGlyph(glyph);\n input.push(g);\n glyphs.push(input[input.length - 1]);\n // Process ligature substitution\n process(glyphs[glyphs.length - 1], entry, glyphs.length - 1);\n // Add input to result if only one matching (non-deleted) glyph remains.\n let count = 0;\n let found = 0;\n for(let i = 0; i < glyphs.length && count <= 1; i++)if (glyphs[i].id !== 0xffff) {\n count++;\n found = glyphs[i].id;\n }\n if (count === 1) {\n let result = input.map((g)=>g.id);\n let cache = this.inputCache[found];\n if (cache) cache.push(result);\n else this.inputCache[found] = [\n result\n ];\n }\n },\n exit: ()=>{\n ({ glyphs: this.glyphs, ligatureStack: this.ligatureStack } = stack.pop());\n input.pop();\n }\n });\n }\n constructor(font){\n this.processIndicRearragement = this.processIndicRearragement.bind(this);\n this.processContextualSubstitution = this.processContextualSubstitution.bind(this);\n this.processLigature = this.processLigature.bind(this);\n this.processNoncontextualSubstitutions = this.processNoncontextualSubstitutions.bind(this);\n this.processGlyphInsertion = this.processGlyphInsertion.bind(this);\n this.font = font;\n this.morx = font.morx;\n this.inputCache = null;\n }\n}\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $55f71433a605c87d$export$2e2bcd8739ae039.prototype, \"getStateMachine\", null);\n// swaps the glyphs in rangeA with those in rangeB\n// reverse the glyphs inside those ranges if specified\n// ranges are in [offset, length] format\nfunction $55f71433a605c87d$var$swap(glyphs, rangeA, rangeB, reverseA = false, reverseB = false) {\n let end = glyphs.splice(rangeB[0] - (rangeB[1] - 1), rangeB[1]);\n if (reverseB) end.reverse();\n let start = glyphs.splice(rangeA[0], rangeA[1], ...end);\n if (reverseA) start.reverse();\n glyphs.splice(rangeB[0] - (rangeA[1] - 1), 0, ...start);\n return glyphs;\n}\nfunction $55f71433a605c87d$var$reorderGlyphs(glyphs, verb, firstGlyph, lastGlyph) {\n let length = lastGlyph - firstGlyph + 1;\n switch(verb){\n case 0:\n return glyphs;\n case 1:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 1\n ], [\n lastGlyph,\n 0\n ]);\n case 2:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 0\n ], [\n lastGlyph,\n 1\n ]);\n case 3:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 1\n ], [\n lastGlyph,\n 1\n ]);\n case 4:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 0\n ]);\n case 5:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 0\n ], true, false);\n case 6:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 0\n ], [\n lastGlyph,\n 2\n ]);\n case 7:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 0\n ], [\n lastGlyph,\n 2\n ], false, true);\n case 8:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 1\n ], [\n lastGlyph,\n 2\n ]);\n case 9:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 1\n ], [\n lastGlyph,\n 2\n ], false, true);\n case 10:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 1\n ]);\n case 11:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 1\n ], true, false);\n case 12:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 2\n ]);\n case 13:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 2\n ], true, false);\n case 14:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 2\n ], false, true);\n case 15:\n return $55f71433a605c87d$var$swap(glyphs, [\n firstGlyph,\n 2\n ], [\n lastGlyph,\n 2\n ], true, true);\n default:\n throw new Error(`Unknown verb: ${verb}`);\n }\n}\n\n\nclass $ba6dd74203be8728$export$2e2bcd8739ae039 {\n substitute(glyphRun) {\n // AAT expects the glyphs to be in visual order prior to morx processing,\n // so reverse the glyphs if the script is right-to-left.\n if (glyphRun.direction === 'rtl') glyphRun.glyphs.reverse();\n this.morxProcessor.process(glyphRun.glyphs, $3b6302b64eccc32c$export$b813f7d2a1677c16(glyphRun.features));\n }\n getAvailableFeatures(script, language) {\n return $3b6302b64eccc32c$export$bd6df347a4f391c4(this.morxProcessor.getSupportedFeatures());\n }\n stringsForGlyph(gid) {\n let glyphStrings = this.morxProcessor.generateInputs(gid);\n let result = new Set;\n for (let glyphs of glyphStrings)this._addStrings(glyphs, 0, result, '');\n return result;\n }\n _addStrings(glyphs, index, strings, string) {\n let codePoints = this.font._cmapProcessor.codePointsForGlyph(glyphs[index]);\n for (let codePoint of codePoints){\n let s = string + String.fromCodePoint(codePoint);\n if (index < glyphs.length - 1) this._addStrings(glyphs, index + 1, strings, s);\n else strings.add(s);\n }\n }\n constructor(font){\n this.font = font;\n this.morxProcessor = new (0, $55f71433a605c87d$export$2e2bcd8739ae039)(font);\n this.fallbackPosition = false;\n }\n}\n\n\n\nclass $94d7a73bd2edfc9a$export$2e2bcd8739ae039 {\n /**\n * Adds the given features to the last stage.\n * Ignores features that have already been applied.\n */ _addFeatures(features, global) {\n let stageIndex = this.stages.length - 1;\n let stage = this.stages[stageIndex];\n for (let feature of features)if (this.allFeatures[feature] == null) {\n stage.push(feature);\n this.allFeatures[feature] = stageIndex;\n if (global) this.globalFeatures[feature] = true;\n }\n }\n /**\n * Add features to the last stage\n */ add(arg, global = true) {\n if (this.stages.length === 0) this.stages.push([]);\n if (typeof arg === 'string') arg = [\n arg\n ];\n if (Array.isArray(arg)) this._addFeatures(arg, global);\n else if (typeof arg === 'object') {\n this._addFeatures(arg.global || [], true);\n this._addFeatures(arg.local || [], false);\n } else throw new Error(\"Unsupported argument to ShapingPlan#add\");\n }\n /**\n * Add a new stage\n */ addStage(arg, global) {\n if (typeof arg === 'function') this.stages.push(arg, []);\n else {\n this.stages.push([]);\n this.add(arg, global);\n }\n }\n setFeatureOverrides(features) {\n if (Array.isArray(features)) this.add(features);\n else if (typeof features === 'object') for(let tag in features){\n if (features[tag]) this.add(tag);\n else if (this.allFeatures[tag] != null) {\n let stage = this.stages[this.allFeatures[tag]];\n stage.splice(stage.indexOf(tag), 1);\n delete this.allFeatures[tag];\n delete this.globalFeatures[tag];\n }\n }\n }\n /**\n * Assigns the global features to the given glyphs\n */ assignGlobalFeatures(glyphs) {\n for (let glyph of glyphs)for(let feature in this.globalFeatures)glyph.features[feature] = true;\n }\n /**\n * Executes the planned stages using the given OTProcessor\n */ process(processor, glyphs, positions) {\n for (let stage of this.stages){\n if (typeof stage === 'function') {\n if (!positions) stage(this.font, glyphs, this);\n } else if (stage.length > 0) processor.applyFeatures(stage, glyphs, positions);\n }\n }\n constructor(font, script, direction){\n this.font = font;\n this.script = script;\n this.direction = direction;\n this.stages = [];\n this.globalFeatures = {};\n this.allFeatures = {};\n }\n}\n\n\n\n\nconst $649970d87335b30f$var$VARIATION_FEATURES = [\n 'rvrn'\n];\nconst $649970d87335b30f$var$COMMON_FEATURES = [\n 'ccmp',\n 'locl',\n 'rlig',\n 'mark',\n 'mkmk'\n];\nconst $649970d87335b30f$var$FRACTIONAL_FEATURES = [\n 'frac',\n 'numr',\n 'dnom'\n];\nconst $649970d87335b30f$var$HORIZONTAL_FEATURES = [\n 'calt',\n 'clig',\n 'liga',\n 'rclt',\n 'curs',\n 'kern'\n];\nconst $649970d87335b30f$var$VERTICAL_FEATURES = [\n 'vert'\n];\nconst $649970d87335b30f$var$DIRECTIONAL_FEATURES = {\n ltr: [\n 'ltra',\n 'ltrm'\n ],\n rtl: [\n 'rtla',\n 'rtlm'\n ]\n};\nclass $649970d87335b30f$export$2e2bcd8739ae039 {\n static plan(plan, glyphs, features) {\n // Plan the features we want to apply\n this.planPreprocessing(plan);\n this.planFeatures(plan);\n this.planPostprocessing(plan, features);\n // Assign the global features to all the glyphs\n plan.assignGlobalFeatures(glyphs);\n // Assign local features to glyphs\n this.assignFeatures(plan, glyphs);\n }\n static planPreprocessing(plan) {\n plan.add({\n global: [\n ...$649970d87335b30f$var$VARIATION_FEATURES,\n ...$649970d87335b30f$var$DIRECTIONAL_FEATURES[plan.direction]\n ],\n local: $649970d87335b30f$var$FRACTIONAL_FEATURES\n });\n }\n static planFeatures(plan) {\n // Do nothing by default. Let subclasses override this.\n }\n static planPostprocessing(plan, userFeatures) {\n plan.add([\n ...$649970d87335b30f$var$COMMON_FEATURES,\n ...$649970d87335b30f$var$HORIZONTAL_FEATURES\n ]);\n plan.setFeatureOverrides(userFeatures);\n }\n static assignFeatures(plan, glyphs) {\n // Enable contextual fractions\n for(let i = 0; i < glyphs.length; i++){\n let glyph = glyphs[i];\n if (glyph.codePoints[0] === 0x2044) {\n let start = i;\n let end = i + 1;\n // Apply numerator\n while(start > 0 && (0, $6uUbQ$isDigit)(glyphs[start - 1].codePoints[0])){\n glyphs[start - 1].features.numr = true;\n glyphs[start - 1].features.frac = true;\n start--;\n }\n // Apply denominator\n while(end < glyphs.length && (0, $6uUbQ$isDigit)(glyphs[end].codePoints[0])){\n glyphs[end].features.dnom = true;\n glyphs[end].features.frac = true;\n end++;\n }\n // Apply fraction slash\n glyph.features.frac = true;\n i = end - 1;\n }\n }\n }\n}\n(0, $6uUbQ$_)($649970d87335b30f$export$2e2bcd8739ae039, \"zeroMarkWidths\", 'AFTER_GPOS');\n\n\n\n\n\n\nconst $764eb544bbe1ccf0$var$trie = new (0, $6uUbQ$unicodetrie)((0, $12727730ddfc8bfe$export$94fdf11bafc8de6b)(\"APABAAAAAAAAOAAAAf0BAv7tmi1MxDAUx7vtvjhAgcDgkEgEAnmXEBIMCYaEcygEiqBQ4FAkCE4ikUgMiiBJSAgSiUQSDMn9L9eSl6bddddug9t7yS/trevre+3r27pcNxZiG+yCfdCVv/9LeQxOwRm4AJegD27ALbgD9+ABPJF+z+BN/h7yDj5k/VOWX6SdmU5+wLWknggxDxaS8u0qiiX4uiz9XamQ3wzDMAzDMAzDMAzDVI/h959V/v7BMAzDMAzDMLlyNTNiMSdewVxbiA44B4/guz1qW58VYlMI0WsJ0W+N6kXw0spvPtdwhtkwnGM6uLaV4Xyzg3v3PM9DPfQ/sOg4xPWjipy31P8LTqbU304c/cLCUmWJLNB2Uz2U1KTeRKNmKHVMfbJC+/0loTZRH/W5cvEvBJPMbREkWt3FD1NcqXZBSpuE2Ad0PBehPtNrPtIEdYP+hiRt/V1jIiE69X4NT/uVZI3PUHE9bm5M7ePGdZWy951v7Nn6j8v1WWKP3mt6ttnsigx6VN7Vc0VomSSGqW2mGNP1muZPl7LfjNUaKNFtDGVf2fvE9O7VlBS5j333c5p/eeoOqcs1R/hIqDWLJ7TTlksirVT1SI7l8k4Yp+g3jafGcrU1RM6l9th80XOpnlN97bDNY4i4s61B0Si/ipa0uHMl6zqEjlFfCZm/TM8KmzQDjmuTAQ==\"));\nconst $764eb544bbe1ccf0$var$FEATURES = [\n 'isol',\n 'fina',\n 'fin2',\n 'fin3',\n 'medi',\n 'med2',\n 'init'\n];\nconst $764eb544bbe1ccf0$var$ShapingClasses = {\n Non_Joining: 0,\n Left_Joining: 1,\n Right_Joining: 2,\n Dual_Joining: 3,\n Join_Causing: 3,\n ALAPH: 4,\n 'DALATH RISH': 5,\n Transparent: 6\n};\nconst $764eb544bbe1ccf0$var$ISOL = 'isol';\nconst $764eb544bbe1ccf0$var$FINA = 'fina';\nconst $764eb544bbe1ccf0$var$FIN2 = 'fin2';\nconst $764eb544bbe1ccf0$var$FIN3 = 'fin3';\nconst $764eb544bbe1ccf0$var$MEDI = 'medi';\nconst $764eb544bbe1ccf0$var$MED2 = 'med2';\nconst $764eb544bbe1ccf0$var$INIT = 'init';\nconst $764eb544bbe1ccf0$var$NONE = null;\n// Each entry is [prevAction, curAction, nextState]\nconst $764eb544bbe1ccf0$var$STATE_TABLE = [\n // Non_Joining, Left_Joining, Right_Joining, Dual_Joining, ALAPH, DALATH RISH\n // State 0: prev was U, not willing to join.\n [\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$NONE,\n 0\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 6\n ]\n ],\n // State 1: prev was R or ISOL/ALAPH, not willing to join.\n [\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$NONE,\n 0\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$FIN2,\n 5\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 6\n ]\n ],\n // State 2: prev was D/L in ISOL form, willing to join.\n [\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$NONE,\n 0\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$INIT,\n $764eb544bbe1ccf0$var$FINA,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$INIT,\n $764eb544bbe1ccf0$var$FINA,\n 3\n ],\n [\n $764eb544bbe1ccf0$var$INIT,\n $764eb544bbe1ccf0$var$FINA,\n 4\n ],\n [\n $764eb544bbe1ccf0$var$INIT,\n $764eb544bbe1ccf0$var$FINA,\n 6\n ]\n ],\n // State 3: prev was D in FINA form, willing to join.\n [\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$NONE,\n 0\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$MEDI,\n $764eb544bbe1ccf0$var$FINA,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$MEDI,\n $764eb544bbe1ccf0$var$FINA,\n 3\n ],\n [\n $764eb544bbe1ccf0$var$MEDI,\n $764eb544bbe1ccf0$var$FINA,\n 4\n ],\n [\n $764eb544bbe1ccf0$var$MEDI,\n $764eb544bbe1ccf0$var$FINA,\n 6\n ]\n ],\n // State 4: prev was FINA ALAPH, not willing to join.\n [\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$NONE,\n 0\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$MED2,\n $764eb544bbe1ccf0$var$ISOL,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$MED2,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$MED2,\n $764eb544bbe1ccf0$var$FIN2,\n 5\n ],\n [\n $764eb544bbe1ccf0$var$MED2,\n $764eb544bbe1ccf0$var$ISOL,\n 6\n ]\n ],\n // State 5: prev was FIN2/FIN3 ALAPH, not willing to join.\n [\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$NONE,\n 0\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$ISOL,\n $764eb544bbe1ccf0$var$ISOL,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$ISOL,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$ISOL,\n $764eb544bbe1ccf0$var$FIN2,\n 5\n ],\n [\n $764eb544bbe1ccf0$var$ISOL,\n $764eb544bbe1ccf0$var$ISOL,\n 6\n ]\n ],\n // State 6: prev was DALATH/RISH, not willing to join.\n [\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$NONE,\n 0\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 1\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 2\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$FIN3,\n 5\n ],\n [\n $764eb544bbe1ccf0$var$NONE,\n $764eb544bbe1ccf0$var$ISOL,\n 6\n ]\n ]\n];\nclass $764eb544bbe1ccf0$export$2e2bcd8739ae039 extends (0, $649970d87335b30f$export$2e2bcd8739ae039) {\n static planFeatures(plan) {\n plan.add([\n 'ccmp',\n 'locl'\n ]);\n for(let i = 0; i < $764eb544bbe1ccf0$var$FEATURES.length; i++){\n let feature = $764eb544bbe1ccf0$var$FEATURES[i];\n plan.addStage(feature, false);\n }\n plan.addStage('mset');\n }\n static assignFeatures(plan, glyphs) {\n super.assignFeatures(plan, glyphs);\n let prev = -1;\n let state = 0;\n let actions = [];\n // Apply the state machine to map glyphs to features\n for(let i = 0; i < glyphs.length; i++){\n let curAction, prevAction;\n var glyph = glyphs[i];\n let type = $764eb544bbe1ccf0$var$getShapingClass(glyph.codePoints[0]);\n if (type === $764eb544bbe1ccf0$var$ShapingClasses.Transparent) {\n actions[i] = $764eb544bbe1ccf0$var$NONE;\n continue;\n }\n [prevAction, curAction, state] = $764eb544bbe1ccf0$var$STATE_TABLE[state][type];\n if (prevAction !== $764eb544bbe1ccf0$var$NONE && prev !== -1) actions[prev] = prevAction;\n actions[i] = curAction;\n prev = i;\n }\n // Apply the chosen features to their respective glyphs\n for(let index = 0; index < glyphs.length; index++){\n let feature;\n var glyph = glyphs[index];\n if (feature = actions[index]) glyph.features[feature] = true;\n }\n }\n}\nfunction $764eb544bbe1ccf0$var$getShapingClass(codePoint) {\n let res = $764eb544bbe1ccf0$var$trie.get(codePoint);\n if (res) return res - 1;\n let category = (0, $6uUbQ$getCategory)(codePoint);\n if (category === 'Mn' || category === 'Me' || category === 'Cf') return $764eb544bbe1ccf0$var$ShapingClasses.Transparent;\n return $764eb544bbe1ccf0$var$ShapingClasses.Non_Joining;\n}\n\n\n\n\n\nclass $85d408632270248b$export$2e2bcd8739ae039 {\n reset(options = {}, index = 0) {\n this.options = options;\n this.flags = options.flags || {};\n this.markAttachmentType = options.markAttachmentType || 0;\n this.index = index;\n }\n get cur() {\n return this.glyphs[this.index] || null;\n }\n shouldIgnore(glyph) {\n return this.flags.ignoreMarks && glyph.isMark || this.flags.ignoreBaseGlyphs && glyph.isBase || this.flags.ignoreLigatures && glyph.isLigature || this.markAttachmentType && glyph.isMark && glyph.markAttachmentType !== this.markAttachmentType;\n }\n move(dir) {\n this.index += dir;\n while(0 <= this.index && this.index < this.glyphs.length && this.shouldIgnore(this.glyphs[this.index]))this.index += dir;\n if (0 > this.index || this.index >= this.glyphs.length) return null;\n return this.glyphs[this.index];\n }\n next() {\n return this.move(1);\n }\n prev() {\n return this.move(-1);\n }\n peek(count = 1) {\n let idx = this.index;\n let res = this.increment(count);\n this.index = idx;\n return res;\n }\n peekIndex(count = 1) {\n let idx = this.index;\n this.increment(count);\n let res = this.index;\n this.index = idx;\n return res;\n }\n increment(count = 1) {\n let dir = count < 0 ? -1 : 1;\n count = Math.abs(count);\n while(count--)this.move(dir);\n return this.glyphs[this.index];\n }\n constructor(glyphs, options){\n this.glyphs = glyphs;\n this.reset(options);\n }\n}\n\n\n\nconst $a83b9c36aaa94fd3$var$DEFAULT_SCRIPTS = [\n 'DFLT',\n 'dflt',\n 'latn'\n];\nclass $a83b9c36aaa94fd3$export$2e2bcd8739ae039 {\n findScript(script) {\n if (this.table.scriptList == null) return null;\n if (!Array.isArray(script)) script = [\n script\n ];\n for (let s of script)for (let entry of this.table.scriptList){\n if (entry.tag === s) return entry;\n }\n return null;\n }\n selectScript(script, language, direction) {\n let changed = false;\n let entry;\n if (!this.script || script !== this.scriptTag) {\n entry = this.findScript(script);\n if (!entry) entry = this.findScript($a83b9c36aaa94fd3$var$DEFAULT_SCRIPTS);\n if (!entry) return this.scriptTag;\n this.scriptTag = entry.tag;\n this.script = entry.script;\n this.language = null;\n this.languageTag = null;\n changed = true;\n }\n if (!direction || direction !== this.direction) this.direction = direction || $130d1a642ebcd2b7$export$9fddb9d0dd7d8a54(script);\n if (language && language.length < 4) language += ' '.repeat(4 - language.length);\n if (!language || language !== this.languageTag) {\n this.language = null;\n for (let lang of this.script.langSysRecords)if (lang.tag === language) {\n this.language = lang.langSys;\n this.languageTag = lang.tag;\n break;\n }\n if (!this.language) {\n this.language = this.script.defaultLangSys;\n this.languageTag = null;\n }\n changed = true;\n }\n // Build a feature lookup table\n if (changed) {\n this.features = {};\n if (this.language) for (let featureIndex of this.language.featureIndexes){\n let record = this.table.featureList[featureIndex];\n let substituteFeature = this.substituteFeatureForVariations(featureIndex);\n this.features[record.tag] = substituteFeature || record.feature;\n }\n }\n return this.scriptTag;\n }\n lookupsForFeatures(userFeatures = [], exclude) {\n let lookups = [];\n for (let tag of userFeatures){\n let feature = this.features[tag];\n if (!feature) continue;\n for (let lookupIndex of feature.lookupListIndexes){\n if (exclude && exclude.indexOf(lookupIndex) !== -1) continue;\n lookups.push({\n feature: tag,\n index: lookupIndex,\n lookup: this.table.lookupList.get(lookupIndex)\n });\n }\n }\n lookups.sort((a, b)=>a.index - b.index);\n return lookups;\n }\n substituteFeatureForVariations(featureIndex) {\n if (this.variationsIndex === -1) return null;\n let record = this.table.featureVariations.featureVariationRecords[this.variationsIndex];\n let substitutions = record.featureTableSubstitution.substitutions;\n for (let substitution of substitutions){\n if (substitution.featureIndex === featureIndex) return substitution.alternateFeatureTable;\n }\n return null;\n }\n findVariationsIndex(coords) {\n let variations = this.table.featureVariations;\n if (!variations) return -1;\n let records = variations.featureVariationRecords;\n for(let i = 0; i < records.length; i++){\n let conditions = records[i].conditionSet.conditionTable;\n if (this.variationConditionsMatch(conditions, coords)) return i;\n }\n return -1;\n }\n variationConditionsMatch(conditions, coords) {\n return conditions.every((condition)=>{\n let coord = condition.axisIndex < coords.length ? coords[condition.axisIndex] : 0;\n return condition.filterRangeMinValue <= coord && coord <= condition.filterRangeMaxValue;\n });\n }\n applyFeatures(userFeatures, glyphs, advances) {\n let lookups = this.lookupsForFeatures(userFeatures);\n this.applyLookups(lookups, glyphs, advances);\n }\n applyLookups(lookups, glyphs, positions) {\n this.glyphs = glyphs;\n this.positions = positions;\n this.glyphIterator = new (0, $85d408632270248b$export$2e2bcd8739ae039)(glyphs);\n for (let { feature: feature, lookup: lookup } of lookups){\n this.currentFeature = feature;\n this.glyphIterator.reset(lookup.flags);\n while(this.glyphIterator.index < glyphs.length){\n if (!(feature in this.glyphIterator.cur.features)) {\n this.glyphIterator.next();\n continue;\n }\n for (let table of lookup.subTables){\n let res = this.applyLookup(lookup.lookupType, table);\n if (res) break;\n }\n this.glyphIterator.next();\n }\n }\n }\n applyLookup(lookup, table) {\n throw new Error(\"applyLookup must be implemented by subclasses\");\n }\n applyLookupList(lookupRecords) {\n let options = this.glyphIterator.options;\n let glyphIndex = this.glyphIterator.index;\n for (let lookupRecord of lookupRecords){\n // Reset flags and find glyph index for this lookup record\n this.glyphIterator.reset(options, glyphIndex);\n this.glyphIterator.increment(lookupRecord.sequenceIndex);\n // Get the lookup and setup flags for subtables\n let lookup = this.table.lookupList.get(lookupRecord.lookupListIndex);\n this.glyphIterator.reset(lookup.flags, this.glyphIterator.index);\n // Apply lookup subtables until one matches\n for (let table of lookup.subTables){\n if (this.applyLookup(lookup.lookupType, table)) break;\n }\n }\n this.glyphIterator.reset(options, glyphIndex);\n return true;\n }\n coverageIndex(coverage, glyph) {\n if (glyph == null) glyph = this.glyphIterator.cur.id;\n switch(coverage.version){\n case 1:\n return coverage.glyphs.indexOf(glyph);\n case 2:\n for (let range of coverage.rangeRecords){\n if (range.start <= glyph && glyph <= range.end) return range.startCoverageIndex + glyph - range.start;\n }\n break;\n }\n return -1;\n }\n match(sequenceIndex, sequence, fn, matched) {\n let pos = this.glyphIterator.index;\n let glyph = this.glyphIterator.increment(sequenceIndex);\n let idx = 0;\n while(idx < sequence.length && glyph && fn(sequence[idx], glyph)){\n if (matched) matched.push(this.glyphIterator.index);\n idx++;\n glyph = this.glyphIterator.next();\n }\n this.glyphIterator.index = pos;\n if (idx < sequence.length) return false;\n return matched || true;\n }\n sequenceMatches(sequenceIndex, sequence) {\n return this.match(sequenceIndex, sequence, (component, glyph)=>component === glyph.id);\n }\n sequenceMatchIndices(sequenceIndex, sequence) {\n return this.match(sequenceIndex, sequence, (component, glyph)=>{\n // If the current feature doesn't apply to this glyph,\n if (!(this.currentFeature in glyph.features)) return false;\n return component === glyph.id;\n }, []);\n }\n coverageSequenceMatches(sequenceIndex, sequence) {\n return this.match(sequenceIndex, sequence, (coverage, glyph)=>this.coverageIndex(coverage, glyph.id) >= 0);\n }\n getClassID(glyph, classDef) {\n switch(classDef.version){\n case 1:\n let i = glyph - classDef.startGlyph;\n if (i >= 0 && i < classDef.classValueArray.length) return classDef.classValueArray[i];\n break;\n case 2:\n for (let range of classDef.classRangeRecord){\n if (range.start <= glyph && glyph <= range.end) return range.class;\n }\n break;\n }\n return 0;\n }\n classSequenceMatches(sequenceIndex, sequence, classDef) {\n return this.match(sequenceIndex, sequence, (classID, glyph)=>classID === this.getClassID(glyph.id, classDef));\n }\n applyContext(table) {\n let index, set;\n switch(table.version){\n case 1:\n index = this.coverageIndex(table.coverage);\n if (index === -1) return false;\n set = table.ruleSets[index];\n for (let rule of set){\n if (this.sequenceMatches(1, rule.input)) return this.applyLookupList(rule.lookupRecords);\n }\n break;\n case 2:\n if (this.coverageIndex(table.coverage) === -1) return false;\n index = this.getClassID(this.glyphIterator.cur.id, table.classDef);\n if (index === -1) return false;\n set = table.classSet[index];\n for (let rule of set){\n if (this.classSequenceMatches(1, rule.classes, table.classDef)) return this.applyLookupList(rule.lookupRecords);\n }\n break;\n case 3:\n if (this.coverageSequenceMatches(0, table.coverages)) return this.applyLookupList(table.lookupRecords);\n break;\n }\n return false;\n }\n applyChainingContext(table) {\n let index;\n switch(table.version){\n case 1:\n index = this.coverageIndex(table.coverage);\n if (index === -1) return false;\n let set = table.chainRuleSets[index];\n for (let rule of set){\n if (this.sequenceMatches(-rule.backtrack.length, rule.backtrack) && this.sequenceMatches(1, rule.input) && this.sequenceMatches(1 + rule.input.length, rule.lookahead)) return this.applyLookupList(rule.lookupRecords);\n }\n break;\n case 2:\n if (this.coverageIndex(table.coverage) === -1) return false;\n index = this.getClassID(this.glyphIterator.cur.id, table.inputClassDef);\n let rules = table.chainClassSet[index];\n if (!rules) return false;\n for (let rule of rules){\n if (this.classSequenceMatches(-rule.backtrack.length, rule.backtrack, table.backtrackClassDef) && this.classSequenceMatches(1, rule.input, table.inputClassDef) && this.classSequenceMatches(1 + rule.input.length, rule.lookahead, table.lookaheadClassDef)) return this.applyLookupList(rule.lookupRecords);\n }\n break;\n case 3:\n if (this.coverageSequenceMatches(-table.backtrackGlyphCount, table.backtrackCoverage) && this.coverageSequenceMatches(0, table.inputCoverage) && this.coverageSequenceMatches(table.inputGlyphCount, table.lookaheadCoverage)) return this.applyLookupList(table.lookupRecords);\n break;\n }\n return false;\n }\n constructor(font, table){\n this.font = font;\n this.table = table;\n this.script = null;\n this.scriptTag = null;\n this.language = null;\n this.languageTag = null;\n this.features = {};\n this.lookups = {};\n // Setup variation substitutions\n this.variationsIndex = font._variationProcessor ? this.findVariationsIndex(font._variationProcessor.normalizedCoords) : -1;\n // initialize to default script + language\n this.selectScript();\n // current context (set by applyFeatures)\n this.glyphs = [];\n this.positions = []; // only used by GPOS\n this.ligatureID = 1;\n this.currentFeature = null;\n }\n}\n\n\nclass $10e7b257e1a9a756$export$2e2bcd8739ae039 {\n get id() {\n return this._id;\n }\n set id(id) {\n this._id = id;\n this.substituted = true;\n let GDEF = this._font.GDEF;\n if (GDEF && GDEF.glyphClassDef) {\n // TODO: clean this up\n let classID = (0, $a83b9c36aaa94fd3$export$2e2bcd8739ae039).prototype.getClassID(id, GDEF.glyphClassDef);\n this.isBase = classID === 1;\n this.isLigature = classID === 2;\n this.isMark = classID === 3;\n this.markAttachmentType = GDEF.markAttachClassDef ? (0, $a83b9c36aaa94fd3$export$2e2bcd8739ae039).prototype.getClassID(id, GDEF.markAttachClassDef) : 0;\n } else {\n this.isMark = this.codePoints.length > 0 && this.codePoints.every((0, $6uUbQ$isMark));\n this.isBase = !this.isMark;\n this.isLigature = this.codePoints.length > 1;\n this.markAttachmentType = 0;\n }\n }\n copy() {\n return new $10e7b257e1a9a756$export$2e2bcd8739ae039(this._font, this.id, this.codePoints, this.features);\n }\n constructor(font, id, codePoints = [], features){\n this._font = font;\n this.codePoints = codePoints;\n this.id = id;\n this.features = {};\n if (Array.isArray(features)) for(let i = 0; i < features.length; i++){\n let feature = features[i];\n this.features[feature] = true;\n }\n else if (typeof features === 'object') Object.assign(this.features, features);\n this.ligatureID = null;\n this.ligatureComponent = null;\n this.isLigated = false;\n this.cursiveAttachment = null;\n this.markAttachment = null;\n this.shaperInfo = null;\n this.substituted = false;\n this.isMultiplied = false;\n }\n}\n\n\nclass $e1c6bbc8cb416f8c$export$2e2bcd8739ae039 extends (0, $649970d87335b30f$export$2e2bcd8739ae039) {\n static planFeatures(plan) {\n plan.add([\n 'ljmo',\n 'vjmo',\n 'tjmo'\n ], false);\n }\n static assignFeatures(plan, glyphs) {\n let state = 0;\n let i = 0;\n while(i < glyphs.length){\n let action;\n let glyph = glyphs[i];\n let code = glyph.codePoints[0];\n let type = $e1c6bbc8cb416f8c$var$getType(code);\n [action, state] = $e1c6bbc8cb416f8c$var$STATE_TABLE[state][type];\n switch(action){\n case $e1c6bbc8cb416f8c$var$DECOMPOSE:\n // Decompose the composed syllable if it is not supported by the font.\n if (!plan.font.hasGlyphForCodePoint(code)) i = $e1c6bbc8cb416f8c$var$decompose(glyphs, i, plan.font);\n break;\n case $e1c6bbc8cb416f8c$var$COMPOSE:\n // Found a decomposed syllable. Try to compose if supported by the font.\n i = $e1c6bbc8cb416f8c$var$compose(glyphs, i, plan.font);\n break;\n case $e1c6bbc8cb416f8c$var$TONE_MARK:\n // Got a valid syllable, followed by a tone mark. Move the tone mark to the beginning of the syllable.\n $e1c6bbc8cb416f8c$var$reorderToneMark(glyphs, i, plan.font);\n break;\n case $e1c6bbc8cb416f8c$var$INVALID:\n // Tone mark has no valid syllable to attach to, so insert a dotted circle\n i = $e1c6bbc8cb416f8c$var$insertDottedCircle(glyphs, i, plan.font);\n break;\n }\n i++;\n }\n }\n}\n(0, $6uUbQ$_)($e1c6bbc8cb416f8c$export$2e2bcd8739ae039, \"zeroMarkWidths\", 'NONE');\nconst $e1c6bbc8cb416f8c$var$HANGUL_BASE = 0xac00;\nconst $e1c6bbc8cb416f8c$var$HANGUL_END = 0xd7a4;\nconst $e1c6bbc8cb416f8c$var$HANGUL_COUNT = $e1c6bbc8cb416f8c$var$HANGUL_END - $e1c6bbc8cb416f8c$var$HANGUL_BASE + 1;\nconst $e1c6bbc8cb416f8c$var$L_BASE = 0x1100; // lead\nconst $e1c6bbc8cb416f8c$var$V_BASE = 0x1161; // vowel\nconst $e1c6bbc8cb416f8c$var$T_BASE = 0x11a7; // trail\nconst $e1c6bbc8cb416f8c$var$L_COUNT = 19;\nconst $e1c6bbc8cb416f8c$var$V_COUNT = 21;\nconst $e1c6bbc8cb416f8c$var$T_COUNT = 28;\nconst $e1c6bbc8cb416f8c$var$L_END = $e1c6bbc8cb416f8c$var$L_BASE + $e1c6bbc8cb416f8c$var$L_COUNT - 1;\nconst $e1c6bbc8cb416f8c$var$V_END = $e1c6bbc8cb416f8c$var$V_BASE + $e1c6bbc8cb416f8c$var$V_COUNT - 1;\nconst $e1c6bbc8cb416f8c$var$T_END = $e1c6bbc8cb416f8c$var$T_BASE + $e1c6bbc8cb416f8c$var$T_COUNT - 1;\nconst $e1c6bbc8cb416f8c$var$DOTTED_CIRCLE = 0x25cc;\nconst $e1c6bbc8cb416f8c$var$isL = (code)=>0x1100 <= code && code <= 0x115f || 0xa960 <= code && code <= 0xa97c;\nconst $e1c6bbc8cb416f8c$var$isV = (code)=>0x1160 <= code && code <= 0x11a7 || 0xd7b0 <= code && code <= 0xd7c6;\nconst $e1c6bbc8cb416f8c$var$isT = (code)=>0x11a8 <= code && code <= 0x11ff || 0xd7cb <= code && code <= 0xd7fb;\nconst $e1c6bbc8cb416f8c$var$isTone = (code)=>0x302e <= code && code <= 0x302f;\nconst $e1c6bbc8cb416f8c$var$isLVT = (code)=>$e1c6bbc8cb416f8c$var$HANGUL_BASE <= code && code <= $e1c6bbc8cb416f8c$var$HANGUL_END;\nconst $e1c6bbc8cb416f8c$var$isLV = (code)=>code - $e1c6bbc8cb416f8c$var$HANGUL_BASE < $e1c6bbc8cb416f8c$var$HANGUL_COUNT && (code - $e1c6bbc8cb416f8c$var$HANGUL_BASE) % $e1c6bbc8cb416f8c$var$T_COUNT === 0;\nconst $e1c6bbc8cb416f8c$var$isCombiningL = (code)=>$e1c6bbc8cb416f8c$var$L_BASE <= code && code <= $e1c6bbc8cb416f8c$var$L_END;\nconst $e1c6bbc8cb416f8c$var$isCombiningV = (code)=>$e1c6bbc8cb416f8c$var$V_BASE <= code && code <= $e1c6bbc8cb416f8c$var$V_END;\nconst $e1c6bbc8cb416f8c$var$isCombiningT = (code)=>$e1c6bbc8cb416f8c$var$T_BASE + 1 && 1 <= code && code <= $e1c6bbc8cb416f8c$var$T_END;\n// Character categories\nconst $e1c6bbc8cb416f8c$var$X = 0; // Other character\nconst $e1c6bbc8cb416f8c$var$L = 1; // Leading consonant\nconst $e1c6bbc8cb416f8c$var$V = 2; // Medial vowel\nconst $e1c6bbc8cb416f8c$var$T = 3; // Trailing consonant\nconst $e1c6bbc8cb416f8c$var$LV = 4; // Composed syllable\nconst $e1c6bbc8cb416f8c$var$LVT = 5; // Composed syllable\nconst $e1c6bbc8cb416f8c$var$M = 6; // Tone mark\n// This function classifies a character using the above categories.\nfunction $e1c6bbc8cb416f8c$var$getType(code) {\n if ($e1c6bbc8cb416f8c$var$isL(code)) return $e1c6bbc8cb416f8c$var$L;\n if ($e1c6bbc8cb416f8c$var$isV(code)) return $e1c6bbc8cb416f8c$var$V;\n if ($e1c6bbc8cb416f8c$var$isT(code)) return $e1c6bbc8cb416f8c$var$T;\n if ($e1c6bbc8cb416f8c$var$isLV(code)) return $e1c6bbc8cb416f8c$var$LV;\n if ($e1c6bbc8cb416f8c$var$isLVT(code)) return $e1c6bbc8cb416f8c$var$LVT;\n if ($e1c6bbc8cb416f8c$var$isTone(code)) return $e1c6bbc8cb416f8c$var$M;\n return $e1c6bbc8cb416f8c$var$X;\n}\n// State machine actions\nconst $e1c6bbc8cb416f8c$var$NO_ACTION = 0;\nconst $e1c6bbc8cb416f8c$var$DECOMPOSE = 1;\nconst $e1c6bbc8cb416f8c$var$COMPOSE = 2;\nconst $e1c6bbc8cb416f8c$var$TONE_MARK = 4;\nconst $e1c6bbc8cb416f8c$var$INVALID = 5;\n// Build a state machine that accepts valid syllables, and applies actions along the way.\n// The logic this is implementing is documented at the top of the file.\nconst $e1c6bbc8cb416f8c$var$STATE_TABLE = [\n // X L V T LV LVT M\n // State 0: start state\n [\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 1\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 2\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 3\n ],\n [\n $e1c6bbc8cb416f8c$var$INVALID,\n 0\n ]\n ],\n // State 1: \n [\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 1\n ],\n [\n $e1c6bbc8cb416f8c$var$COMPOSE,\n 2\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 2\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 3\n ],\n [\n $e1c6bbc8cb416f8c$var$INVALID,\n 0\n ]\n ],\n // State 2: or \n [\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 1\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$COMPOSE,\n 3\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 2\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 3\n ],\n [\n $e1c6bbc8cb416f8c$var$TONE_MARK,\n 0\n ]\n ],\n // State 3: or \n [\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 1\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$NO_ACTION,\n 0\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 2\n ],\n [\n $e1c6bbc8cb416f8c$var$DECOMPOSE,\n 3\n ],\n [\n $e1c6bbc8cb416f8c$var$TONE_MARK,\n 0\n ]\n ]\n];\nfunction $e1c6bbc8cb416f8c$var$getGlyph(font, code, features) {\n return new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(font, font.glyphForCodePoint(code).id, [\n code\n ], features);\n}\nfunction $e1c6bbc8cb416f8c$var$decompose(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyph.codePoints[0];\n let s = code - $e1c6bbc8cb416f8c$var$HANGUL_BASE;\n let t = $e1c6bbc8cb416f8c$var$T_BASE + s % $e1c6bbc8cb416f8c$var$T_COUNT;\n s = s / $e1c6bbc8cb416f8c$var$T_COUNT | 0;\n let l = $e1c6bbc8cb416f8c$var$L_BASE + s / $e1c6bbc8cb416f8c$var$V_COUNT | 0;\n let v = $e1c6bbc8cb416f8c$var$V_BASE + s % $e1c6bbc8cb416f8c$var$V_COUNT;\n // Don't decompose if all of the components are not available\n if (!font.hasGlyphForCodePoint(l) || !font.hasGlyphForCodePoint(v) || t !== $e1c6bbc8cb416f8c$var$T_BASE && !font.hasGlyphForCodePoint(t)) return i;\n // Replace the current glyph with decomposed L, V, and T glyphs,\n // and apply the proper OpenType features to each component.\n let ljmo = $e1c6bbc8cb416f8c$var$getGlyph(font, l, glyph.features);\n ljmo.features.ljmo = true;\n let vjmo = $e1c6bbc8cb416f8c$var$getGlyph(font, v, glyph.features);\n vjmo.features.vjmo = true;\n let insert = [\n ljmo,\n vjmo\n ];\n if (t > $e1c6bbc8cb416f8c$var$T_BASE) {\n let tjmo = $e1c6bbc8cb416f8c$var$getGlyph(font, t, glyph.features);\n tjmo.features.tjmo = true;\n insert.push(tjmo);\n }\n glyphs.splice(i, 1, ...insert);\n return i + insert.length - 1;\n}\nfunction $e1c6bbc8cb416f8c$var$compose(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyphs[i].codePoints[0];\n let type = $e1c6bbc8cb416f8c$var$getType(code);\n let prev = glyphs[i - 1].codePoints[0];\n let prevType = $e1c6bbc8cb416f8c$var$getType(prev);\n // Figure out what type of syllable we're dealing with\n let lv, ljmo, vjmo, tjmo;\n if (prevType === $e1c6bbc8cb416f8c$var$LV && type === $e1c6bbc8cb416f8c$var$T) {\n // \n lv = prev;\n tjmo = glyph;\n } else {\n if (type === $e1c6bbc8cb416f8c$var$V) {\n // \n ljmo = glyphs[i - 1];\n vjmo = glyph;\n } else {\n // \n ljmo = glyphs[i - 2];\n vjmo = glyphs[i - 1];\n tjmo = glyph;\n }\n let l = ljmo.codePoints[0];\n let v = vjmo.codePoints[0];\n // Make sure L and V are combining characters\n if ($e1c6bbc8cb416f8c$var$isCombiningL(l) && $e1c6bbc8cb416f8c$var$isCombiningV(v)) lv = $e1c6bbc8cb416f8c$var$HANGUL_BASE + ((l - $e1c6bbc8cb416f8c$var$L_BASE) * $e1c6bbc8cb416f8c$var$V_COUNT + (v - $e1c6bbc8cb416f8c$var$V_BASE)) * $e1c6bbc8cb416f8c$var$T_COUNT;\n }\n let t = tjmo && tjmo.codePoints[0] || $e1c6bbc8cb416f8c$var$T_BASE;\n if (lv != null && (t === $e1c6bbc8cb416f8c$var$T_BASE || $e1c6bbc8cb416f8c$var$isCombiningT(t))) {\n let s = lv + (t - $e1c6bbc8cb416f8c$var$T_BASE);\n // Replace with a composed glyph if supported by the font,\n // otherwise apply the proper OpenType features to each component.\n if (font.hasGlyphForCodePoint(s)) {\n let del = prevType === $e1c6bbc8cb416f8c$var$V ? 3 : 2;\n glyphs.splice(i - del + 1, del, $e1c6bbc8cb416f8c$var$getGlyph(font, s, glyph.features));\n return i - del + 1;\n }\n }\n // Didn't compose (either a non-combining component or unsupported by font).\n if (ljmo) ljmo.features.ljmo = true;\n if (vjmo) vjmo.features.vjmo = true;\n if (tjmo) tjmo.features.tjmo = true;\n if (prevType === $e1c6bbc8cb416f8c$var$LV) {\n // Sequence was originally , which got combined earlier.\n // Either the T was non-combining, or the LVT glyph wasn't supported.\n // Decompose the glyph again and apply OT features.\n $e1c6bbc8cb416f8c$var$decompose(glyphs, i - 1, font);\n return i + 1;\n }\n return i;\n}\nfunction $e1c6bbc8cb416f8c$var$getLength(code) {\n switch($e1c6bbc8cb416f8c$var$getType(code)){\n case $e1c6bbc8cb416f8c$var$LV:\n case $e1c6bbc8cb416f8c$var$LVT:\n return 1;\n case $e1c6bbc8cb416f8c$var$V:\n return 2;\n case $e1c6bbc8cb416f8c$var$T:\n return 3;\n }\n}\nfunction $e1c6bbc8cb416f8c$var$reorderToneMark(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyphs[i].codePoints[0];\n // Move tone mark to the beginning of the previous syllable, unless it is zero width\n if (font.glyphForCodePoint(code).advanceWidth === 0) return;\n let prev = glyphs[i - 1].codePoints[0];\n let len = $e1c6bbc8cb416f8c$var$getLength(prev);\n glyphs.splice(i, 1);\n return glyphs.splice(i - len, 0, glyph);\n}\nfunction $e1c6bbc8cb416f8c$var$insertDottedCircle(glyphs, i, font) {\n let glyph = glyphs[i];\n let code = glyphs[i].codePoints[0];\n if (font.hasGlyphForCodePoint($e1c6bbc8cb416f8c$var$DOTTED_CIRCLE)) {\n let dottedCircle = $e1c6bbc8cb416f8c$var$getGlyph(font, $e1c6bbc8cb416f8c$var$DOTTED_CIRCLE, glyph.features);\n // If the tone mark is zero width, insert the dotted circle before, otherwise after\n let idx = font.glyphForCodePoint(code).advanceWidth === 0 ? i : i + 1;\n glyphs.splice(idx, 0, dottedCircle);\n i++;\n }\n return i;\n}\n\n\n\n\n\n\n\n\n\nvar $4b0735ca6c692ea5$exports = {};\n$4b0735ca6c692ea5$exports = JSON.parse(\"{\\\"stateTable\\\":[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,14,15,16,17],[0,0,0,18,19,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,28,29,30,31,32,33,0,34,0,0,35,36,0,0,37,0],[0,0,0,38,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,39,0,0,0,40,41,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,12,43,0,0,0,0],[0,0,0,0,43,44,44,8,9,0,0,0,0,0,43,0,0,0,0],[0,0,0,45,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,50,0,0,51,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0],[0,0,0,53,54,55,56,57,58,0,59,0,0,60,61,0,0,62,0],[0,0,0,4,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,63,64,0,0,40,41,0,9,0,10,0,0,0,42,0,63,0,0],[0,2,3,4,5,6,7,8,9,0,10,11,11,12,13,0,2,16,0],[0,0,0,18,65,20,21,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,0,0],[0,0,0,69,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,73,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,75,0,0,0,76,77,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,25,79,0,0,0,0],[0,0,0,18,19,20,74,22,23,0,24,0,0,25,26,0,0,27,0],[0,0,0,81,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,86,0,0,87,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,88,0,0,0,0,0,0,0,0],[0,0,0,18,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,89,90,0,0,76,77,0,23,0,24,0,0,0,78,0,89,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,0,0],[0,0,0,94,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,96,0,0,0,97,98,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,35,100,0,0,0,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,102,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,107,0,0,108,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0],[0,0,0,28,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,110,111,0,0,97,98,0,33,0,34,0,0,0,99,0,110,0,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,0,0],[0,0,0,0,5,7,7,8,9,0,10,0,0,0,13,0,0,16,0],[0,0,0,115,116,117,118,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,42,0,0,0,0],[0,39,0,122,0,123,123,8,9,0,10,0,0,0,42,0,39,0,0],[0,124,64,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0],[0,39,0,0,0,121,125,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,126,126,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,46,47,48,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,47,47,49,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,128,127,127,49,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,129,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,50,0,0,0,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,134,0,0,0,0,0,0,0,0],[0,0,0,135,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,136,0,0,0,137,138,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,60,140,0,0,0,0],[0,0,0,0,140,141,141,57,58,0,0,0,0,0,140,0,0,0,0],[0,0,0,142,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,147,0,0,148,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0],[0,0,0,53,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,150,151,0,0,137,138,0,58,0,59,0,0,0,139,0,150,0,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,0,0],[0,0,0,155,116,156,157,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,0,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,75,3,4,5,159,160,8,161,0,162,0,11,12,163,0,75,16,0],[0,0,0,0,0,40,164,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,0,165,0,0,0,0],[0,124,64,0,0,40,164,0,9,0,10,0,0,0,42,0,124,0,0],[0,0,0,0,0,70,70,0,71,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,71,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,167,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,168,0,0,0,0,0,0,0,0],[0,0,0,0,19,74,74,22,23,0,24,0,0,0,26,0,0,27,0],[0,0,0,0,79,80,80,22,23,0,0,0,0,0,79,0,0,0,0],[0,0,0,169,170,171,172,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,75,0,176,0,177,177,22,23,0,24,0,0,0,78,0,75,0,0],[0,178,90,0,0,0,0,0,0,0,0,0,0,0,0,0,178,0,0],[0,75,0,0,0,175,179,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,180,180,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,82,83,84,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,83,83,85,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,182,181,181,85,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,183,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,86,0,0,0,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,188,0,0,0,0,0,0,0,0],[0,0,0,189,170,190,191,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,0,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,76,193,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,0,194,0,0,0,0],[0,178,90,0,0,76,193,0,23,0,24,0,0,0,78,0,178,0,0],[0,0,0,0,29,95,31,32,33,0,34,0,0,0,36,0,0,37,0],[0,0,0,0,100,101,101,32,33,0,0,0,0,0,100,0,0,0,0],[0,0,0,195,196,197,198,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,96,0,202,0,203,203,32,33,0,34,0,0,0,99,0,96,0,0],[0,204,111,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0],[0,96,0,0,0,201,205,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,206,206,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,103,104,105,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,104,104,106,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,208,207,207,106,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,209,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,107,0,0,0,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,214,0,0,0,0,0,0,0,0],[0,0,0,215,196,216,217,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,0,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,97,219,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,0,220,0,0,0,0],[0,204,111,0,0,97,219,0,33,0,34,0,0,0,99,0,204,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,223,0,0,0,40,224,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,119,225,0,0,0,0],[0,0,0,115,116,117,222,8,9,0,10,0,0,119,120,0,0,16,0],[0,0,0,115,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,226,64,0,0,40,224,0,9,0,10,0,0,0,42,0,226,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,39,0,0,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,44,44,8,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,227,0,228,229,0,9,0,10,0,0,230,0,0,0,0,0],[0,39,0,122,0,121,121,0,9,0,10,0,0,0,42,0,39,0,0],[0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,231,231,49,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,232,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,130,131,132,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,131,131,133,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,234,233,233,133,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,235,236,237,238,239,9,0,10,0,0,0,42,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,54,56,56,57,58,0,59,0,0,0,61,0,0,62,0],[0,0,0,240,241,242,243,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,136,0,247,0,248,248,57,58,0,59,0,0,0,139,0,136,0,0],[0,249,151,0,0,0,0,0,0,0,0,0,0,0,0,0,249,0,0],[0,136,0,0,0,246,250,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,251,251,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,143,144,145,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,144,144,146,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,253,252,252,146,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,254,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,147,0,0,0,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0],[0,0,0,260,241,261,262,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,0,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,137,264,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,0,265,0,0,0,0],[0,249,151,0,0,137,264,0,58,0,59,0,0,0,139,0,249,0,0],[0,0,0,221,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,158,225,0,0,0,0],[0,0,0,155,116,156,222,8,9,0,10,0,0,158,120,0,0,16,0],[0,0,0,155,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,43,266,266,8,161,0,24,0,0,12,267,0,0,0,0],[0,75,0,176,43,268,268,269,161,0,24,0,0,0,267,0,75,0,0],[0,0,0,0,0,270,0,0,271,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,272,0,0,0,0,0,0,0,0],[0,273,274,0,0,40,41,0,9,0,10,0,0,0,42,0,273,0,0],[0,0,0,40,0,123,123,8,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,121,275,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,166,0,0,0,0,72,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,276,0,0,0,0,0,0,0,0],[0,0,0,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,279,0,0,0,76,280,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,173,281,0,0,0,0],[0,0,0,169,170,171,278,22,23,0,24,0,0,173,174,0,0,27,0],[0,0,0,169,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,282,90,0,0,76,280,0,23,0,24,0,0,0,78,0,282,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,75,0,0,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,80,80,22,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,283,0,284,285,0,23,0,24,0,0,286,0,0,0,0,0],[0,75,0,176,0,175,175,0,23,0,24,0,0,0,78,0,75,0,0],[0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,287,287,85,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,288,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,184,185,186,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,185,185,187,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,290,289,289,187,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,291,292,293,294,295,23,0,24,0,0,0,78,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,277,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,192,281,0,0,0,0],[0,0,0,189,170,190,278,22,23,0,24,0,0,192,174,0,0,27,0],[0,0,0,189,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,76,0,177,177,22,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,175,296,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,299,0,0,0,97,300,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,199,301,0,0,0,0],[0,0,0,195,196,197,298,32,33,0,34,0,0,199,200,0,0,37,0],[0,0,0,195,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,302,111,0,0,97,300,0,33,0,34,0,0,0,99,0,302,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,96,0,0,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,101,101,32,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,303,0,304,305,0,33,0,34,0,0,306,0,0,0,0,0],[0,96,0,202,0,201,201,0,33,0,34,0,0,0,99,0,96,0,0],[0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,307,307,106,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,210,211,212,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,211,211,213,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,310,309,309,213,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,311,312,313,314,315,33,0,34,0,0,0,99,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,297,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,218,301,0,0,0,0],[0,0,0,215,196,216,298,32,33,0,34,0,0,218,200,0,0,37,0],[0,0,0,215,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,97,0,203,203,32,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,201,316,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,116,222,222,8,9,0,10,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,9,0,0,0,0,0,225,0,0,0,0],[0,0,0,317,318,319,320,8,9,0,10,0,0,321,322,0,0,16,0],[0,223,0,323,0,123,123,8,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,0,0,121,324,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,325,318,326,327,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,64,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,9,0,0,0,0,230,0,0,0,0,0],[0,0,0,227,0,228,121,0,9,0,10,0,0,230,0,0,0,0,0],[0,0,0,227,0,121,121,0,9,0,10,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,49,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,46,0,0],[0,0,0,0,0,329,329,133,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,330,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,236,237,238,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,237,237,239,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,0,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,332,331,331,239,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,333,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,337,0,0,0,137,338,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,244,339,0,0,0,0],[0,0,0,240,241,242,336,57,58,0,59,0,0,244,245,0,0,62,0],[0,0,0,240,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,340,151,0,0,137,338,0,58,0,59,0,0,0,139,0,340,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,136,0,0,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,141,141,57,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,341,0,342,343,0,58,0,59,0,0,344,0,0,0,0,0],[0,136,0,247,0,246,246,0,58,0,59,0,0,0,139,0,136,0,0],[0,0,0,0,0,0,0,57,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,345,345,146,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,346,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,255,256,257,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,256,256,258,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,348,347,347,258,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,349,350,351,352,353,58,0,59,0,0,0,139,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,335,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,263,339,0,0,0,0],[0,0,0,260,241,261,336,57,58,0,59,0,0,263,245,0,0,62,0],[0,0,0,260,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,137,0,248,248,57,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,246,354,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,126,126,8,23,0,0,0,0,0,0,0,0,0,0],[0,355,90,0,0,121,125,0,9,0,10,0,0,0,42,0,355,0,0],[0,0,0,0,0,356,356,269,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,357,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,270,0,0,0,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0],[0,0,0,364,116,365,366,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,40,0,121,121,0,9,0,10,0,0,0,42,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,170,278,278,22,23,0,24,0,0,0,174,0,0,27,0],[0,0,0,0,281,80,80,22,23,0,0,0,0,0,281,0,0,0,0],[0,0,0,369,370,371,372,22,23,0,24,0,0,373,374,0,0,27,0],[0,279,0,375,0,177,177,22,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,0,0,175,376,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,377,370,378,379,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,90,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,23,0,0,0,0,286,0,0,0,0,0],[0,0,0,283,0,284,175,0,23,0,24,0,0,286,0,0,0,0,0],[0,0,0,283,0,175,175,0,23,0,24,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,85,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,82,0,0],[0,0,0,0,0,381,381,187,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,382,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,292,293,294,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,293,293,295,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,0,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,384,383,383,295,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,385,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,76,0,175,175,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,196,298,298,32,33,0,34,0,0,0,200,0,0,37,0],[0,0,0,0,301,101,101,32,33,0,0,0,0,0,301,0,0,0,0],[0,0,0,387,388,389,390,32,33,0,34,0,0,391,392,0,0,37,0],[0,299,0,393,0,203,203,32,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,0,0,201,394,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,395,388,396,397,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,111,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,33,0,0,0,0,306,0,0,0,0,0],[0,0,0,303,0,304,201,0,33,0,34,0,0,306,0,0,0,0,0],[0,0,0,303,0,201,201,0,33,0,34,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,106,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,103,0,0],[0,0,0,0,0,399,399,213,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,312,313,314,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,313,313,315,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,0,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,402,401,401,315,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,403,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,97,0,201,201,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,407,0,0,0,40,408,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,321,409,0,0,0,0],[0,0,0,317,318,319,406,8,9,0,10,0,0,321,322,0,0,16,0],[0,0,0,317,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,410,64,0,0,40,408,0,9,0,10,0,0,0,42,0,410,0,0],[0,223,0,0,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,223,0,323,0,121,121,0,9,0,10,0,0,0,42,0,223,0,0],[0,0,0,405,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,328,409,0,0,0,0],[0,0,0,325,318,326,406,8,9,0,10,0,0,328,322,0,0,16,0],[0,0,0,325,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,0,0,0,133,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,130,0,0],[0,0,0,0,0,411,411,239,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,412,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,40,121,334,0,9,0,10,0,0,0,42,0,0,0,0],[0,0,0,0,413,0,0,0,9,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,241,336,336,57,58,0,59,0,0,0,245,0,0,62,0],[0,0,0,0,339,141,141,57,58,0,0,0,0,0,339,0,0,0,0],[0,0,0,414,415,416,417,57,58,0,59,0,0,418,419,0,0,62,0],[0,337,0,420,0,248,248,57,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,0,0,246,421,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,422,415,423,424,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,151,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,58,0,0,0,0,344,0,0,0,0,0],[0,0,0,341,0,342,246,0,58,0,59,0,0,344,0,0,0,0,0],[0,0,0,341,0,246,246,0,58,0,59,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,146,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,143,0,0],[0,0,0,0,0,426,426,258,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,427,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,350,351,352,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,351,351,353,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,0,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,429,428,428,353,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,430,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,137,0,246,246,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,432,116,433,434,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,0,0,180,180,269,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,358,359,360,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,359,359,361,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,437,436,436,361,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,438,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,443,274,0,0,0,0,0,0,0,0,0,0,0,0,0,443,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,367,225,0,0,0,0],[0,0,0,364,116,365,445,8,161,0,162,0,0,367,120,0,0,16,0],[0,0,0,364,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,448,0,0,0,76,449,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,373,450,0,0,0,0],[0,0,0,369,370,371,447,22,23,0,24,0,0,373,374,0,0,27,0],[0,0,0,369,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,451,90,0,0,76,449,0,23,0,24,0,0,0,78,0,451,0,0],[0,279,0,0,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,279,0,375,0,175,175,0,23,0,24,0,0,0,78,0,279,0,0],[0,0,0,446,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,380,450,0,0,0,0],[0,0,0,377,370,378,447,22,23,0,24,0,0,380,374,0,0,27,0],[0,0,0,377,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,0,0,0,187,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,184,0,0],[0,0,0,0,0,452,452,295,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,453,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,76,175,386,0,23,0,24,0,0,0,78,0,0,0,0],[0,0,0,0,454,0,0,0,23,0,0,0,0,0,0,0,0,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,457,0,0,0,97,458,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,391,459,0,0,0,0],[0,0,0,387,388,389,456,32,33,0,34,0,0,391,392,0,0,37,0],[0,0,0,387,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,460,111,0,0,97,458,0,33,0,34,0,0,0,99,0,460,0,0],[0,299,0,0,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,299,0,393,0,201,201,0,33,0,34,0,0,0,99,0,299,0,0],[0,0,0,455,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,398,459,0,0,0,0],[0,0,0,395,388,396,456,32,33,0,34,0,0,398,392,0,0,37,0],[0,0,0,395,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,0,0,0,213,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,210,0,0],[0,0,0,0,0,461,461,315,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,462,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,97,201,404,0,33,0,34,0,0,0,99,0,0,0,0],[0,0,0,0,463,0,0,0,33,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,318,406,406,8,9,0,10,0,0,0,322,0,0,16,0],[0,0,0,0,409,44,44,8,9,0,0,0,0,0,409,0,0,0,0],[0,0,0,464,465,466,467,8,9,0,10,0,0,468,469,0,0,16,0],[0,407,0,470,0,123,123,8,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,0,0,121,471,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,472,465,473,474,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,0,0,0,0,239,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,236,0,0],[0,0,0,0,0,0,476,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,479,0,0,0,137,480,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,418,481,0,0,0,0],[0,0,0,414,415,416,478,57,58,0,59,0,0,418,419,0,0,62,0],[0,0,0,414,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,482,151,0,0,137,480,0,58,0,59,0,0,0,139,0,482,0,0],[0,337,0,0,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,337,0,420,0,246,246,0,58,0,59,0,0,0,139,0,337,0,0],[0,0,0,477,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,425,481,0,0,0,0],[0,0,0,422,415,423,478,57,58,0,59,0,0,425,419,0,0,62,0],[0,0,0,422,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,0,0,0,258,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,255,0,0],[0,0,0,0,0,483,483,353,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,137,246,431,0,58,0,59,0,0,0,139,0,0,0,0],[0,0,0,0,485,0,0,0,58,0,0,0,0,0,0,0,0,0,0],[0,0,0,444,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,435,225,0,0,0,0],[0,0,0,432,116,433,445,8,161,0,162,0,0,435,120,0,0,16,0],[0,0,0,432,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,0,486,486,361,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,487,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,439,440,441,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,440,440,442,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,489,488,488,442,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,490,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,495,0,496,497,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,0,116,445,445,8,161,0,162,0,0,0,120,0,0,16,0],[0,0,0,0,225,44,44,8,161,0,0,0,0,0,225,0,0,0,0],[0,0,0,0,370,447,447,22,23,0,24,0,0,0,374,0,0,27,0],[0,0,0,0,450,80,80,22,23,0,0,0,0,0,450,0,0,0,0],[0,0,0,499,500,501,502,22,23,0,24,0,0,503,504,0,0,27,0],[0,448,0,505,0,177,177,22,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,0,0,175,506,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,507,500,508,509,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,0,0,0,0,295,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,292,0,0],[0,0,0,0,0,0,511,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,388,456,456,32,33,0,34,0,0,0,392,0,0,37,0],[0,0,0,0,459,101,101,32,33,0,0,0,0,0,459,0,0,0,0],[0,0,0,512,513,514,515,32,33,0,34,0,0,516,517,0,0,37,0],[0,457,0,518,0,203,203,32,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,0,0,201,519,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,520,513,521,522,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,0,0,0,0,315,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,312,0,0],[0,0,0,0,0,0,524,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,527,0,0,0,40,528,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,468,529,0,0,0,0],[0,0,0,464,465,466,526,8,9,0,10,0,0,468,469,0,0,16,0],[0,0,0,464,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,530,64,0,0,40,528,0,9,0,10,0,0,0,42,0,530,0,0],[0,407,0,0,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,407,0,470,0,121,121,0,9,0,10,0,0,0,42,0,407,0,0],[0,0,0,525,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,475,529,0,0,0,0],[0,0,0,472,465,473,526,8,9,0,10,0,0,475,469,0,0,16,0],[0,0,0,472,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0],[0,0,0,0,415,478,478,57,58,0,59,0,0,0,419,0,0,62,0],[0,0,0,0,481,141,141,57,58,0,0,0,0,0,481,0,0,0,0],[0,0,0,531,532,533,534,57,58,0,59,0,0,535,536,0,0,62,0],[0,479,0,537,0,248,248,57,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,0,0,246,538,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,539,532,540,541,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,0,0,0,0,353,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,350,0,0],[0,0,0,0,0,0,543,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,361,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,358,0,0],[0,0,0,0,0,544,544,442,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,545,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,491,492,493,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,492,492,494,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,547,546,546,494,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,548,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,274,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,161,0,0,0,0,498,0,0,0,0,0],[0,0,0,495,0,496,368,0,161,0,162,0,0,498,0,0,0,0,0],[0,0,0,495,0,368,368,0,161,0,162,0,0,0,0,0,0,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,553,0,0,0,76,554,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,503,555,0,0,0,0],[0,0,0,499,500,501,552,22,23,0,24,0,0,503,504,0,0,27,0],[0,0,0,499,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,556,90,0,0,76,554,0,23,0,24,0,0,0,78,0,556,0,0],[0,448,0,0,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,448,0,505,0,175,175,0,23,0,24,0,0,0,78,0,448,0,0],[0,0,0,551,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,510,555,0,0,0,0],[0,0,0,507,500,508,552,22,23,0,24,0,0,510,504,0,0,27,0],[0,0,0,507,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,559,0,0,0,97,560,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,516,561,0,0,0,0],[0,0,0,512,513,514,558,32,33,0,34,0,0,516,517,0,0,37,0],[0,0,0,512,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,562,111,0,0,97,560,0,33,0,34,0,0,0,99,0,562,0,0],[0,457,0,0,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,457,0,518,0,201,201,0,33,0,34,0,0,0,99,0,457,0,0],[0,0,0,557,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,523,561,0,0,0,0],[0,0,0,520,513,521,558,32,33,0,34,0,0,523,517,0,0,37,0],[0,0,0,520,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,0,0],[0,0,0,0,465,526,526,8,9,0,10,0,0,0,469,0,0,16,0],[0,0,0,0,529,44,44,8,9,0,0,0,0,0,529,0,0,0,0],[0,0,0,563,66,564,565,8,9,0,10,0,0,566,68,0,0,16,0],[0,527,0,567,0,123,123,8,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,0,0,121,568,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,569,66,570,571,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,575,0,0,0,137,576,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,535,577,0,0,0,0],[0,0,0,531,532,533,574,57,58,0,59,0,0,535,536,0,0,62,0],[0,0,0,531,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,578,151,0,0,137,576,0,58,0,59,0,0,0,139,0,578,0,0],[0,479,0,0,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,479,0,537,0,246,246,0,58,0,59,0,0,0,139,0,479,0,0],[0,0,0,573,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,542,577,0,0,0,0],[0,0,0,539,532,540,574,57,58,0,59,0,0,542,536,0,0,62,0],[0,0,0,539,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0],[0,0,0,0,0,0,0,442,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,439,0,0],[0,0,0,0,0,579,579,494,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,580,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,549,368,550,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,0,368,368,0,161,0,162,0,0,0,362,0,0,0,0],[0,0,0,0,581,0,0,0,161,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,500,552,552,22,23,0,24,0,0,0,504,0,0,27,0],[0,0,0,0,555,80,80,22,23,0,0,0,0,0,555,0,0,0,0],[0,0,0,582,91,583,584,22,23,0,24,0,0,585,93,0,0,27,0],[0,553,0,586,0,177,177,22,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,0,0,175,587,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,588,91,589,590,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,0,513,558,558,32,33,0,34,0,0,0,517,0,0,37,0],[0,0,0,0,561,101,101,32,33,0,0,0,0,0,561,0,0,0,0],[0,0,0,592,112,593,594,32,33,0,34,0,0,595,114,0,0,37,0],[0,559,0,596,0,203,203,32,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,0,0,201,597,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,598,112,599,600,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,566,165,0,0,0,0],[0,0,0,563,66,564,67,8,9,0,10,0,0,566,68,0,0,16,0],[0,0,0,563,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,527,0,0,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,527,0,567,0,121,121,0,9,0,10,0,0,0,42,0,527,0,0],[0,0,0,602,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,165,44,44,8,9,0,0,0,0,572,165,0,0,0,0],[0,0,0,569,66,570,67,8,9,0,10,0,0,572,68,0,0,16,0],[0,0,0,569,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,0,532,574,574,57,58,0,59,0,0,0,536,0,0,62,0],[0,0,0,0,577,141,141,57,58,0,0,0,0,0,577,0,0,0,0],[0,0,0,603,152,604,605,57,58,0,59,0,0,606,154,0,0,62,0],[0,575,0,607,0,248,248,57,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,0,0,246,608,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,609,152,610,611,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,0,0,0,0,494,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,491,0,0],[0,0,0,0,0,0,613,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,585,194,0,0,0,0],[0,0,0,582,91,583,92,22,23,0,24,0,0,585,93,0,0,27,0],[0,0,0,582,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,553,0,0,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,553,0,586,0,175,175,0,23,0,24,0,0,0,78,0,553,0,0],[0,0,0,614,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,194,80,80,22,23,0,0,0,0,591,194,0,0,0,0],[0,0,0,588,91,589,92,22,23,0,24,0,0,591,93,0,0,27,0],[0,0,0,588,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,595,220,0,0,0,0],[0,0,0,592,112,593,113,32,33,0,34,0,0,595,114,0,0,37,0],[0,0,0,592,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,559,0,0,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,559,0,596,0,201,201,0,33,0,34,0,0,0,99,0,559,0,0],[0,0,0,615,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,220,101,101,32,33,0,0,0,0,601,220,0,0,0,0],[0,0,0,598,112,599,113,32,33,0,34,0,0,601,114,0,0,37,0],[0,0,0,598,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,66,67,67,8,9,0,10,0,0,0,68,0,0,16,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,606,265,0,0,0,0],[0,0,0,603,152,604,153,57,58,0,59,0,0,606,154,0,0,62,0],[0,0,0,603,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,575,0,0,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,575,0,607,0,246,246,0,58,0,59,0,0,0,139,0,575,0,0],[0,0,0,616,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,265,141,141,57,58,0,0,0,0,612,265,0,0,0,0],[0,0,0,609,152,610,153,57,58,0,59,0,0,612,154,0,0,62,0],[0,0,0,609,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,549,0,0],[0,0,0,0,91,92,92,22,23,0,24,0,0,0,93,0,0,27,0],[0,0,0,0,112,113,113,32,33,0,34,0,0,0,114,0,0,37,0],[0,0,0,0,152,153,153,57,58,0,59,0,0,0,154,0,0,62,0]],\\\"accepting\\\":[false,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,false,false,true,true,true,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,true,true,true,false,true,false,true,true,false,false,true,true,true,true,true,true,true,false,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,true,false,true,false,true,true,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,false,true,false,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,false,true,true,true,true,true,false,true,true,false,false,false,false,true,true,false,false,true,true,true,false,true,true,false,false,true,false,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,false,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,true,false,true,false,true,true,false,false,true,true,false,false,true,true,true,false,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,false,false,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,false,false,false,false,false,false,false,true,true,false,false,true,true,false,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,true,true,false,true,true,true,true,true,true,false,true,true,false,true,false,true,true,true,true,true,true,false,true,true,true,true,true,true,false,true,true,false,false,false,false,false,true,true,false,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,false,false,false,true,false,true,true,true,true,true,false,true,true,true,false,true,true,true,true,true,false,true,true,true,true,false,true,true,true,true,true,false,true,true,false,true,true,true],\\\"tags\\\":[[],[\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\"],[\\\"broken_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"symbol_cluster\\\"],[],[\\\"symbol_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[\\\"broken_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[],[],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[],[],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[],[],[\\\"broken_cluster\\\"],[],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[],[],[],[\\\"consonant_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[],[],[],[\\\"vowel_syllable\\\"],[],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[],[],[\\\"standalone_cluster\\\"],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[],[],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[],[],[],[],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[],[],[],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[\\\"consonant_syllable\\\",\\\"broken_cluster\\\"],[],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[],[],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[],[\\\"consonant_syllable\\\"],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[],[\\\"vowel_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"broken_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"standalone_cluster\\\"],[\\\"standalone_cluster\\\"],[],[\\\"consonant_syllable\\\"],[\\\"vowel_syllable\\\"],[\\\"standalone_cluster\\\"]]}\");\n\n\nvar $aa333a9607471296$exports = {};\n$aa333a9607471296$exports = JSON.parse(\"{\\\"categories\\\":[\\\"O\\\",\\\"IND\\\",\\\"S\\\",\\\"GB\\\",\\\"B\\\",\\\"FM\\\",\\\"CGJ\\\",\\\"VMAbv\\\",\\\"VMPst\\\",\\\"VAbv\\\",\\\"VPst\\\",\\\"CMBlw\\\",\\\"VPre\\\",\\\"VBlw\\\",\\\"H\\\",\\\"VMBlw\\\",\\\"CMAbv\\\",\\\"MBlw\\\",\\\"CS\\\",\\\"R\\\",\\\"SUB\\\",\\\"MPst\\\",\\\"MPre\\\",\\\"FAbv\\\",\\\"FPst\\\",\\\"FBlw\\\",\\\"null\\\",\\\"SMAbv\\\",\\\"SMBlw\\\",\\\"VMPre\\\",\\\"ZWNJ\\\",\\\"ZWJ\\\",\\\"WJ\\\",\\\"M\\\",\\\"VS\\\",\\\"N\\\",\\\"HN\\\",\\\"MAbv\\\"],\\\"decompositions\\\":{\\\"2507\\\":[2503,2494],\\\"2508\\\":[2503,2519],\\\"2888\\\":[2887,2902],\\\"2891\\\":[2887,2878],\\\"2892\\\":[2887,2903],\\\"3018\\\":[3014,3006],\\\"3019\\\":[3015,3006],\\\"3020\\\":[3014,3031],\\\"3144\\\":[3142,3158],\\\"3264\\\":[3263,3285],\\\"3271\\\":[3270,3285],\\\"3272\\\":[3270,3286],\\\"3274\\\":[3270,3266],\\\"3275\\\":[3270,3266,3285],\\\"3402\\\":[3398,3390],\\\"3403\\\":[3399,3390],\\\"3404\\\":[3398,3415],\\\"3546\\\":[3545,3530],\\\"3548\\\":[3545,3535],\\\"3549\\\":[3545,3535,3530],\\\"3550\\\":[3545,3551],\\\"3635\\\":[3661,3634],\\\"3763\\\":[3789,3762],\\\"3955\\\":[3953,3954],\\\"3957\\\":[3953,3956],\\\"3958\\\":[4018,3968],\\\"3959\\\":[4018,3953,3968],\\\"3960\\\":[4019,3968],\\\"3961\\\":[4019,3953,3968],\\\"3969\\\":[3953,3968],\\\"6971\\\":[6970,6965],\\\"6973\\\":[6972,6965],\\\"6976\\\":[6974,6965],\\\"6977\\\":[6975,6965],\\\"6979\\\":[6978,6965],\\\"69934\\\":[69937,69927],\\\"69935\\\":[69938,69927],\\\"70475\\\":[70471,70462],\\\"70476\\\":[70471,70487],\\\"70843\\\":[70841,70842],\\\"70844\\\":[70841,70832],\\\"70846\\\":[70841,70845],\\\"71098\\\":[71096,71087],\\\"71099\\\":[71097,71087]},\\\"stateTable\\\":[[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],[2,2,3,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,17,18,11,19,20,21,22,0,0,0,23,0,0,2,0,0,24,0,25],[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,26,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,27,28,0,0,0,0,0,27,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,39,0,0,47],[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,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,9,0,0,12,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,0,18,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,5,0,0,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,0,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,0],[0,0,0,4,4,5,0,6,7,8,9,10,11,12,13,14,15,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,49,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,22,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,0,0,0,0,0,0,14,0,0,0,0,0,0,0,20,21,22,0,0,0,23,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,50,0,51,0],[0,0,0,0,0,5,0,6,7,8,9,0,11,12,0,14,0,16,0,0,0,11,0,20,21,22,0,0,0,23,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,27,28,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,28,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,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,33,0,0,36,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,41,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,29,0,0,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,34,35,36,37,38,39,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,0,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,53,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,45,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,0,0,0,0,0,0,38,0,0,0,0,0,0,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,29,0,30,31,32,33,0,35,36,0,38,0,40,0,0,0,35,0,43,44,45,0,0,0,46,0,0,0,0,0,0,0,0],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,0,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[0,0,0,0,0,5,0,6,7,8,9,48,11,12,13,14,48,16,0,0,18,11,19,20,21,22,0,0,0,23,0,0,0,0,0,0,0,25],[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,51,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,54,0,0],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,0,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[0,0,0,0,0,29,0,30,31,32,33,52,35,36,37,38,52,40,0,0,41,35,42,43,44,45,0,0,0,46,0,0,0,0,0,0,0,47],[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,50,0,51,0]],\\\"accepting\\\":[false,true,true,true,true,true,true,true,true,true,true,true,true,false,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],\\\"tags\\\":[[],[\\\"broken_cluster\\\"],[\\\"independent_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"numeral_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"independent_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"symbol_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"virama_terminated_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"broken_cluster\\\"],[\\\"numeral_cluster\\\"],[\\\"number_joiner_terminated_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"standard_cluster\\\"],[\\\"numeral_cluster\\\"]]}\");\n\n\n// Cateories used in the OpenType spec:\n// https://www.microsoft.com/typography/otfntdev/devanot/shaping.aspx\nconst $90a9d3398ee54fe5$export$a513ea61a7bee91c = {\n X: 1,\n C: 2,\n V: 4,\n N: 8,\n H: 16,\n ZWNJ: 32,\n ZWJ: 64,\n M: 128,\n SM: 256,\n VD: 512,\n A: 1024,\n Placeholder: 2048,\n Dotted_Circle: 4096,\n RS: 8192,\n Coeng: 16384,\n Repha: 32768,\n Ra: 65536,\n CM: 131072,\n Symbol: 262144 // Avagraha, etc that take marks (SM,A,VD).\n};\nconst $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0 = {\n Start: 1,\n Ra_To_Become_Reph: 2,\n Pre_M: 4,\n Pre_C: 8,\n Base_C: 16,\n After_Main: 32,\n Above_C: 64,\n Before_Sub: 128,\n Below_C: 256,\n After_Sub: 512,\n Before_Post: 1024,\n Post_C: 2048,\n After_Post: 4096,\n Final_C: 8192,\n SMVD: 16384,\n End: 32768\n};\nconst $90a9d3398ee54fe5$export$8519deaa7de2b07 = $90a9d3398ee54fe5$export$a513ea61a7bee91c.C | $90a9d3398ee54fe5$export$a513ea61a7bee91c.Ra | $90a9d3398ee54fe5$export$a513ea61a7bee91c.CM | $90a9d3398ee54fe5$export$a513ea61a7bee91c.V | $90a9d3398ee54fe5$export$a513ea61a7bee91c.Placeholder | $90a9d3398ee54fe5$export$a513ea61a7bee91c.Dotted_Circle;\nconst $90a9d3398ee54fe5$export$bbcd928767338e0d = $90a9d3398ee54fe5$export$a513ea61a7bee91c.ZWJ | $90a9d3398ee54fe5$export$a513ea61a7bee91c.ZWNJ;\nconst $90a9d3398ee54fe5$export$ca9599b2a300afc = $90a9d3398ee54fe5$export$a513ea61a7bee91c.H | $90a9d3398ee54fe5$export$a513ea61a7bee91c.Coeng;\nconst $90a9d3398ee54fe5$export$e99d119da76a0fc5 = {\n Default: {\n hasOldSpec: false,\n virama: 0,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.Before_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Devanagari: {\n hasOldSpec: true,\n virama: 0x094D,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.Before_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Bengali: {\n hasOldSpec: true,\n virama: 0x09CD,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.After_Sub,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Gurmukhi: {\n hasOldSpec: true,\n virama: 0x0A4D,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.Before_Sub,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Gujarati: {\n hasOldSpec: true,\n virama: 0x0ACD,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.Before_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Oriya: {\n hasOldSpec: true,\n virama: 0x0B4D,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.After_Main,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Tamil: {\n hasOldSpec: true,\n virama: 0x0BCD,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.After_Post,\n rephMode: 'Implicit',\n blwfMode: 'Pre_And_Post'\n },\n Telugu: {\n hasOldSpec: true,\n virama: 0x0C4D,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.After_Post,\n rephMode: 'Explicit',\n blwfMode: 'Post_Only'\n },\n Kannada: {\n hasOldSpec: true,\n virama: 0x0CCD,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.After_Post,\n rephMode: 'Implicit',\n blwfMode: 'Post_Only'\n },\n Malayalam: {\n hasOldSpec: true,\n virama: 0x0D4D,\n basePos: 'Last',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.After_Main,\n rephMode: 'Log_Repha',\n blwfMode: 'Pre_And_Post'\n },\n // Handled by UniversalShaper\n // Sinhala: {\n // hasOldSpec: false,\n // virama: 0x0DCA,\n // basePos: 'Last_Sinhala',\n // rephPos: POSITIONS.After_Main,\n // rephMode: 'Explicit',\n // blwfMode: 'Pre_And_Post'\n // },\n Khmer: {\n hasOldSpec: false,\n virama: 0x17D2,\n basePos: 'First',\n rephPos: $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0.Ra_To_Become_Reph,\n rephMode: 'Vis_Repha',\n blwfMode: 'Pre_And_Post'\n }\n};\nconst $90a9d3398ee54fe5$export$f647c9cfdd77d95a = {\n // Khmer\n 0x17BE: [\n 0x17C1,\n 0x17BE\n ],\n 0x17BF: [\n 0x17C1,\n 0x17BF\n ],\n 0x17C0: [\n 0x17C1,\n 0x17C0\n ],\n 0x17C4: [\n 0x17C1,\n 0x17C4\n ],\n 0x17C5: [\n 0x17C1,\n 0x17C5\n ]\n};\n\n\n\nconst { decompositions: $7826f90f6f0cecc9$var$decompositions } = (0, (/*@__PURE__*/$parcel$interopDefault($aa333a9607471296$exports)));\nconst $7826f90f6f0cecc9$var$trie = new (0, $6uUbQ$unicodetrie)((0, $12727730ddfc8bfe$export$94fdf11bafc8de6b)(\"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\"));\nconst $7826f90f6f0cecc9$var$stateMachine = new (0, $6uUbQ$dfa)((0, (/*@__PURE__*/$parcel$interopDefault($4b0735ca6c692ea5$exports))));\nclass $7826f90f6f0cecc9$export$2e2bcd8739ae039 extends (0, $649970d87335b30f$export$2e2bcd8739ae039) {\n static planFeatures(plan) {\n plan.addStage($7826f90f6f0cecc9$var$setupSyllables);\n plan.addStage([\n 'locl',\n 'ccmp'\n ]);\n plan.addStage($7826f90f6f0cecc9$var$initialReordering);\n plan.addStage('nukt');\n plan.addStage('akhn');\n plan.addStage('rphf', false);\n plan.addStage('rkrf');\n plan.addStage('pref', false);\n plan.addStage('blwf', false);\n plan.addStage('abvf', false);\n plan.addStage('half', false);\n plan.addStage('pstf', false);\n plan.addStage('vatu');\n plan.addStage('cjct');\n plan.addStage('cfar', false);\n plan.addStage($7826f90f6f0cecc9$var$finalReordering);\n plan.addStage({\n local: [\n 'init'\n ],\n global: [\n 'pres',\n 'abvs',\n 'blws',\n 'psts',\n 'haln',\n 'dist',\n 'abvm',\n 'blwm',\n 'calt',\n 'clig'\n ]\n });\n // Setup the indic config for the selected script\n plan.unicodeScript = $130d1a642ebcd2b7$export$ce50e82f12a827a4(plan.script);\n plan.indicConfig = (0, $90a9d3398ee54fe5$export$e99d119da76a0fc5)[plan.unicodeScript] || (0, $90a9d3398ee54fe5$export$e99d119da76a0fc5).Default;\n plan.isOldSpec = plan.indicConfig.hasOldSpec && plan.script[plan.script.length - 1] !== '2';\n // TODO: turn off kern (Khmer) and liga features.\n }\n static assignFeatures(plan, glyphs) {\n // Decompose split matras\n // TODO: do this in a more general unicode normalizer\n for(let i = glyphs.length - 1; i >= 0; i--){\n let codepoint = glyphs[i].codePoints[0];\n let d = (0, $90a9d3398ee54fe5$export$f647c9cfdd77d95a)[codepoint] || $7826f90f6f0cecc9$var$decompositions[codepoint];\n if (d) {\n let decomposed = d.map((c)=>{\n let g = plan.font.glyphForCodePoint(c);\n return new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(plan.font, g.id, [\n c\n ], glyphs[i].features);\n });\n glyphs.splice(i, 1, ...decomposed);\n }\n }\n }\n}\n(0, $6uUbQ$_)($7826f90f6f0cecc9$export$2e2bcd8739ae039, \"zeroMarkWidths\", 'NONE');\nfunction $7826f90f6f0cecc9$var$indicCategory(glyph) {\n return $7826f90f6f0cecc9$var$trie.get(glyph.codePoints[0]) >> 8;\n}\nfunction $7826f90f6f0cecc9$var$indicPosition(glyph) {\n return 1 << ($7826f90f6f0cecc9$var$trie.get(glyph.codePoints[0]) & 0xff);\n}\nclass $7826f90f6f0cecc9$var$IndicInfo {\n constructor(category, position, syllableType, syllable){\n this.category = category;\n this.position = position;\n this.syllableType = syllableType;\n this.syllable = syllable;\n }\n}\nfunction $7826f90f6f0cecc9$var$setupSyllables(font, glyphs) {\n let syllable = 0;\n let last = 0;\n for (let [start, end, tags] of $7826f90f6f0cecc9$var$stateMachine.match(glyphs.map($7826f90f6f0cecc9$var$indicCategory))){\n if (start > last) {\n ++syllable;\n for(let i = last; i < start; i++)glyphs[i].shaperInfo = new $7826f90f6f0cecc9$var$IndicInfo((0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).X, (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).End, 'non_indic_cluster', syllable);\n }\n ++syllable;\n // Create shaper info\n for(let i = start; i <= end; i++)glyphs[i].shaperInfo = new $7826f90f6f0cecc9$var$IndicInfo(1 << $7826f90f6f0cecc9$var$indicCategory(glyphs[i]), $7826f90f6f0cecc9$var$indicPosition(glyphs[i]), tags[0], syllable);\n last = end + 1;\n }\n if (last < glyphs.length) {\n ++syllable;\n for(let i = last; i < glyphs.length; i++)glyphs[i].shaperInfo = new $7826f90f6f0cecc9$var$IndicInfo((0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).X, (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).End, 'non_indic_cluster', syllable);\n }\n}\nfunction $7826f90f6f0cecc9$var$isConsonant(glyph) {\n return glyph.shaperInfo.category & (0, $90a9d3398ee54fe5$export$8519deaa7de2b07);\n}\nfunction $7826f90f6f0cecc9$var$isJoiner(glyph) {\n return glyph.shaperInfo.category & (0, $90a9d3398ee54fe5$export$bbcd928767338e0d);\n}\nfunction $7826f90f6f0cecc9$var$isHalantOrCoeng(glyph) {\n return glyph.shaperInfo.category & (0, $90a9d3398ee54fe5$export$ca9599b2a300afc);\n}\nfunction $7826f90f6f0cecc9$var$wouldSubstitute(glyphs, feature) {\n for (let glyph of glyphs)glyph.features = {\n [feature]: true\n };\n let GSUB = glyphs[0]._font._layoutEngine.engine.GSUBProcessor;\n GSUB.applyFeatures([\n feature\n ], glyphs);\n return glyphs.length === 1;\n}\nfunction $7826f90f6f0cecc9$var$consonantPosition(font, consonant, virama) {\n let glyphs = [\n virama,\n consonant,\n virama\n ];\n if ($7826f90f6f0cecc9$var$wouldSubstitute(glyphs.slice(0, 2), 'blwf') || $7826f90f6f0cecc9$var$wouldSubstitute(glyphs.slice(1, 3), 'blwf')) return (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Below_C;\n else if ($7826f90f6f0cecc9$var$wouldSubstitute(glyphs.slice(0, 2), 'pstf') || $7826f90f6f0cecc9$var$wouldSubstitute(glyphs.slice(1, 3), 'pstf')) return (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Post_C;\n else if ($7826f90f6f0cecc9$var$wouldSubstitute(glyphs.slice(0, 2), 'pref') || $7826f90f6f0cecc9$var$wouldSubstitute(glyphs.slice(1, 3), 'pref')) return (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Post_C;\n return (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Base_C;\n}\nfunction $7826f90f6f0cecc9$var$initialReordering(font, glyphs, plan) {\n let indicConfig = plan.indicConfig;\n let features = font._layoutEngine.engine.GSUBProcessor.features;\n let dottedCircle = font.glyphForCodePoint(0x25cc).id;\n let virama = font.glyphForCodePoint(indicConfig.virama).id;\n if (virama) {\n let info = new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(font, virama, [\n indicConfig.virama\n ]);\n for(let i = 0; i < glyphs.length; i++)if (glyphs[i].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Base_C) glyphs[i].shaperInfo.position = $7826f90f6f0cecc9$var$consonantPosition(font, glyphs[i].copy(), info);\n }\n for(let start = 0, end = $7826f90f6f0cecc9$var$nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = $7826f90f6f0cecc9$var$nextSyllable(glyphs, start)){\n let { category: category, syllableType: syllableType } = glyphs[start].shaperInfo;\n if (syllableType === 'symbol_cluster' || syllableType === 'non_indic_cluster') continue;\n if (syllableType === 'broken_cluster' && dottedCircle) {\n let g = new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(font, dottedCircle, [\n 0x25cc\n ]);\n g.shaperInfo = new $7826f90f6f0cecc9$var$IndicInfo(1 << $7826f90f6f0cecc9$var$indicCategory(g), $7826f90f6f0cecc9$var$indicPosition(g), glyphs[start].shaperInfo.syllableType, glyphs[start].shaperInfo.syllable);\n // Insert after possible Repha.\n let i = start;\n while(i < end && glyphs[i].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).Repha)i++;\n glyphs.splice(i++, 0, g);\n end++;\n }\n // 1. Find base consonant:\n //\n // The shaping engine finds the base consonant of the syllable, using the\n // following algorithm: starting from the end of the syllable, move backwards\n // until a consonant is found that does not have a below-base or post-base\n // form (post-base forms have to follow below-base forms), or that is not a\n // pre-base reordering Ra, or arrive at the first consonant. The consonant\n // stopped at will be the base.\n let base = end;\n let limit = start;\n let hasReph = false;\n // If the syllable starts with Ra + Halant (in a script that has Reph)\n // and has more than one consonant, Ra is excluded from candidates for\n // base consonants.\n if (indicConfig.rephPos !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Ra_To_Become_Reph && features.rphf && start + 3 <= end && (indicConfig.rephMode === 'Implicit' && !$7826f90f6f0cecc9$var$isJoiner(glyphs[start + 2]) || indicConfig.rephMode === 'Explicit' && glyphs[start + 2].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).ZWJ)) {\n // See if it matches the 'rphf' feature.\n let g = [\n glyphs[start].copy(),\n glyphs[start + 1].copy(),\n glyphs[start + 2].copy()\n ];\n if ($7826f90f6f0cecc9$var$wouldSubstitute(g.slice(0, 2), 'rphf') || indicConfig.rephMode === 'Explicit' && $7826f90f6f0cecc9$var$wouldSubstitute(g, 'rphf')) {\n limit += 2;\n while(limit < end && $7826f90f6f0cecc9$var$isJoiner(glyphs[limit]))limit++;\n base = start;\n hasReph = true;\n }\n } else if (indicConfig.rephMode === 'Log_Repha' && glyphs[start].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).Repha) {\n limit++;\n while(limit < end && $7826f90f6f0cecc9$var$isJoiner(glyphs[limit]))limit++;\n base = start;\n hasReph = true;\n }\n switch(indicConfig.basePos){\n case 'Last':\n {\n // starting from the end of the syllable, move backwards\n let i = end;\n let seenBelow = false;\n do {\n let info = glyphs[--i].shaperInfo;\n // until a consonant is found\n if ($7826f90f6f0cecc9$var$isConsonant(glyphs[i])) {\n // that does not have a below-base or post-base form\n // (post-base forms have to follow below-base forms),\n if (info.position !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Below_C && (info.position !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Post_C || seenBelow)) {\n base = i;\n break;\n }\n // or that is not a pre-base reordering Ra,\n //\n // IMPLEMENTATION NOTES:\n //\n // Our pre-base reordering Ra's are marked POS_POST_C, so will be skipped\n // by the logic above already.\n //\n // or arrive at the first consonant. The consonant stopped at will\n // be the base.\n if (info.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Below_C) seenBelow = true;\n base = i;\n } else if (start < i && info.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).ZWJ && glyphs[i - 1].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).H) break;\n }while (i > limit);\n break;\n }\n case 'First':\n // The first consonant is always the base.\n base = start;\n // Mark all subsequent consonants as below.\n for(let i = base + 1; i < end; i++)if ($7826f90f6f0cecc9$var$isConsonant(glyphs[i])) glyphs[i].shaperInfo.position = (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Below_C;\n }\n // If the syllable starts with Ra + Halant (in a script that has Reph)\n // and has more than one consonant, Ra is excluded from candidates for\n // base consonants.\n //\n // Only do this for unforced Reph. (ie. not for Ra,H,ZWJ)\n if (hasReph && base === start && limit - base <= 2) hasReph = false;\n // 2. Decompose and reorder Matras:\n //\n // Each matra and any syllable modifier sign in the cluster are moved to the\n // appropriate position relative to the consonant(s) in the cluster. The\n // shaping engine decomposes two- or three-part matras into their constituent\n // parts before any repositioning. Matra characters are classified by which\n // consonant in a conjunct they have affinity for and are reordered to the\n // following positions:\n //\n // o Before first half form in the syllable\n // o After subjoined consonants\n // o After post-form consonant\n // o After main consonant (for above marks)\n //\n // IMPLEMENTATION NOTES:\n //\n // The normalize() routine has already decomposed matras for us, so we don't\n // need to worry about that.\n // 3. Reorder marks to canonical order:\n //\n // Adjacent nukta and halant or nukta and vedic sign are always repositioned\n // if necessary, so that the nukta is first.\n //\n // IMPLEMENTATION NOTES:\n //\n // We don't need to do this: the normalize() routine already did this for us.\n // Reorder characters\n for(let i = start; i < base; i++){\n let info = glyphs[i].shaperInfo;\n info.position = Math.min((0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Pre_C, info.position);\n }\n if (base < end) glyphs[base].shaperInfo.position = (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Base_C;\n // Mark final consonants. A final consonant is one appearing after a matra,\n // like in Khmer.\n for(let i = base + 1; i < end; i++)if (glyphs[i].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).M) {\n for(let j = i + 1; j < end; j++)if ($7826f90f6f0cecc9$var$isConsonant(glyphs[j])) {\n glyphs[j].shaperInfo.position = (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Final_C;\n break;\n }\n break;\n }\n // Handle beginning Ra\n if (hasReph) glyphs[start].shaperInfo.position = (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Ra_To_Become_Reph;\n // For old-style Indic script tags, move the first post-base Halant after\n // last consonant.\n //\n // Reports suggest that in some scripts Uniscribe does this only if there\n // is *not* a Halant after last consonant already (eg. Kannada), while it\n // does it unconditionally in other scripts (eg. Malayalam). We don't\n // currently know about other scripts, so we single out Malayalam for now.\n //\n // Kannada test case:\n // U+0C9A,U+0CCD,U+0C9A,U+0CCD\n // With some versions of Lohit Kannada.\n // https://bugs.freedesktop.org/show_bug.cgi?id=59118\n //\n // Malayalam test case:\n // U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D\n // With lohit-ttf-20121122/Lohit-Malayalam.ttf\n if (plan.isOldSpec) {\n let disallowDoubleHalants = plan.unicodeScript !== 'Malayalam';\n for(let i = base + 1; i < end; i++)if (glyphs[i].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).H) {\n let j;\n for(j = end - 1; j > i; j--){\n if ($7826f90f6f0cecc9$var$isConsonant(glyphs[j]) || disallowDoubleHalants && glyphs[j].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).H) break;\n }\n if (glyphs[j].shaperInfo.category !== (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).H && j > i) {\n // Move Halant to after last consonant.\n let t = glyphs[i];\n glyphs.splice(i, 0, ...glyphs.splice(i + 1, j - i));\n glyphs[j] = t;\n }\n break;\n }\n }\n // Attach misc marks to previous char to move with them.\n let lastPos = (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Start;\n for(let i = start; i < end; i++){\n let info = glyphs[i].shaperInfo;\n if (info.category & ((0, $90a9d3398ee54fe5$export$bbcd928767338e0d) | (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).N | (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).RS | (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).CM | (0, $90a9d3398ee54fe5$export$ca9599b2a300afc) & info.category)) {\n info.position = lastPos;\n if (info.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).H && info.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Pre_M) {\n // Uniscribe doesn't move the Halant with Left Matra.\n // TEST: U+092B,U+093F,U+094DE\n // We follow. This is important for the Sinhala\n // U+0DDA split matra since it decomposes to U+0DD9,U+0DCA\n // where U+0DD9 is a left matra and U+0DCA is the virama.\n // We don't want to move the virama with the left matra.\n // TEST: U+0D9A,U+0DDA\n for(let j = i; j > start; j--)if (glyphs[j - 1].shaperInfo.position !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Pre_M) {\n info.position = glyphs[j - 1].shaperInfo.position;\n break;\n }\n }\n } else if (info.position !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).SMVD) lastPos = info.position;\n }\n // For post-base consonants let them own anything before them\n // since the last consonant or matra.\n let last = base;\n for(let i = base + 1; i < end; i++){\n if ($7826f90f6f0cecc9$var$isConsonant(glyphs[i])) {\n for(let j = last + 1; j < i; j++)if (glyphs[j].shaperInfo.position < (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).SMVD) glyphs[j].shaperInfo.position = glyphs[i].shaperInfo.position;\n last = i;\n } else if (glyphs[i].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).M) last = i;\n }\n let arr = glyphs.slice(start, end);\n arr.sort((a, b)=>a.shaperInfo.position - b.shaperInfo.position);\n glyphs.splice(start, arr.length, ...arr);\n // Find base again\n for(let i = start; i < end; i++)if (glyphs[i].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Base_C) {\n base = i;\n break;\n }\n // Setup features now\n // Reph\n for(let i = start; i < end && glyphs[i].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Ra_To_Become_Reph; i++)glyphs[i].features.rphf = true;\n // Pre-base\n let blwf = !plan.isOldSpec && indicConfig.blwfMode === 'Pre_And_Post';\n for(let i = start; i < base; i++){\n glyphs[i].features.half = true;\n if (blwf) glyphs[i].features.blwf = true;\n }\n // Post-base\n for(let i = base + 1; i < end; i++){\n glyphs[i].features.abvf = true;\n glyphs[i].features.pstf = true;\n glyphs[i].features.blwf = true;\n }\n if (plan.isOldSpec && plan.unicodeScript === 'Devanagari') {\n // Old-spec eye-lash Ra needs special handling. From the\n // spec:\n //\n // \"The feature 'below-base form' is applied to consonants\n // having below-base forms and following the base consonant.\n // The exception is vattu, which may appear below half forms\n // as well as below the base glyph. The feature 'below-base\n // form' will be applied to all such occurrences of Ra as well.\"\n //\n // Test case: U+0924,U+094D,U+0930,U+094d,U+0915\n // with Sanskrit 2003 font.\n //\n // However, note that Ra,Halant,ZWJ is the correct way to\n // request eyelash form of Ra, so we wouldbn't inhibit it\n // in that sequence.\n //\n // Test case: U+0924,U+094D,U+0930,U+094d,U+200D,U+0915\n for(let i = start; i + 1 < base; i++)if (glyphs[i].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).Ra && glyphs[i + 1].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).H && (i + 1 === base || glyphs[i + 2].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).ZWJ)) {\n glyphs[i].features.blwf = true;\n glyphs[i + 1].features.blwf = true;\n }\n }\n let prefLen = 2;\n if (features.pref && base + prefLen < end) // Find a Halant,Ra sequence and mark it for pre-base reordering processing.\n for(let i = base + 1; i + prefLen - 1 < end; i++){\n let g = [\n glyphs[i].copy(),\n glyphs[i + 1].copy()\n ];\n if ($7826f90f6f0cecc9$var$wouldSubstitute(g, 'pref')) {\n for(let j = 0; j < prefLen; j++)glyphs[i++].features.pref = true;\n // Mark the subsequent stuff with 'cfar'. Used in Khmer.\n // Read the feature spec.\n // This allows distinguishing the following cases with MS Khmer fonts:\n // U+1784,U+17D2,U+179A,U+17D2,U+1782\n // U+1784,U+17D2,U+1782,U+17D2,U+179A\n if (features.cfar) for(; i < end; i++)glyphs[i].features.cfar = true;\n break;\n }\n }\n // Apply ZWJ/ZWNJ effects\n for(let i = start + 1; i < end; i++)if ($7826f90f6f0cecc9$var$isJoiner(glyphs[i])) {\n let nonJoiner = glyphs[i].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).ZWNJ;\n let j = i;\n do {\n j--;\n // ZWJ/ZWNJ should disable CJCT. They do that by simply\n // being there, since we don't skip them for the CJCT\n // feature (ie. F_MANUAL_ZWJ)\n // A ZWNJ disables HALF.\n if (nonJoiner) delete glyphs[j].features.half;\n }while (j > start && !$7826f90f6f0cecc9$var$isConsonant(glyphs[j]));\n }\n }\n}\nfunction $7826f90f6f0cecc9$var$finalReordering(font, glyphs, plan) {\n let indicConfig = plan.indicConfig;\n let features = font._layoutEngine.engine.GSUBProcessor.features;\n for(let start = 0, end = $7826f90f6f0cecc9$var$nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = $7826f90f6f0cecc9$var$nextSyllable(glyphs, start)){\n // 4. Final reordering:\n //\n // After the localized forms and basic shaping forms GSUB features have been\n // applied (see below), the shaping engine performs some final glyph\n // reordering before applying all the remaining font features to the entire\n // cluster.\n let tryPref = !!features.pref;\n // Find base again\n let base = start;\n for(; base < end; base++)if (glyphs[base].shaperInfo.position >= (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Base_C) {\n if (tryPref && base + 1 < end) {\n for(let i = base + 1; i < end; i++)if (glyphs[i].features.pref) {\n if (!(glyphs[i].substituted && glyphs[i].isLigated && !glyphs[i].isMultiplied)) {\n // Ok, this was a 'pref' candidate but didn't form any.\n // Base is around here...\n base = i;\n while(base < end && $7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[base]))base++;\n glyphs[base].shaperInfo.position = (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).BASE_C;\n tryPref = false;\n }\n break;\n }\n }\n // For Malayalam, skip over unformed below- (but NOT post-) forms.\n if (plan.unicodeScript === 'Malayalam') for(let i = base + 1; i < end; i++){\n while(i < end && $7826f90f6f0cecc9$var$isJoiner(glyphs[i]))i++;\n if (i === end || !$7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[i])) break;\n i++; // Skip halant.\n while(i < end && $7826f90f6f0cecc9$var$isJoiner(glyphs[i]))i++;\n if (i < end && $7826f90f6f0cecc9$var$isConsonant(glyphs[i]) && glyphs[i].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Below_C) {\n base = i;\n glyphs[base].shaperInfo.position = (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Base_C;\n }\n }\n if (start < base && glyphs[base].shaperInfo.position > (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Base_C) base--;\n break;\n }\n if (base === end && start < base && glyphs[base - 1].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).ZWJ) base--;\n if (base < end) while(start < base && glyphs[base].shaperInfo.category & ((0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).N | (0, $90a9d3398ee54fe5$export$ca9599b2a300afc)))base--;\n // o Reorder matras:\n //\n // If a pre-base matra character had been reordered before applying basic\n // features, the glyph can be moved closer to the main consonant based on\n // whether half-forms had been formed. Actual position for the matra is\n // defined as “after last standalone halant glyph, after initial matra\n // position and before the main consonant”. If ZWJ or ZWNJ follow this\n // halant, position is moved after it.\n //\n if (start + 1 < end && start < base) {\n // If we lost track of base, alas, position before last thingy.\n let newPos = base === end ? base - 2 : base - 1;\n // Malayalam / Tamil do not have \"half\" forms or explicit virama forms.\n // The glyphs formed by 'half' are Chillus or ligated explicit viramas.\n // We want to position matra after them.\n if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {\n while(newPos > start && !(glyphs[newPos].shaperInfo.category & ((0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).M | (0, $90a9d3398ee54fe5$export$ca9599b2a300afc))))newPos--;\n // If we found no Halant we are done.\n // Otherwise only proceed if the Halant does\n // not belong to the Matra itself!\n if ($7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[newPos]) && glyphs[newPos].shaperInfo.position !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Pre_M) // If ZWJ or ZWNJ follow this halant, position is moved after it.\n {\n if (newPos + 1 < end && $7826f90f6f0cecc9$var$isJoiner(glyphs[newPos + 1])) newPos++;\n } else newPos = start; // No move.\n }\n if (start < newPos && glyphs[newPos].shaperInfo.position !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Pre_M) {\n // Now go see if there's actually any matras...\n for(let i = newPos; i > start; i--)if (glyphs[i - 1].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Pre_M) {\n let oldPos = i - 1;\n if (oldPos < base && base <= newPos) base--;\n let tmp = glyphs[oldPos];\n glyphs.splice(oldPos, 0, ...glyphs.splice(oldPos + 1, newPos - oldPos));\n glyphs[newPos] = tmp;\n newPos--;\n }\n }\n }\n // o Reorder reph:\n //\n // Reph’s original position is always at the beginning of the syllable,\n // (i.e. it is not reordered at the character reordering stage). However,\n // it will be reordered according to the basic-forms shaping results.\n // Possible positions for reph, depending on the script, are; after main,\n // before post-base consonant forms, and after post-base consonant forms.\n // Two cases:\n //\n // - If repha is encoded as a sequence of characters (Ra,H or Ra,H,ZWJ), then\n // we should only move it if the sequence ligated to the repha form.\n //\n // - If repha is encoded separately and in the logical position, we should only\n // move it if it did NOT ligate. If it ligated, it's probably the font trying\n // to make it work without the reordering.\n if (start + 1 < end && glyphs[start].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Ra_To_Become_Reph && glyphs[start].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).Repha !== (glyphs[start].isLigated && !glyphs[start].isMultiplied)) {\n let newRephPos;\n let rephPos = indicConfig.rephPos;\n let found = false;\n // 1. If reph should be positioned after post-base consonant forms,\n // proceed to step 5.\n if (rephPos !== (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).After_Post) {\n // 2. If the reph repositioning class is not after post-base: target\n // position is after the first explicit halant glyph between the\n // first post-reph consonant and last main consonant. If ZWJ or ZWNJ\n // are following this halant, position is moved after it. If such\n // position is found, this is the target position. Otherwise,\n // proceed to the next step.\n //\n // Note: in old-implementation fonts, where classifications were\n // fixed in shaping engine, there was no case where reph position\n // will be found on this step.\n newRephPos = start + 1;\n while(newRephPos < base && !$7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[newRephPos]))newRephPos++;\n if (newRephPos < base && $7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[newRephPos])) {\n // ->If ZWJ or ZWNJ are following this halant, position is moved after it.\n if (newRephPos + 1 < base && $7826f90f6f0cecc9$var$isJoiner(glyphs[newRephPos + 1])) newRephPos++;\n found = true;\n }\n // 3. If reph should be repositioned after the main consonant: find the\n // first consonant not ligated with main, or find the first\n // consonant that is not a potential pre-base reordering Ra.\n if (!found && rephPos === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).After_Main) {\n newRephPos = base;\n while(newRephPos + 1 < end && glyphs[newRephPos + 1].shaperInfo.position <= (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).After_Main)newRephPos++;\n found = newRephPos < end;\n }\n // 4. If reph should be positioned before post-base consonant, find\n // first post-base classified consonant not ligated with main. If no\n // consonant is found, the target position should be before the\n // first matra, syllable modifier sign or vedic sign.\n //\n // This is our take on what step 4 is trying to say (and failing, BADLY).\n if (!found && rephPos === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).After_Sub) {\n newRephPos = base;\n while(newRephPos + 1 < end && !(glyphs[newRephPos + 1].shaperInfo.position & ((0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Post_C | (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).After_Post | (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).SMVD)))newRephPos++;\n found = newRephPos < end;\n }\n }\n // 5. If no consonant is found in steps 3 or 4, move reph to a position\n // immediately before the first post-base matra, syllable modifier\n // sign or vedic sign that has a reordering class after the intended\n // reph position. For example, if the reordering position for reph\n // is post-main, it will skip above-base matras that also have a\n // post-main position.\n if (!found) {\n // Copied from step 2.\n newRephPos = start + 1;\n while(newRephPos < base && !$7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[newRephPos]))newRephPos++;\n if (newRephPos < base && $7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[newRephPos])) {\n // ->If ZWJ or ZWNJ are following this halant, position is moved after it.\n if (newRephPos + 1 < base && $7826f90f6f0cecc9$var$isJoiner(glyphs[newRephPos + 1])) newRephPos++;\n found = true;\n }\n }\n // 6. Otherwise, reorder reph to the end of the syllable.\n if (!found) {\n newRephPos = end - 1;\n while(newRephPos > start && glyphs[newRephPos].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).SMVD)newRephPos--;\n // If the Reph is to be ending up after a Matra,Halant sequence,\n // position it before that Halant so it can interact with the Matra.\n // However, if it's a plain Consonant,Halant we shouldn't do that.\n // Uniscribe doesn't do this.\n // TEST: U+0930,U+094D,U+0915,U+094B,U+094D\n if ($7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[newRephPos])) {\n for(let i = base + 1; i < newRephPos; i++)if (glyphs[i].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).M) newRephPos--;\n }\n }\n let reph = glyphs[start];\n glyphs.splice(start, 0, ...glyphs.splice(start + 1, newRephPos - start));\n glyphs[newRephPos] = reph;\n if (start < base && base <= newRephPos) base--;\n }\n // o Reorder pre-base reordering consonants:\n //\n // If a pre-base reordering consonant is found, reorder it according to\n // the following rules:\n if (tryPref && base + 1 < end) {\n for(let i = base + 1; i < end; i++)if (glyphs[i].features.pref) {\n // 1. Only reorder a glyph produced by substitution during application\n // of the feature. (Note that a font may shape a Ra consonant with\n // the feature generally but block it in certain contexts.)\n // Note: We just check that something got substituted. We don't check that\n // the feature actually did it...\n //\n // Reorder pref only if it ligated.\n if (glyphs[i].isLigated && !glyphs[i].isMultiplied) {\n // 2. Try to find a target position the same way as for pre-base matra.\n // If it is found, reorder pre-base consonant glyph.\n //\n // 3. If position is not found, reorder immediately before main\n // consonant.\n let newPos = base;\n // Malayalam / Tamil do not have \"half\" forms or explicit virama forms.\n // The glyphs formed by 'half' are Chillus or ligated explicit viramas.\n // We want to position matra after them.\n if (plan.unicodeScript !== 'Malayalam' && plan.unicodeScript !== 'Tamil') {\n while(newPos > start && !(glyphs[newPos - 1].shaperInfo.category & ((0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).M | (0, $90a9d3398ee54fe5$export$ca9599b2a300afc))))newPos--;\n // In Khmer coeng model, a H,Ra can go *after* matras. If it goes after a\n // split matra, it should be reordered to *before* the left part of such matra.\n if (newPos > start && glyphs[newPos - 1].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).M) {\n let oldPos = i;\n for(let j = base + 1; j < oldPos; j++)if (glyphs[j].shaperInfo.category === (0, $90a9d3398ee54fe5$export$a513ea61a7bee91c).M) {\n newPos--;\n break;\n }\n }\n }\n if (newPos > start && $7826f90f6f0cecc9$var$isHalantOrCoeng(glyphs[newPos - 1])) // -> If ZWJ or ZWNJ follow this halant, position is moved after it.\n {\n if (newPos < end && $7826f90f6f0cecc9$var$isJoiner(glyphs[newPos])) newPos++;\n }\n let oldPos = i;\n let tmp = glyphs[oldPos];\n glyphs.splice(newPos + 1, 0, ...glyphs.splice(newPos, oldPos - newPos));\n glyphs[newPos] = tmp;\n if (newPos <= base && base < oldPos) base++;\n }\n break;\n }\n }\n // Apply 'init' to the Left Matra if it's a word start.\n if (glyphs[start].shaperInfo.position === (0, $90a9d3398ee54fe5$export$1a1f61c9c4dd9df0).Pre_M && (!start || !/Cf|Mn/.test((0, $6uUbQ$getCategory)(glyphs[start - 1].codePoints[0])))) glyphs[start].features.init = true;\n }\n}\nfunction $7826f90f6f0cecc9$var$nextSyllable(glyphs, start) {\n if (start >= glyphs.length) return start;\n let syllable = glyphs[start].shaperInfo.syllable;\n while(++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable);\n return start;\n}\n\n\n\n\n\n\n\n\n\nconst { categories: $7ab494fe977143c6$var$categories, decompositions: $7ab494fe977143c6$var$decompositions } = (0, (/*@__PURE__*/$parcel$interopDefault($aa333a9607471296$exports)));\nconst $7ab494fe977143c6$var$trie = new (0, $6uUbQ$unicodetrie)((0, $12727730ddfc8bfe$export$94fdf11bafc8de6b)(\"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\"));\nconst $7ab494fe977143c6$var$stateMachine = new (0, $6uUbQ$dfa)((0, (/*@__PURE__*/$parcel$interopDefault($aa333a9607471296$exports))));\nclass $7ab494fe977143c6$export$2e2bcd8739ae039 extends (0, $649970d87335b30f$export$2e2bcd8739ae039) {\n static planFeatures(plan) {\n plan.addStage($7ab494fe977143c6$var$setupSyllables);\n // Default glyph pre-processing group\n plan.addStage([\n 'locl',\n 'ccmp',\n 'nukt',\n 'akhn'\n ]);\n // Reordering group\n plan.addStage($7ab494fe977143c6$var$clearSubstitutionFlags);\n plan.addStage([\n 'rphf'\n ], false);\n plan.addStage($7ab494fe977143c6$var$recordRphf);\n plan.addStage($7ab494fe977143c6$var$clearSubstitutionFlags);\n plan.addStage([\n 'pref'\n ]);\n plan.addStage($7ab494fe977143c6$var$recordPref);\n // Orthographic unit shaping group\n plan.addStage([\n 'rkrf',\n 'abvf',\n 'blwf',\n 'half',\n 'pstf',\n 'vatu',\n 'cjct'\n ]);\n plan.addStage($7ab494fe977143c6$var$reorder);\n // Topographical features\n // Scripts that need this are handled by the Arabic shaper, not implemented here for now.\n // plan.addStage(['isol', 'init', 'medi', 'fina', 'med2', 'fin2', 'fin3'], false);\n // Standard topographic presentation and positional feature application\n plan.addStage([\n 'abvs',\n 'blws',\n 'pres',\n 'psts',\n 'dist',\n 'abvm',\n 'blwm'\n ]);\n }\n static assignFeatures(plan, glyphs) {\n // Decompose split vowels\n // TODO: do this in a more general unicode normalizer\n for(let i = glyphs.length - 1; i >= 0; i--){\n let codepoint = glyphs[i].codePoints[0];\n if ($7ab494fe977143c6$var$decompositions[codepoint]) {\n let decomposed = $7ab494fe977143c6$var$decompositions[codepoint].map((c)=>{\n let g = plan.font.glyphForCodePoint(c);\n return new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(plan.font, g.id, [\n c\n ], glyphs[i].features);\n });\n glyphs.splice(i, 1, ...decomposed);\n }\n }\n }\n}\n(0, $6uUbQ$_)($7ab494fe977143c6$export$2e2bcd8739ae039, \"zeroMarkWidths\", 'BEFORE_GPOS');\nfunction $7ab494fe977143c6$var$useCategory(glyph) {\n return $7ab494fe977143c6$var$trie.get(glyph.codePoints[0]);\n}\nclass $7ab494fe977143c6$var$USEInfo {\n constructor(category, syllableType, syllable){\n this.category = category;\n this.syllableType = syllableType;\n this.syllable = syllable;\n }\n}\nfunction $7ab494fe977143c6$var$setupSyllables(font, glyphs) {\n let syllable = 0;\n for (let [start, end, tags] of $7ab494fe977143c6$var$stateMachine.match(glyphs.map($7ab494fe977143c6$var$useCategory))){\n ++syllable;\n // Create shaper info\n for(let i = start; i <= end; i++)glyphs[i].shaperInfo = new $7ab494fe977143c6$var$USEInfo($7ab494fe977143c6$var$categories[$7ab494fe977143c6$var$useCategory(glyphs[i])], tags[0], syllable);\n // Assign rphf feature\n let limit = glyphs[start].shaperInfo.category === 'R' ? 1 : Math.min(3, end - start);\n for(let i = start; i < start + limit; i++)glyphs[i].features.rphf = true;\n }\n}\nfunction $7ab494fe977143c6$var$clearSubstitutionFlags(font, glyphs) {\n for (let glyph of glyphs)glyph.substituted = false;\n}\nfunction $7ab494fe977143c6$var$recordRphf(font, glyphs) {\n for (let glyph of glyphs)if (glyph.substituted && glyph.features.rphf) // Mark a substituted repha.\n glyph.shaperInfo.category = 'R';\n}\nfunction $7ab494fe977143c6$var$recordPref(font, glyphs) {\n for (let glyph of glyphs)if (glyph.substituted) // Mark a substituted pref as VPre, as they behave the same way.\n glyph.shaperInfo.category = 'VPre';\n}\nfunction $7ab494fe977143c6$var$reorder(font, glyphs) {\n let dottedCircle = font.glyphForCodePoint(0x25cc).id;\n for(let start = 0, end = $7ab494fe977143c6$var$nextSyllable(glyphs, 0); start < glyphs.length; start = end, end = $7ab494fe977143c6$var$nextSyllable(glyphs, start)){\n let i, j;\n let info = glyphs[start].shaperInfo;\n let type = info.syllableType;\n // Only a few syllable types need reordering.\n if (type !== 'virama_terminated_cluster' && type !== 'standard_cluster' && type !== 'broken_cluster') continue;\n // Insert a dotted circle glyph in broken clusters.\n if (type === 'broken_cluster' && dottedCircle) {\n let g = new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(font, dottedCircle, [\n 0x25cc\n ]);\n g.shaperInfo = info;\n // Insert after possible Repha.\n for(i = start; i < end && glyphs[i].shaperInfo.category === 'R'; i++);\n glyphs.splice(++i, 0, g);\n end++;\n }\n // Move things forward.\n if (info.category === 'R' && end - start > 1) // Got a repha. Reorder it to after first base, before first halant.\n for(i = start + 1; i < end; i++){\n info = glyphs[i].shaperInfo;\n if ($7ab494fe977143c6$var$isBase(info) || $7ab494fe977143c6$var$isHalant(glyphs[i])) {\n // If we hit a halant, move before it; otherwise it's a base: move to it's\n // place, and shift things in between backward.\n if ($7ab494fe977143c6$var$isHalant(glyphs[i])) i--;\n glyphs.splice(start, 0, ...glyphs.splice(start + 1, i - start), glyphs[i]);\n break;\n }\n }\n // Move things back.\n for(i = start, j = end; i < end; i++){\n info = glyphs[i].shaperInfo;\n if ($7ab494fe977143c6$var$isBase(info) || $7ab494fe977143c6$var$isHalant(glyphs[i])) // If we hit a halant, move after it; otherwise it's a base: move to it's\n // place, and shift things in between backward.\n j = $7ab494fe977143c6$var$isHalant(glyphs[i]) ? i + 1 : i;\n else if ((info.category === 'VPre' || info.category === 'VMPre') && j < i) glyphs.splice(j, 1, glyphs[i], ...glyphs.splice(j, i - j));\n }\n }\n}\nfunction $7ab494fe977143c6$var$nextSyllable(glyphs, start) {\n if (start >= glyphs.length) return start;\n let syllable = glyphs[start].shaperInfo.syllable;\n while(++start < glyphs.length && glyphs[start].shaperInfo.syllable === syllable);\n return start;\n}\nfunction $7ab494fe977143c6$var$isHalant(glyph) {\n return glyph.shaperInfo.category === 'H' && !glyph.isLigated;\n}\nfunction $7ab494fe977143c6$var$isBase(info) {\n return info.category === 'B' || info.category === 'GB';\n}\n\n\nconst $102b6fe50f1d50b4$var$SHAPERS = {\n arab: (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n mong: (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n syrc: (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n 'nko ': (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n phag: (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n mand: (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n mani: (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n phlp: (0, $764eb544bbe1ccf0$export$2e2bcd8739ae039),\n hang: (0, $e1c6bbc8cb416f8c$export$2e2bcd8739ae039),\n bng2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n beng: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n dev2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n deva: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n gjr2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n gujr: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n guru: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n gur2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n knda: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n knd2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n mlm2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n mlym: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n ory2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n orya: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n taml: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n tml2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n telu: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n tel2: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n khmr: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n bali: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n batk: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n brah: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n bugi: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n buhd: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n cakm: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n cham: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n dupl: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n egyp: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n gran: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n hano: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n java: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n kthi: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n kali: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n khar: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n khoj: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n sind: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n lepc: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n limb: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n mahj: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n // mand: UniversalShaper, // Mandaic\n // mani: UniversalShaper, // Manichaean\n mtei: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n modi: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n // mong: UniversalShaper, // Mongolian\n // 'nko ': UniversalShaper, // N’Ko\n hmng: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n // phag: UniversalShaper, // Phags-pa\n // phlp: UniversalShaper, // Psalter Pahlavi\n rjng: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n saur: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n shrd: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n sidd: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n sinh: (0, $7826f90f6f0cecc9$export$2e2bcd8739ae039),\n sund: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n sylo: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n tglg: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n tagb: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n tale: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n lana: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n tavt: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n takr: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n tibt: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n tfng: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n tirh: (0, $7ab494fe977143c6$export$2e2bcd8739ae039),\n latn: (0, $649970d87335b30f$export$2e2bcd8739ae039),\n DFLT: (0, $649970d87335b30f$export$2e2bcd8739ae039 // Default\n )\n};\nfunction $102b6fe50f1d50b4$export$7877a478dd30fd3d(script) {\n if (!Array.isArray(script)) script = [\n script\n ];\n for (let s of script){\n let shaper = $102b6fe50f1d50b4$var$SHAPERS[s];\n if (shaper) return shaper;\n }\n return 0, $649970d87335b30f$export$2e2bcd8739ae039;\n}\n\n\n\n\n\nclass $0a876c45f1f7c41c$export$2e2bcd8739ae039 extends (0, $a83b9c36aaa94fd3$export$2e2bcd8739ae039) {\n applyLookup(lookupType, table) {\n switch(lookupType){\n case 1:\n {\n let index = this.coverageIndex(table.coverage);\n if (index === -1) return false;\n let glyph = this.glyphIterator.cur;\n switch(table.version){\n case 1:\n glyph.id = glyph.id + table.deltaGlyphID & 0xffff;\n break;\n case 2:\n glyph.id = table.substitute.get(index);\n break;\n }\n return true;\n }\n case 2:\n {\n let index = this.coverageIndex(table.coverage);\n if (index !== -1) {\n let sequence = table.sequences.get(index);\n if (sequence.length === 0) {\n // If the sequence length is zero, delete the glyph.\n // The OpenType spec disallows this, but seems like Harfbuzz and Uniscribe allow it.\n this.glyphs.splice(this.glyphIterator.index, 1);\n return true;\n }\n this.glyphIterator.cur.id = sequence[0];\n this.glyphIterator.cur.ligatureComponent = 0;\n let features = this.glyphIterator.cur.features;\n let curGlyph = this.glyphIterator.cur;\n let replacement = sequence.slice(1).map((gid, i)=>{\n let glyph = new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(this.font, gid, undefined, features);\n glyph.shaperInfo = curGlyph.shaperInfo;\n glyph.isLigated = curGlyph.isLigated;\n glyph.ligatureComponent = i + 1;\n glyph.substituted = true;\n glyph.isMultiplied = true;\n return glyph;\n });\n this.glyphs.splice(this.glyphIterator.index + 1, 0, ...replacement);\n return true;\n }\n return false;\n }\n case 3:\n {\n let index = this.coverageIndex(table.coverage);\n if (index !== -1) {\n let USER_INDEX = 0; // TODO\n this.glyphIterator.cur.id = table.alternateSet.get(index)[USER_INDEX];\n return true;\n }\n return false;\n }\n case 4:\n {\n let index = this.coverageIndex(table.coverage);\n if (index === -1) return false;\n for (let ligature of table.ligatureSets.get(index)){\n let matched = this.sequenceMatchIndices(1, ligature.components);\n if (!matched) continue;\n let curGlyph = this.glyphIterator.cur;\n // Concatenate all of the characters the new ligature will represent\n let characters = curGlyph.codePoints.slice();\n for (let index of matched)characters.push(...this.glyphs[index].codePoints);\n // Create the replacement ligature glyph\n let ligatureGlyph = new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(this.font, ligature.glyph, characters, curGlyph.features);\n ligatureGlyph.shaperInfo = curGlyph.shaperInfo;\n ligatureGlyph.isLigated = true;\n ligatureGlyph.substituted = true;\n // From Harfbuzz:\n // - If it *is* a mark ligature, we don't allocate a new ligature id, and leave\n // the ligature to keep its old ligature id. This will allow it to attach to\n // a base ligature in GPOS. Eg. if the sequence is: LAM,LAM,SHADDA,FATHA,HEH,\n // and LAM,LAM,HEH for a ligature, they will leave SHADDA and FATHA with a\n // ligature id and component value of 2. Then if SHADDA,FATHA form a ligature\n // later, we don't want them to lose their ligature id/component, otherwise\n // GPOS will fail to correctly position the mark ligature on top of the\n // LAM,LAM,HEH ligature. See https://bugzilla.gnome.org/show_bug.cgi?id=676343\n //\n // - If a ligature is formed of components that some of which are also ligatures\n // themselves, and those ligature components had marks attached to *their*\n // components, we have to attach the marks to the new ligature component\n // positions! Now *that*'s tricky! And these marks may be following the\n // last component of the whole sequence, so we should loop forward looking\n // for them and update them.\n //\n // Eg. the sequence is LAM,LAM,SHADDA,FATHA,HEH, and the font first forms a\n // 'calt' ligature of LAM,HEH, leaving the SHADDA and FATHA with a ligature\n // id and component == 1. Now, during 'liga', the LAM and the LAM-HEH ligature\n // form a LAM-LAM-HEH ligature. We need to reassign the SHADDA and FATHA to\n // the new ligature with a component value of 2.\n //\n // This in fact happened to a font... See https://bugzilla.gnome.org/show_bug.cgi?id=437633\n let isMarkLigature = curGlyph.isMark;\n for(let i = 0; i < matched.length && isMarkLigature; i++)isMarkLigature = this.glyphs[matched[i]].isMark;\n ligatureGlyph.ligatureID = isMarkLigature ? null : this.ligatureID++;\n let lastLigID = curGlyph.ligatureID;\n let lastNumComps = curGlyph.codePoints.length;\n let curComps = lastNumComps;\n let idx = this.glyphIterator.index + 1;\n // Set ligatureID and ligatureComponent on glyphs that were skipped in the matched sequence.\n // This allows GPOS to attach marks to the correct ligature components.\n for (let matchIndex of matched){\n // Don't assign new ligature components for mark ligatures (see above)\n if (isMarkLigature) idx = matchIndex;\n else while(idx < matchIndex){\n var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[idx].ligatureComponent || 1, lastNumComps);\n this.glyphs[idx].ligatureID = ligatureGlyph.ligatureID;\n this.glyphs[idx].ligatureComponent = ligatureComponent;\n idx++;\n }\n lastLigID = this.glyphs[idx].ligatureID;\n lastNumComps = this.glyphs[idx].codePoints.length;\n curComps += lastNumComps;\n idx++; // skip base glyph\n }\n // Adjust ligature components for any marks following\n if (lastLigID && !isMarkLigature) for(let i = idx; i < this.glyphs.length; i++){\n if (this.glyphs[i].ligatureID === lastLigID) {\n var ligatureComponent = curComps - lastNumComps + Math.min(this.glyphs[i].ligatureComponent || 1, lastNumComps);\n this.glyphs[i].ligatureComponent = ligatureComponent;\n } else break;\n }\n // Delete the matched glyphs, and replace the current glyph with the ligature glyph\n for(let i = matched.length - 1; i >= 0; i--)this.glyphs.splice(matched[i], 1);\n this.glyphs[this.glyphIterator.index] = ligatureGlyph;\n return true;\n }\n return false;\n }\n case 5:\n return this.applyContext(table);\n case 6:\n return this.applyChainingContext(table);\n case 7:\n return this.applyLookup(table.lookupType, table.extension);\n default:\n throw new Error(`GSUB lookupType ${lookupType} is not supported`);\n }\n }\n}\n\n\n\nclass $c96c93587d49c14d$export$2e2bcd8739ae039 extends (0, $a83b9c36aaa94fd3$export$2e2bcd8739ae039) {\n applyPositionValue(sequenceIndex, value) {\n let position = this.positions[this.glyphIterator.peekIndex(sequenceIndex)];\n if (value.xAdvance != null) position.xAdvance += value.xAdvance;\n if (value.yAdvance != null) position.yAdvance += value.yAdvance;\n if (value.xPlacement != null) position.xOffset += value.xPlacement;\n if (value.yPlacement != null) position.yOffset += value.yPlacement;\n // Adjustments for font variations\n let variationProcessor = this.font._variationProcessor;\n let variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;\n if (variationProcessor && variationStore) {\n if (value.xPlaDevice) position.xOffset += variationProcessor.getDelta(variationStore, value.xPlaDevice.a, value.xPlaDevice.b);\n if (value.yPlaDevice) position.yOffset += variationProcessor.getDelta(variationStore, value.yPlaDevice.a, value.yPlaDevice.b);\n if (value.xAdvDevice) position.xAdvance += variationProcessor.getDelta(variationStore, value.xAdvDevice.a, value.xAdvDevice.b);\n if (value.yAdvDevice) position.yAdvance += variationProcessor.getDelta(variationStore, value.yAdvDevice.a, value.yAdvDevice.b);\n }\n // TODO: device tables\n }\n applyLookup(lookupType, table) {\n switch(lookupType){\n case 1:\n {\n let index = this.coverageIndex(table.coverage);\n if (index === -1) return false;\n switch(table.version){\n case 1:\n this.applyPositionValue(0, table.value);\n break;\n case 2:\n this.applyPositionValue(0, table.values.get(index));\n break;\n }\n return true;\n }\n case 2:\n {\n let nextGlyph = this.glyphIterator.peek();\n if (!nextGlyph) return false;\n let index = this.coverageIndex(table.coverage);\n if (index === -1) return false;\n switch(table.version){\n case 1:\n let set = table.pairSets.get(index);\n for (let pair of set)if (pair.secondGlyph === nextGlyph.id) {\n this.applyPositionValue(0, pair.value1);\n this.applyPositionValue(1, pair.value2);\n return true;\n }\n return false;\n case 2:\n let class1 = this.getClassID(this.glyphIterator.cur.id, table.classDef1);\n let class2 = this.getClassID(nextGlyph.id, table.classDef2);\n if (class1 === -1 || class2 === -1) return false;\n var pair = table.classRecords.get(class1).get(class2);\n this.applyPositionValue(0, pair.value1);\n this.applyPositionValue(1, pair.value2);\n return true;\n }\n }\n case 3:\n {\n let nextIndex = this.glyphIterator.peekIndex();\n let nextGlyph = this.glyphs[nextIndex];\n if (!nextGlyph) return false;\n let curRecord = table.entryExitRecords[this.coverageIndex(table.coverage)];\n if (!curRecord || !curRecord.exitAnchor) return false;\n let nextRecord = table.entryExitRecords[this.coverageIndex(table.coverage, nextGlyph.id)];\n if (!nextRecord || !nextRecord.entryAnchor) return false;\n let entry = this.getAnchor(nextRecord.entryAnchor);\n let exit = this.getAnchor(curRecord.exitAnchor);\n let cur = this.positions[this.glyphIterator.index];\n let next = this.positions[nextIndex];\n let d;\n switch(this.direction){\n case 'ltr':\n cur.xAdvance = exit.x + cur.xOffset;\n d = entry.x + next.xOffset;\n next.xAdvance -= d;\n next.xOffset -= d;\n break;\n case 'rtl':\n d = exit.x + cur.xOffset;\n cur.xAdvance -= d;\n cur.xOffset -= d;\n next.xAdvance = entry.x + next.xOffset;\n break;\n }\n if (this.glyphIterator.flags.rightToLeft) {\n this.glyphIterator.cur.cursiveAttachment = nextIndex;\n cur.yOffset = entry.y - exit.y;\n } else {\n nextGlyph.cursiveAttachment = this.glyphIterator.index;\n cur.yOffset = exit.y - entry.y;\n }\n return true;\n }\n case 4:\n {\n let markIndex = this.coverageIndex(table.markCoverage);\n if (markIndex === -1) return false;\n // search backward for a base glyph\n let baseGlyphIndex = this.glyphIterator.index;\n while(--baseGlyphIndex >= 0 && (this.glyphs[baseGlyphIndex].isMark || this.glyphs[baseGlyphIndex].ligatureComponent > 0));\n if (baseGlyphIndex < 0) return false;\n let baseIndex = this.coverageIndex(table.baseCoverage, this.glyphs[baseGlyphIndex].id);\n if (baseIndex === -1) return false;\n let markRecord = table.markArray[markIndex];\n let baseAnchor = table.baseArray[baseIndex][markRecord.class];\n this.applyAnchor(markRecord, baseAnchor, baseGlyphIndex);\n return true;\n }\n case 5:\n {\n let markIndex = this.coverageIndex(table.markCoverage);\n if (markIndex === -1) return false;\n // search backward for a base glyph\n let baseGlyphIndex = this.glyphIterator.index;\n while(--baseGlyphIndex >= 0 && this.glyphs[baseGlyphIndex].isMark);\n if (baseGlyphIndex < 0) return false;\n let ligIndex = this.coverageIndex(table.ligatureCoverage, this.glyphs[baseGlyphIndex].id);\n if (ligIndex === -1) return false;\n let ligAttach = table.ligatureArray[ligIndex];\n let markGlyph = this.glyphIterator.cur;\n let ligGlyph = this.glyphs[baseGlyphIndex];\n let compIndex = ligGlyph.ligatureID && ligGlyph.ligatureID === markGlyph.ligatureID && markGlyph.ligatureComponent > 0 ? Math.min(markGlyph.ligatureComponent, ligGlyph.codePoints.length) - 1 : ligGlyph.codePoints.length - 1;\n let markRecord = table.markArray[markIndex];\n let baseAnchor = ligAttach[compIndex][markRecord.class];\n this.applyAnchor(markRecord, baseAnchor, baseGlyphIndex);\n return true;\n }\n case 6:\n {\n let mark1Index = this.coverageIndex(table.mark1Coverage);\n if (mark1Index === -1) return false;\n // get the previous mark to attach to\n let prevIndex = this.glyphIterator.peekIndex(-1);\n let prev = this.glyphs[prevIndex];\n if (!prev || !prev.isMark) return false;\n let cur = this.glyphIterator.cur;\n // The following logic was borrowed from Harfbuzz\n let good = false;\n if (cur.ligatureID === prev.ligatureID) {\n if (!cur.ligatureID) good = true;\n else if (cur.ligatureComponent === prev.ligatureComponent) good = true;\n } else // If ligature ids don't match, it may be the case that one of the marks\n // itself is a ligature, in which case match.\n if (cur.ligatureID && !cur.ligatureComponent || prev.ligatureID && !prev.ligatureComponent) good = true;\n if (!good) return false;\n let mark2Index = this.coverageIndex(table.mark2Coverage, prev.id);\n if (mark2Index === -1) return false;\n let markRecord = table.mark1Array[mark1Index];\n let baseAnchor = table.mark2Array[mark2Index][markRecord.class];\n this.applyAnchor(markRecord, baseAnchor, prevIndex);\n return true;\n }\n case 7:\n return this.applyContext(table);\n case 8:\n return this.applyChainingContext(table);\n case 9:\n return this.applyLookup(table.lookupType, table.extension);\n default:\n throw new Error(`Unsupported GPOS table: ${lookupType}`);\n }\n }\n applyAnchor(markRecord, baseAnchor, baseGlyphIndex) {\n let baseCoords = this.getAnchor(baseAnchor);\n let markCoords = this.getAnchor(markRecord.markAnchor);\n let basePos = this.positions[baseGlyphIndex];\n let markPos = this.positions[this.glyphIterator.index];\n markPos.xOffset = baseCoords.x - markCoords.x;\n markPos.yOffset = baseCoords.y - markCoords.y;\n this.glyphIterator.cur.markAttachment = baseGlyphIndex;\n }\n getAnchor(anchor) {\n // TODO: contour point, device tables\n let x = anchor.xCoordinate;\n let y = anchor.yCoordinate;\n // Adjustments for font variations\n let variationProcessor = this.font._variationProcessor;\n let variationStore = this.font.GDEF && this.font.GDEF.itemVariationStore;\n if (variationProcessor && variationStore) {\n if (anchor.xDeviceTable) x += variationProcessor.getDelta(variationStore, anchor.xDeviceTable.a, anchor.xDeviceTable.b);\n if (anchor.yDeviceTable) y += variationProcessor.getDelta(variationStore, anchor.yDeviceTable.a, anchor.yDeviceTable.b);\n }\n return {\n x: x,\n y: y\n };\n }\n applyFeatures(userFeatures, glyphs, advances) {\n super.applyFeatures(userFeatures, glyphs, advances);\n for(var i = 0; i < this.glyphs.length; i++)this.fixCursiveAttachment(i);\n this.fixMarkAttachment();\n }\n fixCursiveAttachment(i) {\n let glyph = this.glyphs[i];\n if (glyph.cursiveAttachment != null) {\n let j = glyph.cursiveAttachment;\n glyph.cursiveAttachment = null;\n this.fixCursiveAttachment(j);\n this.positions[i].yOffset += this.positions[j].yOffset;\n }\n }\n fixMarkAttachment() {\n for(let i = 0; i < this.glyphs.length; i++){\n let glyph = this.glyphs[i];\n if (glyph.markAttachment != null) {\n let j = glyph.markAttachment;\n this.positions[i].xOffset += this.positions[j].xOffset;\n this.positions[i].yOffset += this.positions[j].yOffset;\n if (this.direction === 'ltr') for(let k = j; k < i; k++){\n this.positions[i].xOffset -= this.positions[k].xAdvance;\n this.positions[i].yOffset -= this.positions[k].yAdvance;\n }\n else for(let k = j + 1; k < i + 1; k++){\n this.positions[i].xOffset += this.positions[k].xAdvance;\n this.positions[i].yOffset += this.positions[k].yAdvance;\n }\n }\n }\n }\n}\n\n\nclass $a62492810de27e3d$export$2e2bcd8739ae039 {\n setup(glyphRun) {\n // Map glyphs to GlyphInfo objects so data can be passed between\n // GSUB and GPOS without mutating the real (shared) Glyph objects.\n this.glyphInfos = glyphRun.glyphs.map((glyph)=>new (0, $10e7b257e1a9a756$export$2e2bcd8739ae039)(this.font, glyph.id, [\n ...glyph.codePoints\n ]));\n // Select a script based on what is available in GSUB/GPOS.\n let script = null;\n if (this.GPOSProcessor) script = this.GPOSProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n if (this.GSUBProcessor) script = this.GSUBProcessor.selectScript(glyphRun.script, glyphRun.language, glyphRun.direction);\n // Choose a shaper based on the script, and setup a shaping plan.\n // This determines which features to apply to which glyphs.\n this.shaper = $102b6fe50f1d50b4$export$7877a478dd30fd3d(script);\n this.plan = new (0, $94d7a73bd2edfc9a$export$2e2bcd8739ae039)(this.font, script, glyphRun.direction);\n this.shaper.plan(this.plan, this.glyphInfos, glyphRun.features);\n // Assign chosen features to output glyph run\n for(let key in this.plan.allFeatures)glyphRun.features[key] = true;\n }\n substitute(glyphRun) {\n if (this.GSUBProcessor) {\n this.plan.process(this.GSUBProcessor, this.glyphInfos);\n // Map glyph infos back to normal Glyph objects\n glyphRun.glyphs = this.glyphInfos.map((glyphInfo)=>this.font.getGlyph(glyphInfo.id, glyphInfo.codePoints));\n }\n }\n position(glyphRun) {\n if (this.shaper.zeroMarkWidths === 'BEFORE_GPOS') this.zeroMarkAdvances(glyphRun.positions);\n if (this.GPOSProcessor) this.plan.process(this.GPOSProcessor, this.glyphInfos, glyphRun.positions);\n if (this.shaper.zeroMarkWidths === 'AFTER_GPOS') this.zeroMarkAdvances(glyphRun.positions);\n // Reverse the glyphs and positions if the script is right-to-left\n if (glyphRun.direction === 'rtl') {\n glyphRun.glyphs.reverse();\n glyphRun.positions.reverse();\n }\n return this.GPOSProcessor && this.GPOSProcessor.features;\n }\n zeroMarkAdvances(positions) {\n for(let i = 0; i < this.glyphInfos.length; i++)if (this.glyphInfos[i].isMark) {\n positions[i].xAdvance = 0;\n positions[i].yAdvance = 0;\n }\n }\n cleanup() {\n this.glyphInfos = null;\n this.plan = null;\n this.shaper = null;\n }\n getAvailableFeatures(script, language) {\n let features = [];\n if (this.GSUBProcessor) {\n this.GSUBProcessor.selectScript(script, language);\n features.push(...Object.keys(this.GSUBProcessor.features));\n }\n if (this.GPOSProcessor) {\n this.GPOSProcessor.selectScript(script, language);\n features.push(...Object.keys(this.GPOSProcessor.features));\n }\n return features;\n }\n constructor(font){\n this.font = font;\n this.glyphInfos = null;\n this.plan = null;\n this.GSUBProcessor = null;\n this.GPOSProcessor = null;\n this.fallbackPosition = true;\n if (font.GSUB) this.GSUBProcessor = new (0, $0a876c45f1f7c41c$export$2e2bcd8739ae039)(font, font.GSUB);\n if (font.GPOS) this.GPOSProcessor = new (0, $c96c93587d49c14d$export$2e2bcd8739ae039)(font, font.GPOS);\n }\n}\n\n\nclass $4c0a7fa5df7a9ab1$export$2e2bcd8739ae039 {\n layout(string, features, script, language, direction) {\n // Make the features parameter optional\n if (typeof features === 'string') {\n direction = language;\n language = script;\n script = features;\n features = [];\n }\n // Map string to glyphs if needed\n if (typeof string === 'string') {\n // Attempt to detect the script from the string if not provided.\n if (script == null) script = $130d1a642ebcd2b7$export$e5cb25e204fb8450(string);\n var glyphs = this.font.glyphsForString(string);\n } else {\n // Attempt to detect the script from the glyph code points if not provided.\n if (script == null) {\n let codePoints = [];\n for (let glyph of string)codePoints.push(...glyph.codePoints);\n script = $130d1a642ebcd2b7$export$16fab0757cfc223d(codePoints);\n }\n var glyphs = string;\n }\n let glyphRun = new (0, $be07b3e97a42687a$export$2e2bcd8739ae039)(glyphs, features, script, language, direction);\n // Return early if there are no glyphs\n if (glyphs.length === 0) {\n glyphRun.positions = [];\n return glyphRun;\n }\n // Setup the advanced layout engine\n if (this.engine && this.engine.setup) this.engine.setup(glyphRun);\n // Substitute and position the glyphs\n this.substitute(glyphRun);\n this.position(glyphRun);\n this.hideDefaultIgnorables(glyphRun.glyphs, glyphRun.positions);\n // Let the layout engine clean up any state it might have\n if (this.engine && this.engine.cleanup) this.engine.cleanup();\n return glyphRun;\n }\n substitute(glyphRun) {\n // Call the advanced layout engine to make substitutions\n if (this.engine && this.engine.substitute) this.engine.substitute(glyphRun);\n }\n position(glyphRun) {\n // Get initial glyph positions\n glyphRun.positions = glyphRun.glyphs.map((glyph)=>new (0, $1ac75d9a55b67f01$export$2e2bcd8739ae039)(glyph.advanceWidth));\n let positioned = null;\n // Call the advanced layout engine. Returns the features applied.\n if (this.engine && this.engine.position) positioned = this.engine.position(glyphRun);\n // if there is no GPOS table, use unicode properties to position marks.\n if (!positioned && (!this.engine || this.engine.fallbackPosition)) {\n if (!this.unicodeLayoutEngine) this.unicodeLayoutEngine = new (0, $0a4bdfeb6dfd6f5e$export$2e2bcd8739ae039)(this.font);\n this.unicodeLayoutEngine.positionGlyphs(glyphRun.glyphs, glyphRun.positions);\n }\n // if kerning is not supported by GPOS, do kerning with the TrueType/AAT kern table\n if ((!positioned || !positioned.kern) && glyphRun.features.kern !== false && this.font.kern) {\n if (!this.kernProcessor) this.kernProcessor = new (0, $0bba3a9db57637f3$export$2e2bcd8739ae039)(this.font);\n this.kernProcessor.process(glyphRun.glyphs, glyphRun.positions);\n glyphRun.features.kern = true;\n }\n }\n hideDefaultIgnorables(glyphs, positions) {\n let space = this.font.glyphForCodePoint(0x20);\n for(let i = 0; i < glyphs.length; i++)if (this.isDefaultIgnorable(glyphs[i].codePoints[0])) {\n glyphs[i] = space;\n positions[i].xAdvance = 0;\n positions[i].yAdvance = 0;\n }\n }\n isDefaultIgnorable(ch) {\n // From DerivedCoreProperties.txt in the Unicode database,\n // minus U+115F, U+1160, U+3164 and U+FFA0, which is what\n // Harfbuzz and Uniscribe do.\n let plane = ch >> 16;\n if (plane === 0) // BMP\n switch(ch >> 8){\n case 0x00:\n return ch === 0x00AD;\n case 0x03:\n return ch === 0x034F;\n case 0x06:\n return ch === 0x061C;\n case 0x17:\n return 0x17B4 <= ch && ch <= 0x17B5;\n case 0x18:\n return 0x180B <= ch && ch <= 0x180E;\n case 0x20:\n return 0x200B <= ch && ch <= 0x200F || 0x202A <= ch && ch <= 0x202E || 0x2060 <= ch && ch <= 0x206F;\n case 0xFE:\n return 0xFE00 <= ch && ch <= 0xFE0F || ch === 0xFEFF;\n case 0xFF:\n return 0xFFF0 <= ch && ch <= 0xFFF8;\n default:\n return false;\n }\n else // Other planes\n switch(plane){\n case 0x01:\n return 0x1BCA0 <= ch && ch <= 0x1BCA3 || 0x1D173 <= ch && ch <= 0x1D17A;\n case 0x0E:\n return 0xE0000 <= ch && ch <= 0xE0FFF;\n default:\n return false;\n }\n }\n getAvailableFeatures(script, language) {\n let features = [];\n if (this.engine) features.push(...this.engine.getAvailableFeatures(script, language));\n if (this.font.kern && features.indexOf('kern') === -1) features.push('kern');\n return features;\n }\n stringsForGlyph(gid) {\n let result = new Set;\n let codePoints = this.font._cmapProcessor.codePointsForGlyph(gid);\n for (let codePoint of codePoints)result.add(String.fromCodePoint(codePoint));\n if (this.engine && this.engine.stringsForGlyph) for (let string of this.engine.stringsForGlyph(gid))result.add(string);\n return Array.from(result);\n }\n constructor(font){\n this.font = font;\n this.unicodeLayoutEngine = null;\n this.kernProcessor = null;\n // Choose an advanced layout engine. We try the AAT morx table first since more\n // scripts are currently supported because the shaping logic is built into the font.\n if (this.font.morx) this.engine = new (0, $ba6dd74203be8728$export$2e2bcd8739ae039)(this.font);\n else if (this.font.GSUB || this.font.GPOS) this.engine = new (0, $a62492810de27e3d$export$2e2bcd8739ae039)(this.font);\n }\n}\n\n\n\n\n\n\nconst $f43aec954cdfdf21$var$SVG_COMMANDS = {\n moveTo: 'M',\n lineTo: 'L',\n quadraticCurveTo: 'Q',\n bezierCurveTo: 'C',\n closePath: 'Z'\n};\nclass $f43aec954cdfdf21$export$2e2bcd8739ae039 {\n /**\n * Compiles the path to a JavaScript function that can be applied with\n * a graphics context in order to render the path.\n * @return {string}\n */ toFunction() {\n return (ctx)=>{\n this.commands.forEach((c)=>{\n return ctx[c.command].apply(ctx, c.args);\n });\n };\n }\n /**\n * Converts the path to an SVG path data string\n * @return {string}\n */ toSVG() {\n let cmds = this.commands.map((c)=>{\n let args = c.args.map((arg)=>Math.round(arg * 100) / 100);\n return `${$f43aec954cdfdf21$var$SVG_COMMANDS[c.command]}${args.join(' ')}`;\n });\n return cmds.join('');\n }\n /**\n * Gets the \"control box\" of a path.\n * This is like the bounding box, but it includes all points including\n * control points of bezier segments and is much faster to compute than\n * the real bounding box.\n * @type {BBox}\n */ get cbox() {\n if (!this._cbox) {\n let cbox = new (0, $f34600ab9d7f70d8$export$2e2bcd8739ae039);\n for (let command of this.commands)for(let i = 0; i < command.args.length; i += 2)cbox.addPoint(command.args[i], command.args[i + 1]);\n this._cbox = Object.freeze(cbox);\n }\n return this._cbox;\n }\n /**\n * Gets the exact bounding box of the path by evaluating curve segments.\n * Slower to compute than the control box, but more accurate.\n * @type {BBox}\n */ get bbox() {\n if (this._bbox) return this._bbox;\n let bbox = new (0, $f34600ab9d7f70d8$export$2e2bcd8739ae039);\n let cx = 0, cy = 0;\n let f = (t)=>Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i];\n for (let c of this.commands)switch(c.command){\n case 'moveTo':\n case 'lineTo':\n let [x, y] = c.args;\n bbox.addPoint(x, y);\n cx = x;\n cy = y;\n break;\n case 'quadraticCurveTo':\n case 'bezierCurveTo':\n if (c.command === 'quadraticCurveTo') {\n // http://fontforge.org/bezier.html\n var [qp1x, qp1y, p3x, p3y] = c.args;\n var cp1x = cx + 2 / 3 * (qp1x - cx); // CP1 = QP0 + 2/3 * (QP1-QP0)\n var cp1y = cy + 2 / 3 * (qp1y - cy);\n var cp2x = p3x + 2 / 3 * (qp1x - p3x); // CP2 = QP2 + 2/3 * (QP1-QP2)\n var cp2y = p3y + 2 / 3 * (qp1y - p3y);\n } else var [cp1x, cp1y, cp2x, cp2y, p3x, p3y] = c.args;\n // http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n bbox.addPoint(p3x, p3y);\n var p0 = [\n cx,\n cy\n ];\n var p1 = [\n cp1x,\n cp1y\n ];\n var p2 = [\n cp2x,\n cp2y\n ];\n var p3 = [\n p3x,\n p3y\n ];\n for(var i = 0; i <= 1; i++){\n let b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n let a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n if (a === 0) {\n if (b === 0) continue;\n let t = -c / b;\n if (0 < t && t < 1) {\n if (i === 0) bbox.addPoint(f(t), bbox.maxY);\n else if (i === 1) bbox.addPoint(bbox.maxX, f(t));\n }\n continue;\n }\n let b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0) continue;\n let t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (i === 0) bbox.addPoint(f(t1), bbox.maxY);\n else if (i === 1) bbox.addPoint(bbox.maxX, f(t1));\n }\n let t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\n if (0 < t2 && t2 < 1) {\n if (i === 0) bbox.addPoint(f(t2), bbox.maxY);\n else if (i === 1) bbox.addPoint(bbox.maxX, f(t2));\n }\n }\n cx = p3x;\n cy = p3y;\n break;\n }\n return this._bbox = Object.freeze(bbox);\n }\n /**\n * Applies a mapping function to each point in the path.\n * @param {function} fn\n * @return {Path}\n */ mapPoints(fn) {\n let path = new $f43aec954cdfdf21$export$2e2bcd8739ae039;\n for (let c of this.commands){\n let args = [];\n for(let i = 0; i < c.args.length; i += 2){\n let [x, y] = fn(c.args[i], c.args[i + 1]);\n args.push(x, y);\n }\n path[c.command](...args);\n }\n return path;\n }\n /**\n * Transforms the path by the given matrix.\n */ transform(m0, m1, m2, m3, m4, m5) {\n return this.mapPoints((x, y)=>{\n const tx = m0 * x + m2 * y + m4;\n const ty = m1 * x + m3 * y + m5;\n return [\n tx,\n ty\n ];\n });\n }\n /**\n * Translates the path by the given offset.\n */ translate(x, y) {\n return this.transform(1, 0, 0, 1, x, y);\n }\n /**\n * Rotates the path by the given angle (in radians).\n */ rotate(angle) {\n let cos = Math.cos(angle);\n let sin = Math.sin(angle);\n return this.transform(cos, sin, -sin, cos, 0, 0);\n }\n /**\n * Scales the path.\n */ scale(scaleX, scaleY = scaleX) {\n return this.transform(scaleX, 0, 0, scaleY, 0, 0);\n }\n constructor(){\n this.commands = [];\n this._bbox = null;\n this._cbox = null;\n }\n}\nfor (let command of [\n 'moveTo',\n 'lineTo',\n 'quadraticCurveTo',\n 'bezierCurveTo',\n 'closePath'\n])$f43aec954cdfdf21$export$2e2bcd8739ae039.prototype[command] = function(...args) {\n this._bbox = this._cbox = null;\n this.commands.push({\n command: command,\n args: args\n });\n return this;\n};\n\n\n\nvar $7713b9b7b438dff8$export$2e2bcd8739ae039 = [\n '.notdef',\n '.null',\n 'nonmarkingreturn',\n 'space',\n 'exclam',\n 'quotedbl',\n 'numbersign',\n 'dollar',\n 'percent',\n 'ampersand',\n 'quotesingle',\n 'parenleft',\n 'parenright',\n 'asterisk',\n 'plus',\n 'comma',\n 'hyphen',\n 'period',\n 'slash',\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'colon',\n 'semicolon',\n 'less',\n 'equal',\n 'greater',\n 'question',\n 'at',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'bracketleft',\n 'backslash',\n 'bracketright',\n 'asciicircum',\n 'underscore',\n 'grave',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n 'braceleft',\n 'bar',\n 'braceright',\n 'asciitilde',\n 'Adieresis',\n 'Aring',\n 'Ccedilla',\n 'Eacute',\n 'Ntilde',\n 'Odieresis',\n 'Udieresis',\n 'aacute',\n 'agrave',\n 'acircumflex',\n 'adieresis',\n 'atilde',\n 'aring',\n 'ccedilla',\n 'eacute',\n 'egrave',\n 'ecircumflex',\n 'edieresis',\n 'iacute',\n 'igrave',\n 'icircumflex',\n 'idieresis',\n 'ntilde',\n 'oacute',\n 'ograve',\n 'ocircumflex',\n 'odieresis',\n 'otilde',\n 'uacute',\n 'ugrave',\n 'ucircumflex',\n 'udieresis',\n 'dagger',\n 'degree',\n 'cent',\n 'sterling',\n 'section',\n 'bullet',\n 'paragraph',\n 'germandbls',\n 'registered',\n 'copyright',\n 'trademark',\n 'acute',\n 'dieresis',\n 'notequal',\n 'AE',\n 'Oslash',\n 'infinity',\n 'plusminus',\n 'lessequal',\n 'greaterequal',\n 'yen',\n 'mu',\n 'partialdiff',\n 'summation',\n 'product',\n 'pi',\n 'integral',\n 'ordfeminine',\n 'ordmasculine',\n 'Omega',\n 'ae',\n 'oslash',\n 'questiondown',\n 'exclamdown',\n 'logicalnot',\n 'radical',\n 'florin',\n 'approxequal',\n 'Delta',\n 'guillemotleft',\n 'guillemotright',\n 'ellipsis',\n 'nonbreakingspace',\n 'Agrave',\n 'Atilde',\n 'Otilde',\n 'OE',\n 'oe',\n 'endash',\n 'emdash',\n 'quotedblleft',\n 'quotedblright',\n 'quoteleft',\n 'quoteright',\n 'divide',\n 'lozenge',\n 'ydieresis',\n 'Ydieresis',\n 'fraction',\n 'currency',\n 'guilsinglleft',\n 'guilsinglright',\n 'fi',\n 'fl',\n 'daggerdbl',\n 'periodcentered',\n 'quotesinglbase',\n 'quotedblbase',\n 'perthousand',\n 'Acircumflex',\n 'Ecircumflex',\n 'Aacute',\n 'Edieresis',\n 'Egrave',\n 'Iacute',\n 'Icircumflex',\n 'Idieresis',\n 'Igrave',\n 'Oacute',\n 'Ocircumflex',\n 'apple',\n 'Ograve',\n 'Uacute',\n 'Ucircumflex',\n 'Ugrave',\n 'dotlessi',\n 'circumflex',\n 'tilde',\n 'macron',\n 'breve',\n 'dotaccent',\n 'ring',\n 'cedilla',\n 'hungarumlaut',\n 'ogonek',\n 'caron',\n 'Lslash',\n 'lslash',\n 'Scaron',\n 'scaron',\n 'Zcaron',\n 'zcaron',\n 'brokenbar',\n 'Eth',\n 'eth',\n 'Yacute',\n 'yacute',\n 'Thorn',\n 'thorn',\n 'minus',\n 'multiply',\n 'onesuperior',\n 'twosuperior',\n 'threesuperior',\n 'onehalf',\n 'onequarter',\n 'threequarters',\n 'franc',\n 'Gbreve',\n 'gbreve',\n 'Idotaccent',\n 'Scedilla',\n 'scedilla',\n 'Cacute',\n 'cacute',\n 'Ccaron',\n 'ccaron',\n 'dcroat'\n];\n\n\nclass $f92906be28e61769$export$2e2bcd8739ae039 {\n _getPath() {\n return new (0, $f43aec954cdfdf21$export$2e2bcd8739ae039)();\n }\n _getCBox() {\n return this.path.cbox;\n }\n _getBBox() {\n return this.path.bbox;\n }\n _getTableMetrics(table) {\n if (this.id < table.metrics.length) return table.metrics.get(this.id);\n let metric = table.metrics.get(table.metrics.length - 1);\n let res = {\n advance: metric ? metric.advance : 0,\n bearing: table.bearings.get(this.id - table.metrics.length) || 0\n };\n return res;\n }\n _getMetrics(cbox) {\n if (this._metrics) return this._metrics;\n let { advance: advanceWidth, bearing: leftBearing } = this._getTableMetrics(this._font.hmtx);\n // For vertical metrics, use vmtx if available, or fall back to global data from OS/2 or hhea\n if (this._font.vmtx) var { advance: advanceHeight, bearing: topBearing } = this._getTableMetrics(this._font.vmtx);\n else {\n let os2;\n if (typeof cbox === 'undefined' || cbox === null) ({ cbox: cbox } = this);\n if ((os2 = this._font['OS/2']) && os2.version > 0) {\n var advanceHeight = Math.abs(os2.typoAscender - os2.typoDescender);\n var topBearing = os2.typoAscender - cbox.maxY;\n } else {\n let { hhea: hhea } = this._font;\n var advanceHeight = Math.abs(hhea.ascent - hhea.descent);\n var topBearing = hhea.ascent - cbox.maxY;\n }\n }\n if (this._font._variationProcessor && this._font.HVAR) advanceWidth += this._font._variationProcessor.getAdvanceAdjustment(this.id, this._font.HVAR);\n return this._metrics = {\n advanceWidth: advanceWidth,\n advanceHeight: advanceHeight,\n leftBearing: leftBearing,\n topBearing: topBearing\n };\n }\n /**\n * The glyph’s control box.\n * This is often the same as the bounding box, but is faster to compute.\n * Because of the way bezier curves are defined, some of the control points\n * can be outside of the bounding box. Where `bbox` takes this into account,\n * `cbox` does not. Thus, cbox is less accurate, but faster to compute.\n * See [here](http://www.freetype.org/freetype2/docs/glyphs/glyphs-6.html#section-2)\n * for a more detailed description.\n *\n * @type {BBox}\n */ get cbox() {\n return this._getCBox();\n }\n /**\n * The glyph’s bounding box, i.e. the rectangle that encloses the\n * glyph outline as tightly as possible.\n * @type {BBox}\n */ get bbox() {\n return this._getBBox();\n }\n /**\n * A vector Path object representing the glyph outline.\n * @type {Path}\n */ get path() {\n // Cache the path so we only decode it once\n // Decoding is actually performed by subclasses\n return this._getPath();\n }\n /**\n * Returns a path scaled to the given font size.\n * @param {number} size\n * @return {Path}\n */ getScaledPath(size) {\n let scale = 1 / this._font.unitsPerEm * size;\n return this.path.scale(scale);\n }\n /**\n * The glyph's advance width.\n * @type {number}\n */ get advanceWidth() {\n return this._getMetrics().advanceWidth;\n }\n /**\n * The glyph's advance height.\n * @type {number}\n */ get advanceHeight() {\n return this._getMetrics().advanceHeight;\n }\n get ligatureCaretPositions() {}\n _getName() {\n let { post: post } = this._font;\n if (!post) return null;\n switch(post.version){\n case 1:\n return (0, $7713b9b7b438dff8$export$2e2bcd8739ae039)[this.id];\n case 2:\n let id = post.glyphNameIndex[this.id];\n if (id < (0, $7713b9b7b438dff8$export$2e2bcd8739ae039).length) return (0, $7713b9b7b438dff8$export$2e2bcd8739ae039)[id];\n return post.names[id - (0, $7713b9b7b438dff8$export$2e2bcd8739ae039).length];\n case 2.5:\n return (0, $7713b9b7b438dff8$export$2e2bcd8739ae039)[this.id + post.offsets[this.id]];\n case 4:\n return String.fromCharCode(post.map[this.id]);\n }\n }\n /**\n * The glyph's name\n * @type {string}\n */ get name() {\n return this._getName();\n }\n /**\n * Renders the glyph to the given graphics context, at the specified font size.\n * @param {CanvasRenderingContext2d} ctx\n * @param {number} size\n */ render(ctx, size) {\n ctx.save();\n let scale = 1 / this._font.head.unitsPerEm * size;\n ctx.scale(scale, scale);\n let fn = this.path.toFunction();\n fn(ctx);\n ctx.fill();\n ctx.restore();\n }\n constructor(id, codePoints, font){\n /**\n * The glyph id in the font\n * @type {number}\n */ this.id = id;\n /**\n * An array of unicode code points that are represented by this glyph.\n * There can be multiple code points in the case of ligatures and other glyphs\n * that represent multiple visual characters.\n * @type {number[]}\n */ this.codePoints = codePoints;\n this._font = font;\n // TODO: get this info from GDEF if available\n this.isMark = this.codePoints.length > 0 && this.codePoints.every((0, $6uUbQ$isMark));\n this.isLigature = this.codePoints.length > 1;\n }\n}\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f92906be28e61769$export$2e2bcd8739ae039.prototype, \"cbox\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f92906be28e61769$export$2e2bcd8739ae039.prototype, \"bbox\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f92906be28e61769$export$2e2bcd8739ae039.prototype, \"path\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f92906be28e61769$export$2e2bcd8739ae039.prototype, \"advanceWidth\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f92906be28e61769$export$2e2bcd8739ae039.prototype, \"advanceHeight\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $f92906be28e61769$export$2e2bcd8739ae039.prototype, \"name\", null);\n\n\n\n\n\n// The header for both simple and composite glyphs\nlet $69aac16029968692$var$GlyfHeader = new $6uUbQ$Struct({\n numberOfContours: $6uUbQ$int16,\n xMin: $6uUbQ$int16,\n yMin: $6uUbQ$int16,\n xMax: $6uUbQ$int16,\n yMax: $6uUbQ$int16\n});\n// Flags for simple glyphs\nconst $69aac16029968692$var$ON_CURVE = 1;\nconst $69aac16029968692$var$X_SHORT_VECTOR = 2;\nconst $69aac16029968692$var$Y_SHORT_VECTOR = 4;\nconst $69aac16029968692$var$REPEAT = 8;\nconst $69aac16029968692$var$SAME_X = 16;\nconst $69aac16029968692$var$SAME_Y = 32;\n// Flags for composite glyphs\nconst $69aac16029968692$var$ARG_1_AND_2_ARE_WORDS = 1;\nconst $69aac16029968692$var$ARGS_ARE_XY_VALUES = 2;\nconst $69aac16029968692$var$ROUND_XY_TO_GRID = 4;\nconst $69aac16029968692$var$WE_HAVE_A_SCALE = 8;\nconst $69aac16029968692$var$MORE_COMPONENTS = 32;\nconst $69aac16029968692$var$WE_HAVE_AN_X_AND_Y_SCALE = 64;\nconst $69aac16029968692$var$WE_HAVE_A_TWO_BY_TWO = 128;\nconst $69aac16029968692$var$WE_HAVE_INSTRUCTIONS = 256;\nconst $69aac16029968692$var$USE_MY_METRICS = 512;\nconst $69aac16029968692$var$OVERLAP_COMPOUND = 1024;\nconst $69aac16029968692$var$SCALED_COMPONENT_OFFSET = 2048;\nconst $69aac16029968692$var$UNSCALED_COMPONENT_OFFSET = 4096;\nclass $69aac16029968692$export$baf26146a414f24a {\n copy() {\n return new $69aac16029968692$export$baf26146a414f24a(this.onCurve, this.endContour, this.x, this.y);\n }\n constructor(onCurve, endContour, x = 0, y = 0){\n this.onCurve = onCurve;\n this.endContour = endContour;\n this.x = x;\n this.y = y;\n }\n}\n// Represents a component in a composite glyph\nclass $69aac16029968692$var$Component {\n constructor(glyphID, dx, dy){\n this.glyphID = glyphID;\n this.dx = dx;\n this.dy = dy;\n this.pos = 0;\n this.scaleX = this.scaleY = 1;\n this.scale01 = this.scale10 = 0;\n }\n}\nclass $69aac16029968692$export$2e2bcd8739ae039 extends (0, $f92906be28e61769$export$2e2bcd8739ae039) {\n // Parses just the glyph header and returns the bounding box\n _getCBox(internal) {\n // We need to decode the glyph if variation processing is requested,\n // so it's easier just to recompute the path's cbox after decoding.\n if (this._font._variationProcessor && !internal) return this.path.cbox;\n let stream = this._font._getTableStream('glyf');\n stream.pos += this._font.loca.offsets[this.id];\n let glyph = $69aac16029968692$var$GlyfHeader.decode(stream);\n let cbox = new (0, $f34600ab9d7f70d8$export$2e2bcd8739ae039)(glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax);\n return Object.freeze(cbox);\n }\n // Parses a single glyph coordinate\n _parseGlyphCoord(stream, prev, short, same) {\n if (short) {\n var val = stream.readUInt8();\n if (!same) val = -val;\n val += prev;\n } else if (same) var val = prev;\n else var val = prev + stream.readInt16BE();\n return val;\n }\n // Decodes the glyph data into points for simple glyphs,\n // or components for composite glyphs\n _decode() {\n let glyfPos = this._font.loca.offsets[this.id];\n let nextPos = this._font.loca.offsets[this.id + 1];\n // Nothing to do if there is no data for this glyph\n if (glyfPos === nextPos) return null;\n let stream = this._font._getTableStream('glyf');\n stream.pos += glyfPos;\n let startPos = stream.pos;\n let glyph = $69aac16029968692$var$GlyfHeader.decode(stream);\n if (glyph.numberOfContours > 0) this._decodeSimple(glyph, stream);\n else if (glyph.numberOfContours < 0) this._decodeComposite(glyph, stream, startPos);\n return glyph;\n }\n _decodeSimple(glyph, stream) {\n // this is a simple glyph\n glyph.points = [];\n let endPtsOfContours = new $6uUbQ$Array($6uUbQ$uint16, glyph.numberOfContours).decode(stream);\n glyph.instructions = new $6uUbQ$Array($6uUbQ$uint8, $6uUbQ$uint16).decode(stream);\n let flags = [];\n let numCoords = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n while(flags.length < numCoords){\n var flag = stream.readUInt8();\n flags.push(flag);\n // check for repeat flag\n if (flag & $69aac16029968692$var$REPEAT) {\n let count = stream.readUInt8();\n for(let j = 0; j < count; j++)flags.push(flag);\n }\n }\n for(var i = 0; i < flags.length; i++){\n var flag = flags[i];\n let point = new $69aac16029968692$export$baf26146a414f24a(!!(flag & $69aac16029968692$var$ON_CURVE), endPtsOfContours.indexOf(i) >= 0, 0, 0);\n glyph.points.push(point);\n }\n let px = 0;\n for(var i = 0; i < flags.length; i++){\n var flag = flags[i];\n glyph.points[i].x = px = this._parseGlyphCoord(stream, px, flag & $69aac16029968692$var$X_SHORT_VECTOR, flag & $69aac16029968692$var$SAME_X);\n }\n let py = 0;\n for(var i = 0; i < flags.length; i++){\n var flag = flags[i];\n glyph.points[i].y = py = this._parseGlyphCoord(stream, py, flag & $69aac16029968692$var$Y_SHORT_VECTOR, flag & $69aac16029968692$var$SAME_Y);\n }\n if (this._font._variationProcessor) {\n let points = glyph.points.slice();\n points.push(...this._getPhantomPoints(glyph));\n this._font._variationProcessor.transformPoints(this.id, points);\n glyph.phantomPoints = points.slice(-4);\n }\n return;\n }\n _decodeComposite(glyph, stream, offset = 0) {\n // this is a composite glyph\n glyph.components = [];\n let haveInstructions = false;\n let flags = $69aac16029968692$var$MORE_COMPONENTS;\n while(flags & $69aac16029968692$var$MORE_COMPONENTS){\n flags = stream.readUInt16BE();\n let gPos = stream.pos - offset;\n let glyphID = stream.readUInt16BE();\n if (!haveInstructions) haveInstructions = (flags & $69aac16029968692$var$WE_HAVE_INSTRUCTIONS) !== 0;\n if (flags & $69aac16029968692$var$ARG_1_AND_2_ARE_WORDS) {\n var dx = stream.readInt16BE();\n var dy = stream.readInt16BE();\n } else {\n var dx = stream.readInt8();\n var dy = stream.readInt8();\n }\n var component = new $69aac16029968692$var$Component(glyphID, dx, dy);\n component.pos = gPos;\n if (flags & $69aac16029968692$var$WE_HAVE_A_SCALE) // fixed number with 14 bits of fraction\n component.scaleX = component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n else if (flags & $69aac16029968692$var$WE_HAVE_AN_X_AND_Y_SCALE) {\n component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n } else if (flags & $69aac16029968692$var$WE_HAVE_A_TWO_BY_TWO) {\n component.scaleX = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scale01 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scale10 = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n component.scaleY = (stream.readUInt8() << 24 | stream.readUInt8() << 16) / 1073741824;\n }\n glyph.components.push(component);\n }\n if (this._font._variationProcessor) {\n let points = [];\n for(let j = 0; j < glyph.components.length; j++){\n var component = glyph.components[j];\n points.push(new $69aac16029968692$export$baf26146a414f24a(true, true, component.dx, component.dy));\n }\n points.push(...this._getPhantomPoints(glyph));\n this._font._variationProcessor.transformPoints(this.id, points);\n glyph.phantomPoints = points.splice(-4, 4);\n for(let i = 0; i < points.length; i++){\n let point = points[i];\n glyph.components[i].dx = point.x;\n glyph.components[i].dy = point.y;\n }\n }\n return haveInstructions;\n }\n _getPhantomPoints(glyph) {\n let cbox = this._getCBox(true);\n if (this._metrics == null) this._metrics = (0, $f92906be28e61769$export$2e2bcd8739ae039).prototype._getMetrics.call(this, cbox);\n let { advanceWidth: advanceWidth, advanceHeight: advanceHeight, leftBearing: leftBearing, topBearing: topBearing } = this._metrics;\n return [\n new $69aac16029968692$export$baf26146a414f24a(false, true, glyph.xMin - leftBearing, 0),\n new $69aac16029968692$export$baf26146a414f24a(false, true, glyph.xMin - leftBearing + advanceWidth, 0),\n new $69aac16029968692$export$baf26146a414f24a(false, true, 0, glyph.yMax + topBearing),\n new $69aac16029968692$export$baf26146a414f24a(false, true, 0, glyph.yMax + topBearing + advanceHeight)\n ];\n }\n // Decodes font data, resolves composite glyphs, and returns an array of contours\n _getContours() {\n let glyph = this._decode();\n if (!glyph) return [];\n let points = [];\n if (glyph.numberOfContours < 0) // resolve composite glyphs\n for (let component of glyph.components){\n let contours = this._font.getGlyph(component.glyphID)._getContours();\n for(let i = 0; i < contours.length; i++){\n let contour = contours[i];\n for(let j = 0; j < contour.length; j++){\n let point = contour[j];\n let x = point.x * component.scaleX + point.y * component.scale01 + component.dx;\n let y = point.y * component.scaleY + point.x * component.scale10 + component.dy;\n points.push(new $69aac16029968692$export$baf26146a414f24a(point.onCurve, point.endContour, x, y));\n }\n }\n }\n else points = glyph.points || [];\n // Recompute and cache metrics if we performed variation processing, and don't have an HVAR table\n if (glyph.phantomPoints && !this._font.directory.tables.HVAR) {\n this._metrics.advanceWidth = glyph.phantomPoints[1].x - glyph.phantomPoints[0].x;\n this._metrics.advanceHeight = glyph.phantomPoints[3].y - glyph.phantomPoints[2].y;\n this._metrics.leftBearing = glyph.xMin - glyph.phantomPoints[0].x;\n this._metrics.topBearing = glyph.phantomPoints[2].y - glyph.yMax;\n }\n let contours = [];\n let cur = [];\n for(let k = 0; k < points.length; k++){\n var point = points[k];\n cur.push(point);\n if (point.endContour) {\n contours.push(cur);\n cur = [];\n }\n }\n return contours;\n }\n _getMetrics() {\n if (this._metrics) return this._metrics;\n let cbox = this._getCBox(true);\n super._getMetrics(cbox);\n if (this._font._variationProcessor && !this._font.HVAR) // No HVAR table, decode the glyph. This triggers recomputation of metrics.\n this.path;\n return this._metrics;\n }\n // Converts contours to a Path object that can be rendered\n _getPath() {\n let contours = this._getContours();\n let path = new (0, $f43aec954cdfdf21$export$2e2bcd8739ae039);\n for(let i = 0; i < contours.length; i++){\n let contour = contours[i];\n let firstPt = contour[0];\n let lastPt = contour[contour.length - 1];\n let start = 0;\n if (firstPt.onCurve) {\n // The first point will be consumed by the moveTo command, so skip in the loop\n var curvePt = null;\n start = 1;\n } else {\n if (lastPt.onCurve) // Start at the last point if the first point is off curve and the last point is on curve\n firstPt = lastPt;\n else // Start at the middle if both the first and last points are off curve\n firstPt = new $69aac16029968692$export$baf26146a414f24a(false, false, (firstPt.x + lastPt.x) / 2, (firstPt.y + lastPt.y) / 2);\n var curvePt = firstPt;\n }\n path.moveTo(firstPt.x, firstPt.y);\n for(let j = start; j < contour.length; j++){\n let pt = contour[j];\n let prevPt = j === 0 ? firstPt : contour[j - 1];\n if (prevPt.onCurve && pt.onCurve) path.lineTo(pt.x, pt.y);\n else if (prevPt.onCurve && !pt.onCurve) var curvePt = pt;\n else if (!prevPt.onCurve && !pt.onCurve) {\n let midX = (prevPt.x + pt.x) / 2;\n let midY = (prevPt.y + pt.y) / 2;\n path.quadraticCurveTo(prevPt.x, prevPt.y, midX, midY);\n var curvePt = pt;\n } else if (!prevPt.onCurve && pt.onCurve) {\n path.quadraticCurveTo(curvePt.x, curvePt.y, pt.x, pt.y);\n var curvePt = null;\n } else throw new Error(\"Unknown TTF path state\");\n }\n // Connect the first and last points\n if (curvePt) path.quadraticCurveTo(curvePt.x, curvePt.y, firstPt.x, firstPt.y);\n path.closePath();\n }\n return path;\n }\n constructor(...args){\n super(...args);\n (0, $6uUbQ$_)(this, \"type\", 'TTF');\n }\n}\n\n\n\n\n\nclass $62cc5109c6101893$export$2e2bcd8739ae039 extends (0, $f92906be28e61769$export$2e2bcd8739ae039) {\n _getName() {\n if (this._font.CFF2) return super._getName();\n return this._font['CFF '].getGlyphName(this.id);\n }\n bias(s) {\n if (s.length < 1240) return 107;\n else if (s.length < 33900) return 1131;\n else return 32768;\n }\n _getPath() {\n let cff = this._font.CFF2 || this._font['CFF '];\n let { stream: stream } = cff;\n let str = cff.topDict.CharStrings[this.id];\n let end = str.offset + str.length;\n stream.pos = str.offset;\n let path = new (0, $f43aec954cdfdf21$export$2e2bcd8739ae039);\n let stack = [];\n let trans = [];\n let width = null;\n let nStems = 0;\n let x = 0, y = 0;\n let usedGsubrs;\n let usedSubrs;\n let open = false;\n this._usedGsubrs = usedGsubrs = {};\n this._usedSubrs = usedSubrs = {};\n let gsubrs = cff.globalSubrIndex || [];\n let gsubrsBias = this.bias(gsubrs);\n let privateDict = cff.privateDictForGlyph(this.id) || {};\n let subrs = privateDict.Subrs || [];\n let subrsBias = this.bias(subrs);\n let vstore = cff.topDict.vstore && cff.topDict.vstore.itemVariationStore;\n let vsindex = privateDict.vsindex;\n let variationProcessor = this._font._variationProcessor;\n function checkWidth() {\n if (width == null) width = stack.shift() + privateDict.nominalWidthX;\n }\n function parseStems() {\n if (stack.length % 2 !== 0) checkWidth();\n nStems += stack.length >> 1;\n return stack.length = 0;\n }\n function moveTo(x, y) {\n if (open) path.closePath();\n path.moveTo(x, y);\n open = true;\n }\n let parse = function() {\n while(stream.pos < end){\n let op = stream.readUInt8();\n if (op < 32) {\n let index, subr, phase;\n let c1x, c1y, c2x, c2y, c3x, c3y;\n let c4x, c4y, c5x, c5y, c6x, c6y;\n let pts;\n switch(op){\n case 1:\n case 3:\n case 18:\n case 23:\n parseStems();\n break;\n case 4:\n if (stack.length > 1) checkWidth();\n y += stack.shift();\n moveTo(x, y);\n break;\n case 5:\n while(stack.length >= 2){\n x += stack.shift();\n y += stack.shift();\n path.lineTo(x, y);\n }\n break;\n case 6:\n case 7:\n phase = op === 6;\n while(stack.length >= 1){\n if (phase) x += stack.shift();\n else y += stack.shift();\n path.lineTo(x, y);\n phase = !phase;\n }\n break;\n case 8:\n while(stack.length > 0){\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 10:\n index = stack.pop() + subrsBias;\n subr = subrs[index];\n if (subr) {\n usedSubrs[index] = true;\n let p = stream.pos;\n let e = end;\n stream.pos = subr.offset;\n end = subr.offset + subr.length;\n parse();\n stream.pos = p;\n end = e;\n }\n break;\n case 11:\n if (cff.version >= 2) break;\n return;\n case 14:\n if (cff.version >= 2) break;\n if (stack.length > 0) checkWidth();\n if (open) {\n path.closePath();\n open = false;\n }\n break;\n case 15:\n if (cff.version < 2) throw new Error('vsindex operator not supported in CFF v1');\n vsindex = stack.pop();\n break;\n case 16:\n {\n if (cff.version < 2) throw new Error('blend operator not supported in CFF v1');\n if (!variationProcessor) throw new Error('blend operator in non-variation font');\n let blendVector = variationProcessor.getBlendVector(vstore, vsindex);\n let numBlends = stack.pop();\n let numOperands = numBlends * blendVector.length;\n let delta = stack.length - numOperands;\n let base = delta - numBlends;\n for(let i = 0; i < numBlends; i++){\n let sum = stack[base + i];\n for(let j = 0; j < blendVector.length; j++)sum += blendVector[j] * stack[delta++];\n stack[base + i] = sum;\n }\n while(numOperands--)stack.pop();\n break;\n }\n case 19:\n case 20:\n parseStems();\n stream.pos += nStems + 7 >> 3;\n break;\n case 21:\n if (stack.length > 2) checkWidth();\n x += stack.shift();\n y += stack.shift();\n moveTo(x, y);\n break;\n case 22:\n if (stack.length > 1) checkWidth();\n x += stack.shift();\n moveTo(x, y);\n break;\n case 24:\n while(stack.length >= 8){\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n path.lineTo(x, y);\n break;\n case 25:\n while(stack.length >= 8){\n x += stack.shift();\n y += stack.shift();\n path.lineTo(x, y);\n }\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n break;\n case 26:\n if (stack.length % 2) x += stack.shift();\n while(stack.length >= 4){\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x;\n y = c2y + stack.shift();\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 27:\n if (stack.length % 2) y += stack.shift();\n while(stack.length >= 4){\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y;\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n }\n break;\n case 28:\n stack.push(stream.readInt16BE());\n break;\n case 29:\n index = stack.pop() + gsubrsBias;\n subr = gsubrs[index];\n if (subr) {\n usedGsubrs[index] = true;\n let p = stream.pos;\n let e = end;\n stream.pos = subr.offset;\n end = subr.offset + subr.length;\n parse();\n stream.pos = p;\n end = e;\n }\n break;\n case 30:\n case 31:\n phase = op === 31;\n while(stack.length >= 4){\n if (phase) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n } else {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n }\n path.bezierCurveTo(c1x, c1y, c2x, c2y, x, y);\n phase = !phase;\n }\n break;\n case 12:\n op = stream.readUInt8();\n switch(op){\n case 3:\n let a = stack.pop();\n let b = stack.pop();\n stack.push(a && b ? 1 : 0);\n break;\n case 4:\n a = stack.pop();\n b = stack.pop();\n stack.push(a || b ? 1 : 0);\n break;\n case 5:\n a = stack.pop();\n stack.push(a ? 0 : 1);\n break;\n case 9:\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case 10:\n a = stack.pop();\n b = stack.pop();\n stack.push(a + b);\n break;\n case 11:\n a = stack.pop();\n b = stack.pop();\n stack.push(a - b);\n break;\n case 12:\n a = stack.pop();\n b = stack.pop();\n stack.push(a / b);\n break;\n case 14:\n a = stack.pop();\n stack.push(-a);\n break;\n case 15:\n a = stack.pop();\n b = stack.pop();\n stack.push(a === b ? 1 : 0);\n break;\n case 18:\n stack.pop();\n break;\n case 20:\n let val = stack.pop();\n let idx = stack.pop();\n trans[idx] = val;\n break;\n case 21:\n idx = stack.pop();\n stack.push(trans[idx] || 0);\n break;\n case 22:\n let s1 = stack.pop();\n let s2 = stack.pop();\n let v1 = stack.pop();\n let v2 = stack.pop();\n stack.push(v1 <= v2 ? s1 : s2);\n break;\n case 23:\n stack.push(Math.random());\n break;\n case 24:\n a = stack.pop();\n b = stack.pop();\n stack.push(a * b);\n break;\n case 26:\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case 27:\n a = stack.pop();\n stack.push(a, a);\n break;\n case 28:\n a = stack.pop();\n b = stack.pop();\n stack.push(b, a);\n break;\n case 29:\n idx = stack.pop();\n if (idx < 0) idx = 0;\n else if (idx > stack.length - 1) idx = stack.length - 1;\n stack.push(stack[idx]);\n break;\n case 30:\n let n = stack.pop();\n let j = stack.pop();\n if (j >= 0) while(j > 0){\n var t = stack[n - 1];\n for(let i = n - 2; i >= 0; i--)stack[i + 1] = stack[i];\n stack[0] = t;\n j--;\n }\n else while(j < 0){\n var t = stack[0];\n for(let i = 0; i <= n; i++)stack[i] = stack[i + 1];\n stack[n - 1] = t;\n j++;\n }\n break;\n case 34:\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n c3x = c2x + stack.shift();\n c3y = c2y;\n c4x = c3x + stack.shift();\n c4y = c3y;\n c5x = c4x + stack.shift();\n c5y = c4y;\n c6x = c5x + stack.shift();\n c6y = c5y;\n x = c6x;\n y = c6y;\n path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);\n path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);\n break;\n case 35:\n pts = [];\n for(let i = 0; i <= 5; i++){\n x += stack.shift();\n y += stack.shift();\n pts.push(x, y);\n }\n path.bezierCurveTo(...pts.slice(0, 6));\n path.bezierCurveTo(...pts.slice(6));\n stack.shift(); // fd\n break;\n case 36:\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n c3x = c2x + stack.shift();\n c3y = c2y;\n c4x = c3x + stack.shift();\n c4y = c3y;\n c5x = c4x + stack.shift();\n c5y = c4y + stack.shift();\n c6x = c5x + stack.shift();\n c6y = c5y;\n x = c6x;\n y = c6y;\n path.bezierCurveTo(c1x, c1y, c2x, c2y, c3x, c3y);\n path.bezierCurveTo(c4x, c4y, c5x, c5y, c6x, c6y);\n break;\n case 37:\n let startx = x;\n let starty = y;\n pts = [];\n for(let i = 0; i <= 4; i++){\n x += stack.shift();\n y += stack.shift();\n pts.push(x, y);\n }\n if (Math.abs(x - startx) > Math.abs(y - starty)) {\n x += stack.shift();\n y = starty;\n } else {\n x = startx;\n y += stack.shift();\n }\n pts.push(x, y);\n path.bezierCurveTo(...pts.slice(0, 6));\n path.bezierCurveTo(...pts.slice(6));\n break;\n default:\n throw new Error(`Unknown op: 12 ${op}`);\n }\n break;\n default:\n throw new Error(`Unknown op: ${op}`);\n }\n } else if (op < 247) stack.push(op - 139);\n else if (op < 251) {\n var b1 = stream.readUInt8();\n stack.push((op - 247) * 256 + b1 + 108);\n } else if (op < 255) {\n var b1 = stream.readUInt8();\n stack.push(-(op - 251) * 256 - b1 - 108);\n } else stack.push(stream.readInt32BE() / 65536);\n }\n };\n parse();\n if (open) path.closePath();\n return path;\n }\n constructor(...args){\n super(...args);\n (0, $6uUbQ$_)(this, \"type\", 'CFF');\n }\n}\n\n\n\n\n\nlet $25d8f049c222084c$var$SBIXImage = new $6uUbQ$Struct({\n originX: $6uUbQ$uint16,\n originY: $6uUbQ$uint16,\n type: new $6uUbQ$String(4),\n data: new $6uUbQ$Buffer((t)=>t.parent.buflen - t._currentOffset)\n});\nclass $25d8f049c222084c$export$2e2bcd8739ae039 extends (0, $69aac16029968692$export$2e2bcd8739ae039) {\n /**\n * Returns an object representing a glyph image at the given point size.\n * The object has a data property with a Buffer containing the actual image data,\n * along with the image type, and origin.\n *\n * @param {number} size\n * @return {object}\n */ getImageForSize(size) {\n for(let i = 0; i < this._font.sbix.imageTables.length; i++){\n var table = this._font.sbix.imageTables[i];\n if (table.ppem >= size) break;\n }\n let offsets = table.imageOffsets;\n let start = offsets[this.id];\n let end = offsets[this.id + 1];\n if (start === end) return null;\n this._font.stream.pos = start;\n return $25d8f049c222084c$var$SBIXImage.decode(this._font.stream, {\n buflen: end - start\n });\n }\n render(ctx, size) {\n let img = this.getImageForSize(size);\n if (img != null) {\n let scale = size / this._font.unitsPerEm;\n ctx.image(img.data, {\n height: size,\n x: img.originX,\n y: (this.bbox.minY - img.originY) * scale\n });\n }\n if (this._font.sbix.flags.renderOutlines) super.render(ctx, size);\n }\n constructor(...args){\n super(...args);\n (0, $6uUbQ$_)(this, \"type\", 'SBIX');\n }\n}\n\n\n\n\n\nclass $0d411f0165859681$var$COLRLayer {\n constructor(glyph, color){\n this.glyph = glyph;\n this.color = color;\n }\n}\nclass $0d411f0165859681$export$2e2bcd8739ae039 extends (0, $f92906be28e61769$export$2e2bcd8739ae039) {\n _getBBox() {\n let bbox = new (0, $f34600ab9d7f70d8$export$2e2bcd8739ae039);\n for(let i = 0; i < this.layers.length; i++){\n let layer = this.layers[i];\n let b = layer.glyph.bbox;\n bbox.addPoint(b.minX, b.minY);\n bbox.addPoint(b.maxX, b.maxY);\n }\n return bbox;\n }\n /**\n * Returns an array of objects containing the glyph and color for\n * each layer in the composite color glyph.\n * @type {object[]}\n */ get layers() {\n let cpal = this._font.CPAL;\n let colr = this._font.COLR;\n let low = 0;\n let high = colr.baseGlyphRecord.length - 1;\n while(low <= high){\n let mid = low + high >> 1;\n var rec = colr.baseGlyphRecord[mid];\n if (this.id < rec.gid) high = mid - 1;\n else if (this.id > rec.gid) low = mid + 1;\n else {\n var baseLayer = rec;\n break;\n }\n }\n // if base glyph not found in COLR table,\n // default to normal glyph from glyf or CFF\n if (baseLayer == null) {\n var g = this._font._getBaseGlyph(this.id);\n var color = {\n red: 0,\n green: 0,\n blue: 0,\n alpha: 255\n };\n return [\n new $0d411f0165859681$var$COLRLayer(g, color)\n ];\n }\n // otherwise, return an array of all the layers\n let layers = [];\n for(let i = baseLayer.firstLayerIndex; i < baseLayer.firstLayerIndex + baseLayer.numLayers; i++){\n var rec = colr.layerRecords[i];\n var color = cpal.colorRecords[rec.paletteIndex];\n var g = this._font._getBaseGlyph(rec.gid);\n layers.push(new $0d411f0165859681$var$COLRLayer(g, color));\n }\n return layers;\n }\n render(ctx, size) {\n for (let { glyph: glyph, color: color } of this.layers){\n ctx.fillColor([\n color.red,\n color.green,\n color.blue\n ], color.alpha / 255 * 100);\n glyph.render(ctx, size);\n }\n return;\n }\n constructor(...args){\n super(...args);\n (0, $6uUbQ$_)(this, \"type\", 'COLR');\n }\n}\n\n\nconst $0bb840cac04e911b$var$TUPLES_SHARE_POINT_NUMBERS = 0x8000;\nconst $0bb840cac04e911b$var$TUPLE_COUNT_MASK = 0x0fff;\nconst $0bb840cac04e911b$var$EMBEDDED_TUPLE_COORD = 0x8000;\nconst $0bb840cac04e911b$var$INTERMEDIATE_TUPLE = 0x4000;\nconst $0bb840cac04e911b$var$PRIVATE_POINT_NUMBERS = 0x2000;\nconst $0bb840cac04e911b$var$TUPLE_INDEX_MASK = 0x0fff;\nconst $0bb840cac04e911b$var$POINTS_ARE_WORDS = 0x80;\nconst $0bb840cac04e911b$var$POINT_RUN_COUNT_MASK = 0x7f;\nconst $0bb840cac04e911b$var$DELTAS_ARE_ZERO = 0x80;\nconst $0bb840cac04e911b$var$DELTAS_ARE_WORDS = 0x40;\nconst $0bb840cac04e911b$var$DELTA_RUN_COUNT_MASK = 0x3f;\nclass $0bb840cac04e911b$export$2e2bcd8739ae039 {\n normalizeCoords(coords) {\n // the default mapping is linear along each axis, in two segments:\n // from the minValue to defaultValue, and from defaultValue to maxValue.\n let normalized = [];\n for(var i = 0; i < this.font.fvar.axis.length; i++){\n let axis = this.font.fvar.axis[i];\n if (coords[i] < axis.defaultValue) normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.defaultValue - axis.minValue + Number.EPSILON));\n else normalized.push((coords[i] - axis.defaultValue + Number.EPSILON) / (axis.maxValue - axis.defaultValue + Number.EPSILON));\n }\n // if there is an avar table, the normalized value is calculated\n // by interpolating between the two nearest mapped values.\n if (this.font.avar) for(var i = 0; i < this.font.avar.segment.length; i++){\n let segment = this.font.avar.segment[i];\n for(let j = 0; j < segment.correspondence.length; j++){\n let pair = segment.correspondence[j];\n if (j >= 1 && normalized[i] < pair.fromCoord) {\n let prev = segment.correspondence[j - 1];\n normalized[i] = ((normalized[i] - prev.fromCoord) * (pair.toCoord - prev.toCoord) + Number.EPSILON) / (pair.fromCoord - prev.fromCoord + Number.EPSILON) + prev.toCoord;\n break;\n }\n }\n }\n return normalized;\n }\n transformPoints(gid, glyphPoints) {\n if (!this.font.fvar || !this.font.gvar) return;\n let { gvar: gvar } = this.font;\n if (gid >= gvar.glyphCount) return;\n let offset = gvar.offsets[gid];\n if (offset === gvar.offsets[gid + 1]) return;\n // Read the gvar data for this glyph\n let { stream: stream } = this.font;\n stream.pos = offset;\n if (stream.pos >= stream.length) return;\n let tupleCount = stream.readUInt16BE();\n let offsetToData = offset + stream.readUInt16BE();\n if (tupleCount & $0bb840cac04e911b$var$TUPLES_SHARE_POINT_NUMBERS) {\n var here = stream.pos;\n stream.pos = offsetToData;\n var sharedPoints = this.decodePoints();\n offsetToData = stream.pos;\n stream.pos = here;\n }\n let origPoints = glyphPoints.map((pt)=>pt.copy());\n tupleCount &= $0bb840cac04e911b$var$TUPLE_COUNT_MASK;\n for(let i = 0; i < tupleCount; i++){\n let tupleDataSize = stream.readUInt16BE();\n let tupleIndex = stream.readUInt16BE();\n if (tupleIndex & $0bb840cac04e911b$var$EMBEDDED_TUPLE_COORD) {\n var tupleCoords = [];\n for(let a = 0; a < gvar.axisCount; a++)tupleCoords.push(stream.readInt16BE() / 16384);\n } else {\n if ((tupleIndex & $0bb840cac04e911b$var$TUPLE_INDEX_MASK) >= gvar.globalCoordCount) throw new Error('Invalid gvar table');\n var tupleCoords = gvar.globalCoords[tupleIndex & $0bb840cac04e911b$var$TUPLE_INDEX_MASK];\n }\n if (tupleIndex & $0bb840cac04e911b$var$INTERMEDIATE_TUPLE) {\n var startCoords = [];\n for(let a = 0; a < gvar.axisCount; a++)startCoords.push(stream.readInt16BE() / 16384);\n var endCoords = [];\n for(let a = 0; a < gvar.axisCount; a++)endCoords.push(stream.readInt16BE() / 16384);\n }\n // Get the factor at which to apply this tuple\n let factor = this.tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords);\n if (factor === 0) {\n offsetToData += tupleDataSize;\n continue;\n }\n var here = stream.pos;\n stream.pos = offsetToData;\n if (tupleIndex & $0bb840cac04e911b$var$PRIVATE_POINT_NUMBERS) var points = this.decodePoints();\n else var points = sharedPoints;\n // points.length = 0 means there are deltas for all points\n let nPoints = points.length === 0 ? glyphPoints.length : points.length;\n let xDeltas = this.decodeDeltas(nPoints);\n let yDeltas = this.decodeDeltas(nPoints);\n if (points.length === 0) for(let i = 0; i < glyphPoints.length; i++){\n var point = glyphPoints[i];\n point.x += Math.round(xDeltas[i] * factor);\n point.y += Math.round(yDeltas[i] * factor);\n }\n else {\n let outPoints = origPoints.map((pt)=>pt.copy());\n let hasDelta = glyphPoints.map(()=>false);\n for(let i = 0; i < points.length; i++){\n let idx = points[i];\n if (idx < glyphPoints.length) {\n let point = outPoints[idx];\n hasDelta[idx] = true;\n point.x += xDeltas[i] * factor;\n point.y += yDeltas[i] * factor;\n }\n }\n this.interpolateMissingDeltas(outPoints, origPoints, hasDelta);\n for(let i = 0; i < glyphPoints.length; i++){\n let deltaX = outPoints[i].x - origPoints[i].x;\n let deltaY = outPoints[i].y - origPoints[i].y;\n glyphPoints[i].x = Math.round(glyphPoints[i].x + deltaX);\n glyphPoints[i].y = Math.round(glyphPoints[i].y + deltaY);\n }\n }\n offsetToData += tupleDataSize;\n stream.pos = here;\n }\n }\n decodePoints() {\n let stream = this.font.stream;\n let count = stream.readUInt8();\n if (count & $0bb840cac04e911b$var$POINTS_ARE_WORDS) count = (count & $0bb840cac04e911b$var$POINT_RUN_COUNT_MASK) << 8 | stream.readUInt8();\n let points = new Uint16Array(count);\n let i = 0;\n let point = 0;\n while(i < count){\n let run = stream.readUInt8();\n let runCount = (run & $0bb840cac04e911b$var$POINT_RUN_COUNT_MASK) + 1;\n let fn = run & $0bb840cac04e911b$var$POINTS_ARE_WORDS ? stream.readUInt16 : stream.readUInt8;\n for(let j = 0; j < runCount && i < count; j++){\n point += fn.call(stream);\n points[i++] = point;\n }\n }\n return points;\n }\n decodeDeltas(count) {\n let stream = this.font.stream;\n let i = 0;\n let deltas = new Int16Array(count);\n while(i < count){\n let run = stream.readUInt8();\n let runCount = (run & $0bb840cac04e911b$var$DELTA_RUN_COUNT_MASK) + 1;\n if (run & $0bb840cac04e911b$var$DELTAS_ARE_ZERO) i += runCount;\n else {\n let fn = run & $0bb840cac04e911b$var$DELTAS_ARE_WORDS ? stream.readInt16BE : stream.readInt8;\n for(let j = 0; j < runCount && i < count; j++)deltas[i++] = fn.call(stream);\n }\n }\n return deltas;\n }\n tupleFactor(tupleIndex, tupleCoords, startCoords, endCoords) {\n let normalized = this.normalizedCoords;\n let { gvar: gvar } = this.font;\n let factor = 1;\n for(let i = 0; i < gvar.axisCount; i++){\n if (tupleCoords[i] === 0) continue;\n if (normalized[i] === 0) return 0;\n if ((tupleIndex & $0bb840cac04e911b$var$INTERMEDIATE_TUPLE) === 0) {\n if (normalized[i] < Math.min(0, tupleCoords[i]) || normalized[i] > Math.max(0, tupleCoords[i])) return 0;\n factor = (factor * normalized[i] + Number.EPSILON) / (tupleCoords[i] + Number.EPSILON);\n } else {\n if (normalized[i] < startCoords[i] || normalized[i] > endCoords[i]) return 0;\n else if (normalized[i] < tupleCoords[i]) factor = factor * (normalized[i] - startCoords[i] + Number.EPSILON) / (tupleCoords[i] - startCoords[i] + Number.EPSILON);\n else factor = factor * (endCoords[i] - normalized[i] + Number.EPSILON) / (endCoords[i] - tupleCoords[i] + Number.EPSILON);\n }\n }\n return factor;\n }\n // Interpolates points without delta values.\n // Needed for the Ø and Q glyphs in Skia.\n // Algorithm from Freetype.\n interpolateMissingDeltas(points, inPoints, hasDelta) {\n if (points.length === 0) return;\n let point = 0;\n while(point < points.length){\n let firstPoint = point;\n // find the end point of the contour\n let endPoint = point;\n let pt = points[endPoint];\n while(!pt.endContour)pt = points[++endPoint];\n // find the first point that has a delta\n while(point <= endPoint && !hasDelta[point])point++;\n if (point > endPoint) continue;\n let firstDelta = point;\n let curDelta = point;\n point++;\n while(point <= endPoint){\n // find the next point with a delta, and interpolate intermediate points\n if (hasDelta[point]) {\n this.deltaInterpolate(curDelta + 1, point - 1, curDelta, point, inPoints, points);\n curDelta = point;\n }\n point++;\n }\n // shift contour if we only have a single delta\n if (curDelta === firstDelta) this.deltaShift(firstPoint, endPoint, curDelta, inPoints, points);\n else {\n // otherwise, handle the remaining points at the end and beginning of the contour\n this.deltaInterpolate(curDelta + 1, endPoint, curDelta, firstDelta, inPoints, points);\n if (firstDelta > 0) this.deltaInterpolate(firstPoint, firstDelta - 1, curDelta, firstDelta, inPoints, points);\n }\n point = endPoint + 1;\n }\n }\n deltaInterpolate(p1, p2, ref1, ref2, inPoints, outPoints) {\n if (p1 > p2) return;\n let iterable = [\n 'x',\n 'y'\n ];\n for(let i = 0; i < iterable.length; i++){\n let k = iterable[i];\n if (inPoints[ref1][k] > inPoints[ref2][k]) {\n var p = ref1;\n ref1 = ref2;\n ref2 = p;\n }\n let in1 = inPoints[ref1][k];\n let in2 = inPoints[ref2][k];\n let out1 = outPoints[ref1][k];\n let out2 = outPoints[ref2][k];\n // If the reference points have the same coordinate but different\n // delta, inferred delta is zero. Otherwise interpolate.\n if (in1 !== in2 || out1 === out2) {\n let scale = in1 === in2 ? 0 : (out2 - out1) / (in2 - in1);\n for(let p = p1; p <= p2; p++){\n let out = inPoints[p][k];\n if (out <= in1) out += out1 - in1;\n else if (out >= in2) out += out2 - in2;\n else out = out1 + (out - in1) * scale;\n outPoints[p][k] = out;\n }\n }\n }\n }\n deltaShift(p1, p2, ref, inPoints, outPoints) {\n let deltaX = outPoints[ref].x - inPoints[ref].x;\n let deltaY = outPoints[ref].y - inPoints[ref].y;\n if (deltaX === 0 && deltaY === 0) return;\n for(let p = p1; p <= p2; p++)if (p !== ref) {\n outPoints[p].x += deltaX;\n outPoints[p].y += deltaY;\n }\n }\n getAdvanceAdjustment(gid, table) {\n let outerIndex, innerIndex;\n if (table.advanceWidthMapping) {\n let idx = gid;\n if (idx >= table.advanceWidthMapping.mapCount) idx = table.advanceWidthMapping.mapCount - 1;\n let entryFormat = table.advanceWidthMapping.entryFormat;\n ({ outerIndex: outerIndex, innerIndex: innerIndex } = table.advanceWidthMapping.mapData[idx]);\n } else {\n outerIndex = 0;\n innerIndex = gid;\n }\n return this.getDelta(table.itemVariationStore, outerIndex, innerIndex);\n }\n // See pseudo code from `Font Variations Overview'\n // in the OpenType specification.\n getDelta(itemStore, outerIndex, innerIndex) {\n if (outerIndex >= itemStore.itemVariationData.length) return 0;\n let varData = itemStore.itemVariationData[outerIndex];\n if (innerIndex >= varData.deltaSets.length) return 0;\n let deltaSet = varData.deltaSets[innerIndex];\n let blendVector = this.getBlendVector(itemStore, outerIndex);\n let netAdjustment = 0;\n for(let master = 0; master < varData.regionIndexCount; master++)netAdjustment += deltaSet.deltas[master] * blendVector[master];\n return netAdjustment;\n }\n getBlendVector(itemStore, outerIndex) {\n let varData = itemStore.itemVariationData[outerIndex];\n if (this.blendVectors.has(varData)) return this.blendVectors.get(varData);\n let normalizedCoords = this.normalizedCoords;\n let blendVector = [];\n // outer loop steps through master designs to be blended\n for(let master = 0; master < varData.regionIndexCount; master++){\n let scalar = 1;\n let regionIndex = varData.regionIndexes[master];\n let axes = itemStore.variationRegionList.variationRegions[regionIndex];\n // inner loop steps through axes in this region\n for(let j = 0; j < axes.length; j++){\n let axis = axes[j];\n let axisScalar;\n // compute the scalar contribution of this axis\n // ignore invalid ranges\n if (axis.startCoord > axis.peakCoord || axis.peakCoord > axis.endCoord) axisScalar = 1;\n else if (axis.startCoord < 0 && axis.endCoord > 0 && axis.peakCoord !== 0) axisScalar = 1;\n else if (axis.peakCoord === 0) axisScalar = 1;\n else if (normalizedCoords[j] < axis.startCoord || normalizedCoords[j] > axis.endCoord) axisScalar = 0;\n else {\n if (normalizedCoords[j] === axis.peakCoord) axisScalar = 1;\n else if (normalizedCoords[j] < axis.peakCoord) axisScalar = (normalizedCoords[j] - axis.startCoord + Number.EPSILON) / (axis.peakCoord - axis.startCoord + Number.EPSILON);\n else axisScalar = (axis.endCoord - normalizedCoords[j] + Number.EPSILON) / (axis.endCoord - axis.peakCoord + Number.EPSILON);\n }\n // take product of all the axis scalars\n scalar *= axisScalar;\n }\n blendVector[master] = scalar;\n }\n this.blendVectors.set(varData, blendVector);\n return blendVector;\n }\n constructor(font, coords){\n this.font = font;\n this.normalizedCoords = this.normalizeCoords(coords);\n this.blendVectors = new Map;\n }\n}\n\n\n\n\nconst $5cc7476da92df375$var$resolved = Promise.resolve();\nclass $5cc7476da92df375$export$2e2bcd8739ae039 {\n includeGlyph(glyph) {\n if (typeof glyph === 'object') glyph = glyph.id;\n if (this.mapping[glyph] == null) {\n this.glyphs.push(glyph);\n this.mapping[glyph] = this.glyphs.length - 1;\n }\n return this.mapping[glyph];\n }\n constructor(font){\n this.font = font;\n this.glyphs = [];\n this.mapping = {};\n // always include the missing glyph\n this.includeGlyph(0);\n }\n}\n\n\n\n\n\n// Flags for simple glyphs\nconst $807e58506be70005$var$ON_CURVE = 1;\nconst $807e58506be70005$var$X_SHORT_VECTOR = 2;\nconst $807e58506be70005$var$Y_SHORT_VECTOR = 4;\nconst $807e58506be70005$var$REPEAT = 8;\nconst $807e58506be70005$var$SAME_X = 16;\nconst $807e58506be70005$var$SAME_Y = 32;\nclass $807e58506be70005$var$Point {\n static size(val) {\n return val >= 0 && val <= 255 ? 1 : 2;\n }\n static encode(stream, value) {\n if (value >= 0 && value <= 255) stream.writeUInt8(value);\n else stream.writeInt16BE(value);\n }\n}\nlet $807e58506be70005$var$Glyf = new $6uUbQ$Struct({\n numberOfContours: $6uUbQ$int16,\n xMin: $6uUbQ$int16,\n yMin: $6uUbQ$int16,\n xMax: $6uUbQ$int16,\n yMax: $6uUbQ$int16,\n endPtsOfContours: new $6uUbQ$Array($6uUbQ$uint16, 'numberOfContours'),\n instructions: new $6uUbQ$Array($6uUbQ$uint8, $6uUbQ$uint16),\n flags: new $6uUbQ$Array($6uUbQ$uint8, 0),\n xPoints: new $6uUbQ$Array($807e58506be70005$var$Point, 0),\n yPoints: new $6uUbQ$Array($807e58506be70005$var$Point, 0)\n});\nclass $807e58506be70005$export$2e2bcd8739ae039 {\n encodeSimple(path, instructions = []) {\n let endPtsOfContours = [];\n let xPoints = [];\n let yPoints = [];\n let flags = [];\n let same = 0;\n let lastX = 0, lastY = 0, lastFlag = 0;\n let pointCount = 0;\n for(let i = 0; i < path.commands.length; i++){\n let c = path.commands[i];\n for(let j = 0; j < c.args.length; j += 2){\n let x = c.args[j];\n let y = c.args[j + 1];\n let flag = 0;\n // If the ending point of a quadratic curve is the midpoint\n // between the control point and the control point of the next\n // quadratic curve, we can omit the ending point.\n if (c.command === 'quadraticCurveTo' && j === 2) {\n let next = path.commands[i + 1];\n if (next && next.command === 'quadraticCurveTo') {\n let midX = (lastX + next.args[0]) / 2;\n let midY = (lastY + next.args[1]) / 2;\n if (x === midX && y === midY) continue;\n }\n }\n // All points except control points are on curve.\n if (!(c.command === 'quadraticCurveTo' && j === 0)) flag |= $807e58506be70005$var$ON_CURVE;\n flag = this._encodePoint(x, lastX, xPoints, flag, $807e58506be70005$var$X_SHORT_VECTOR, $807e58506be70005$var$SAME_X);\n flag = this._encodePoint(y, lastY, yPoints, flag, $807e58506be70005$var$Y_SHORT_VECTOR, $807e58506be70005$var$SAME_Y);\n if (flag === lastFlag && same < 255) {\n flags[flags.length - 1] |= $807e58506be70005$var$REPEAT;\n same++;\n } else {\n if (same > 0) {\n flags.push(same);\n same = 0;\n }\n flags.push(flag);\n lastFlag = flag;\n }\n lastX = x;\n lastY = y;\n pointCount++;\n }\n if (c.command === 'closePath') endPtsOfContours.push(pointCount - 1);\n }\n // Close the path if the last command didn't already\n if (path.commands.length > 1 && path.commands[path.commands.length - 1].command !== 'closePath') endPtsOfContours.push(pointCount - 1);\n let bbox = path.bbox;\n let glyf = {\n numberOfContours: endPtsOfContours.length,\n xMin: bbox.minX,\n yMin: bbox.minY,\n xMax: bbox.maxX,\n yMax: bbox.maxY,\n endPtsOfContours: endPtsOfContours,\n instructions: instructions,\n flags: flags,\n xPoints: xPoints,\n yPoints: yPoints\n };\n let size = $807e58506be70005$var$Glyf.size(glyf);\n let tail = 4 - size % 4;\n let stream = new $6uUbQ$EncodeStream(size + tail);\n $807e58506be70005$var$Glyf.encode(stream, glyf);\n // Align to 4-byte length\n if (tail !== 0) stream.fill(0, tail);\n return stream.buffer;\n }\n _encodePoint(value, last, points, flag, shortFlag, sameFlag) {\n let diff = value - last;\n if (value === last) flag |= sameFlag;\n else {\n if (-255 <= diff && diff <= 255) {\n flag |= shortFlag;\n if (diff < 0) diff = -diff;\n else flag |= sameFlag;\n }\n points.push(diff);\n }\n return flag;\n }\n}\n\n\nclass $4abbb6a5dbdc441a$export$2e2bcd8739ae039 extends (0, $5cc7476da92df375$export$2e2bcd8739ae039) {\n _addGlyph(gid) {\n let glyph = this.font.getGlyph(gid);\n let glyf = glyph._decode();\n // get the offset to the glyph from the loca table\n let curOffset = this.font.loca.offsets[gid];\n let nextOffset = this.font.loca.offsets[gid + 1];\n let stream = this.font._getTableStream('glyf');\n stream.pos += curOffset;\n let buffer = stream.readBuffer(nextOffset - curOffset);\n // if it is a compound glyph, include its components\n if (glyf && glyf.numberOfContours < 0) {\n buffer = new Uint8Array(buffer);\n let view = new DataView(buffer.buffer);\n for (let component of glyf.components){\n gid = this.includeGlyph(component.glyphID);\n view.setUint16(component.pos, gid);\n }\n } else if (glyf && this.font._variationProcessor) // If this is a TrueType variation glyph, re-encode the path\n buffer = this.glyphEncoder.encodeSimple(glyph.path, glyf.instructions);\n this.glyf.push(buffer);\n this.loca.offsets.push(this.offset);\n this.hmtx.metrics.push({\n advance: glyph.advanceWidth,\n bearing: glyph._getMetrics().leftBearing\n });\n this.offset += buffer.length;\n return this.glyf.length - 1;\n }\n encode() {\n // tables required by PDF spec:\n // head, hhea, loca, maxp, cvt , prep, glyf, hmtx, fpgm\n //\n // additional tables required for standalone fonts:\n // name, cmap, OS/2, post\n this.glyf = [];\n this.offset = 0;\n this.loca = {\n offsets: [],\n version: this.font.loca.version\n };\n this.hmtx = {\n metrics: [],\n bearings: []\n };\n // include all the glyphs\n // not using a for loop because we need to support adding more\n // glyphs to the array as we go, and CoffeeScript caches the length.\n let i = 0;\n while(i < this.glyphs.length)this._addGlyph(this.glyphs[i++]);\n let maxp = (0, $6uUbQ$clone)(this.font.maxp);\n maxp.numGlyphs = this.glyf.length;\n this.loca.offsets.push(this.offset);\n let head = (0, $6uUbQ$clone)(this.font.head);\n head.indexToLocFormat = this.loca.version;\n let hhea = (0, $6uUbQ$clone)(this.font.hhea);\n hhea.numberOfMetrics = this.hmtx.metrics.length;\n // map = []\n // for index in [0...256]\n // if index < @numGlyphs\n // map[index] = index\n // else\n // map[index] = 0\n //\n // cmapTable =\n // version: 0\n // length: 262\n // language: 0\n // codeMap: map\n //\n // cmap =\n // version: 0\n // numSubtables: 1\n // tables: [\n // platformID: 1\n // encodingID: 0\n // table: cmapTable\n // ]\n // TODO: subset prep, cvt, fpgm?\n return (0, $816c07a04b6dba87$export$2e2bcd8739ae039).toBuffer({\n tables: {\n head: head,\n hhea: hhea,\n loca: this.loca,\n maxp: maxp,\n 'cvt ': this.font['cvt '],\n prep: this.font.prep,\n glyf: this.glyf,\n hmtx: this.hmtx,\n fpgm: this.font.fpgm\n }\n });\n }\n constructor(font){\n super(font);\n this.glyphEncoder = new (0, $807e58506be70005$export$2e2bcd8739ae039);\n }\n}\n\n\n\n\n\n\nclass $001d739428a71d5a$export$2e2bcd8739ae039 extends (0, $5cc7476da92df375$export$2e2bcd8739ae039) {\n subsetCharstrings() {\n this.charstrings = [];\n let gsubrs = {};\n for (let gid of this.glyphs){\n this.charstrings.push(this.cff.getCharString(gid));\n let glyph = this.font.getGlyph(gid);\n let path = glyph.path; // this causes the glyph to be parsed\n for(let subr in glyph._usedGsubrs)gsubrs[subr] = true;\n }\n this.gsubrs = this.subsetSubrs(this.cff.globalSubrIndex, gsubrs);\n }\n subsetSubrs(subrs, used) {\n let res = [];\n for(let i = 0; i < subrs.length; i++){\n let subr = subrs[i];\n if (used[i]) {\n this.cff.stream.pos = subr.offset;\n res.push(this.cff.stream.readBuffer(subr.length));\n } else res.push(new Uint8Array([\n 11\n ])); // return\n }\n return res;\n }\n subsetFontdict(topDict) {\n topDict.FDArray = [];\n topDict.FDSelect = {\n version: 0,\n fds: []\n };\n let used_fds = {};\n let used_subrs = [];\n let fd_select = {};\n for (let gid of this.glyphs){\n let fd = this.cff.fdForGlyph(gid);\n if (fd == null) continue;\n if (!used_fds[fd]) {\n topDict.FDArray.push(Object.assign({}, this.cff.topDict.FDArray[fd]));\n used_subrs.push({});\n fd_select[fd] = topDict.FDArray.length - 1;\n }\n used_fds[fd] = true;\n topDict.FDSelect.fds.push(fd_select[fd]);\n let glyph = this.font.getGlyph(gid);\n let path = glyph.path; // this causes the glyph to be parsed\n for(let subr in glyph._usedSubrs)used_subrs[fd_select[fd]][subr] = true;\n }\n for(let i = 0; i < topDict.FDArray.length; i++){\n let dict = topDict.FDArray[i];\n delete dict.FontName;\n if (dict.Private && dict.Private.Subrs) {\n dict.Private = Object.assign({}, dict.Private);\n dict.Private.Subrs = this.subsetSubrs(dict.Private.Subrs, used_subrs[i]);\n }\n }\n return;\n }\n createCIDFontdict(topDict) {\n let used_subrs = {};\n for (let gid of this.glyphs){\n let glyph = this.font.getGlyph(gid);\n let path = glyph.path; // this causes the glyph to be parsed\n for(let subr in glyph._usedSubrs)used_subrs[subr] = true;\n }\n let privateDict = Object.assign({}, this.cff.topDict.Private);\n if (this.cff.topDict.Private && this.cff.topDict.Private.Subrs) privateDict.Subrs = this.subsetSubrs(this.cff.topDict.Private.Subrs, used_subrs);\n topDict.FDArray = [\n {\n Private: privateDict\n }\n ];\n return topDict.FDSelect = {\n version: 3,\n nRanges: 1,\n ranges: [\n {\n first: 0,\n fd: 0\n }\n ],\n sentinel: this.charstrings.length\n };\n }\n addString(string) {\n if (!string) return null;\n if (!this.strings) this.strings = [];\n this.strings.push(string);\n return (0, $229224aec43783c5$export$2e2bcd8739ae039).length + this.strings.length - 1;\n }\n encode() {\n this.subsetCharstrings();\n let charset = {\n version: this.charstrings.length > 255 ? 2 : 1,\n ranges: [\n {\n first: 1,\n nLeft: this.charstrings.length - 2\n }\n ]\n };\n let topDict = Object.assign({}, this.cff.topDict);\n topDict.Private = null;\n topDict.charset = charset;\n topDict.Encoding = null;\n topDict.CharStrings = this.charstrings;\n for (let key of [\n 'version',\n 'Notice',\n 'Copyright',\n 'FullName',\n 'FamilyName',\n 'Weight',\n 'PostScript',\n 'BaseFontName',\n 'FontName'\n ])topDict[key] = this.addString(this.cff.string(topDict[key]));\n topDict.ROS = [\n this.addString('Adobe'),\n this.addString('Identity'),\n 0\n ];\n topDict.CIDCount = this.charstrings.length;\n if (this.cff.isCIDFont) this.subsetFontdict(topDict);\n else this.createCIDFontdict(topDict);\n let top = {\n version: 1,\n hdrSize: this.cff.hdrSize,\n offSize: 4,\n header: this.cff.header,\n nameIndex: [\n this.cff.postscriptName\n ],\n topDictIndex: [\n topDict\n ],\n stringIndex: this.strings,\n globalSubrIndex: this.gsubrs\n };\n return (0, $b84fd3dd9d8eddb2$export$2e2bcd8739ae039).toBuffer(top);\n }\n constructor(font){\n super(font);\n this.cff = this.font['CFF '];\n if (!this.cff) throw new Error('Not a CFF Font');\n }\n}\n\n\n\n\nclass $4c1709dee528ea76$export$2e2bcd8739ae039 {\n static probe(buffer) {\n let format = (0, $12727730ddfc8bfe$export$3d28c1996ced1f14).decode(buffer.slice(0, 4));\n return format === 'true' || format === 'OTTO' || format === String.fromCharCode(0, 1, 0, 0);\n }\n setDefaultLanguage(lang = null) {\n this.defaultLanguage = lang;\n }\n _getTable(table) {\n if (!(table.tag in this._tables)) try {\n this._tables[table.tag] = this._decodeTable(table);\n } catch (e) {\n if ($d636bc798e7178db$export$bd5c5d8b8dcafd78) {\n console.error(`Error decoding table ${table.tag}`);\n console.error(e.stack);\n }\n }\n return this._tables[table.tag];\n }\n _getTableStream(tag) {\n let table = this.directory.tables[tag];\n if (table) {\n this.stream.pos = table.offset;\n return this.stream;\n }\n return null;\n }\n _decodeDirectory() {\n return this.directory = (0, $816c07a04b6dba87$export$2e2bcd8739ae039).decode(this.stream, {\n _startOffset: 0\n });\n }\n _decodeTable(table) {\n let pos = this.stream.pos;\n let stream = this._getTableStream(table.tag);\n let result = (0, $c3395722bea751e2$export$2e2bcd8739ae039)[table.tag].decode(stream, this, table.length);\n this.stream.pos = pos;\n return result;\n }\n /**\n * Gets a string from the font's `name` table\n * `lang` is a BCP-47 language code.\n * @return {string}\n */ getName(key, lang = this.defaultLanguage || $d636bc798e7178db$export$42940898df819940) {\n let record = this.name && this.name.records[key];\n if (record) // Attempt to retrieve the entry, depending on which translation is available:\n return record[lang] || record[this.defaultLanguage] || record[$d636bc798e7178db$export$42940898df819940] || record['en'] || record[Object.keys(record)[0]] // Seriously, ANY language would be fine\n || null;\n return null;\n }\n /**\n * The unique PostScript name for this font, e.g. \"Helvetica-Bold\"\n * @type {string}\n */ get postscriptName() {\n return this.getName('postscriptName');\n }\n /**\n * The font's full name, e.g. \"Helvetica Bold\"\n * @type {string}\n */ get fullName() {\n return this.getName('fullName');\n }\n /**\n * The font's family name, e.g. \"Helvetica\"\n * @type {string}\n */ get familyName() {\n return this.getName('fontFamily');\n }\n /**\n * The font's sub-family, e.g. \"Bold\".\n * @type {string}\n */ get subfamilyName() {\n return this.getName('fontSubfamily');\n }\n /**\n * The font's copyright information\n * @type {string}\n */ get copyright() {\n return this.getName('copyright');\n }\n /**\n * The font's version number\n * @type {string}\n */ get version() {\n return this.getName('version');\n }\n /**\n * The font’s [ascender](https://en.wikipedia.org/wiki/Ascender_(typography))\n * @type {number}\n */ get ascent() {\n return this.hhea.ascent;\n }\n /**\n * The font’s [descender](https://en.wikipedia.org/wiki/Descender)\n * @type {number}\n */ get descent() {\n return this.hhea.descent;\n }\n /**\n * The amount of space that should be included between lines\n * @type {number}\n */ get lineGap() {\n return this.hhea.lineGap;\n }\n /**\n * The offset from the normal underline position that should be used\n * @type {number}\n */ get underlinePosition() {\n return this.post.underlinePosition;\n }\n /**\n * The weight of the underline that should be used\n * @type {number}\n */ get underlineThickness() {\n return this.post.underlineThickness;\n }\n /**\n * If this is an italic font, the angle the cursor should be drawn at to match the font design\n * @type {number}\n */ get italicAngle() {\n return this.post.italicAngle;\n }\n /**\n * The height of capital letters above the baseline.\n * See [here](https://en.wikipedia.org/wiki/Cap_height) for more details.\n * @type {number}\n */ get capHeight() {\n let os2 = this['OS/2'];\n return os2 ? os2.capHeight : this.ascent;\n }\n /**\n * The height of lower case letters in the font.\n * See [here](https://en.wikipedia.org/wiki/X-height) for more details.\n * @type {number}\n */ get xHeight() {\n let os2 = this['OS/2'];\n return os2 ? os2.xHeight : 0;\n }\n /**\n * The number of glyphs in the font.\n * @type {number}\n */ get numGlyphs() {\n return this.maxp.numGlyphs;\n }\n /**\n * The size of the font’s internal coordinate grid\n * @type {number}\n */ get unitsPerEm() {\n return this.head.unitsPerEm;\n }\n /**\n * The font’s bounding box, i.e. the box that encloses all glyphs in the font.\n * @type {BBox}\n */ get bbox() {\n return Object.freeze(new (0, $f34600ab9d7f70d8$export$2e2bcd8739ae039)(this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax));\n }\n get _cmapProcessor() {\n return new (0, $f08dd41ef10b694c$export$2e2bcd8739ae039)(this.cmap);\n }\n /**\n * An array of all of the unicode code points supported by the font.\n * @type {number[]}\n */ get characterSet() {\n return this._cmapProcessor.getCharacterSet();\n }\n /**\n * Returns whether there is glyph in the font for the given unicode code point.\n *\n * @param {number} codePoint\n * @return {boolean}\n */ hasGlyphForCodePoint(codePoint) {\n return !!this._cmapProcessor.lookup(codePoint);\n }\n /**\n * Maps a single unicode code point to a Glyph object.\n * Does not perform any advanced substitutions (there is no context to do so).\n *\n * @param {number} codePoint\n * @return {Glyph}\n */ glyphForCodePoint(codePoint) {\n return this.getGlyph(this._cmapProcessor.lookup(codePoint), [\n codePoint\n ]);\n }\n /**\n * Returns an array of Glyph objects for the given string.\n * This is only a one-to-one mapping from characters to glyphs.\n * For most uses, you should use font.layout (described below), which\n * provides a much more advanced mapping supporting AAT and OpenType shaping.\n *\n * @param {string} string\n * @return {Glyph[]}\n */ glyphsForString(string) {\n let glyphs = [];\n let len = string.length;\n let idx = 0;\n let last = -1;\n let state = -1;\n while(idx <= len){\n let code = 0;\n let nextState = 0;\n if (idx < len) {\n // Decode the next codepoint from UTF 16\n code = string.charCodeAt(idx++);\n if (0xd800 <= code && code <= 0xdbff && idx < len) {\n let next = string.charCodeAt(idx);\n if (0xdc00 <= next && next <= 0xdfff) {\n idx++;\n code = ((code & 0x3ff) << 10) + (next & 0x3ff) + 0x10000;\n }\n }\n // Compute the next state: 1 if the next codepoint is a variation selector, 0 otherwise.\n nextState = 0xfe00 <= code && code <= 0xfe0f || 0xe0100 <= code && code <= 0xe01ef ? 1 : 0;\n } else idx++;\n if (state === 0 && nextState === 1) // Variation selector following normal codepoint.\n glyphs.push(this.getGlyph(this._cmapProcessor.lookup(last, code), [\n last,\n code\n ]));\n else if (state === 0 && nextState === 0) // Normal codepoint following normal codepoint.\n glyphs.push(this.glyphForCodePoint(last));\n last = code;\n state = nextState;\n }\n return glyphs;\n }\n get _layoutEngine() {\n return new (0, $4c0a7fa5df7a9ab1$export$2e2bcd8739ae039)(this);\n }\n /**\n * Returns a GlyphRun object, which includes an array of Glyphs and GlyphPositions for the given string.\n *\n * @param {string} string\n * @param {string[]} [userFeatures]\n * @param {string} [script]\n * @param {string} [language]\n * @param {string} [direction]\n * @return {GlyphRun}\n */ layout(string, userFeatures, script, language, direction) {\n return this._layoutEngine.layout(string, userFeatures, script, language, direction);\n }\n /**\n * Returns an array of strings that map to the given glyph id.\n * @param {number} gid - glyph id\n */ stringsForGlyph(gid) {\n return this._layoutEngine.stringsForGlyph(gid);\n }\n /**\n * An array of all [OpenType feature tags](https://www.microsoft.com/typography/otspec/featuretags.htm)\n * (or mapped AAT tags) supported by the font.\n * The features parameter is an array of OpenType feature tags to be applied in addition to the default set.\n * If this is an AAT font, the OpenType feature tags are mapped to AAT features.\n *\n * @type {string[]}\n */ get availableFeatures() {\n return this._layoutEngine.getAvailableFeatures();\n }\n getAvailableFeatures(script, language) {\n return this._layoutEngine.getAvailableFeatures(script, language);\n }\n _getBaseGlyph(glyph, characters = []) {\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.glyf) this._glyphs[glyph] = new (0, $69aac16029968692$export$2e2bcd8739ae039)(glyph, characters, this);\n else if (this.directory.tables['CFF '] || this.directory.tables.CFF2) this._glyphs[glyph] = new (0, $62cc5109c6101893$export$2e2bcd8739ae039)(glyph, characters, this);\n }\n return this._glyphs[glyph] || null;\n }\n /**\n * Returns a glyph object for the given glyph id.\n * You can pass the array of code points this glyph represents for\n * your use later, and it will be stored in the glyph object.\n *\n * @param {number} glyph\n * @param {number[]} characters\n * @return {Glyph}\n */ getGlyph(glyph, characters = []) {\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.sbix) this._glyphs[glyph] = new (0, $25d8f049c222084c$export$2e2bcd8739ae039)(glyph, characters, this);\n else if (this.directory.tables.COLR && this.directory.tables.CPAL) this._glyphs[glyph] = new (0, $0d411f0165859681$export$2e2bcd8739ae039)(glyph, characters, this);\n else this._getBaseGlyph(glyph, characters);\n }\n return this._glyphs[glyph] || null;\n }\n /**\n * Returns a Subset for this font.\n * @return {Subset}\n */ createSubset() {\n if (this.directory.tables['CFF ']) return new (0, $001d739428a71d5a$export$2e2bcd8739ae039)(this);\n return new (0, $4abbb6a5dbdc441a$export$2e2bcd8739ae039)(this);\n }\n /**\n * Returns an object describing the available variation axes\n * that this font supports. Keys are setting tags, and values\n * contain the axis name, range, and default value.\n *\n * @type {object}\n */ get variationAxes() {\n let res = {};\n if (!this.fvar) return res;\n for (let axis of this.fvar.axis)res[axis.axisTag.trim()] = {\n name: axis.name.en,\n min: axis.minValue,\n default: axis.defaultValue,\n max: axis.maxValue\n };\n return res;\n }\n /**\n * Returns an object describing the named variation instances\n * that the font designer has specified. Keys are variation names\n * and values are the variation settings for this instance.\n *\n * @type {object}\n */ get namedVariations() {\n let res = {};\n if (!this.fvar) return res;\n for (let instance of this.fvar.instance){\n let settings = {};\n for(let i = 0; i < this.fvar.axis.length; i++){\n let axis = this.fvar.axis[i];\n settings[axis.axisTag.trim()] = instance.coord[i];\n }\n res[instance.name.en] = settings;\n }\n return res;\n }\n /**\n * Returns a new font with the given variation settings applied.\n * Settings can either be an instance name, or an object containing\n * variation tags as specified by the `variationAxes` property.\n *\n * @param {object} settings\n * @return {TTFFont}\n */ getVariation(settings) {\n if (!(this.directory.tables.fvar && (this.directory.tables.gvar && this.directory.tables.glyf || this.directory.tables.CFF2))) throw new Error('Variations require a font with the fvar, gvar and glyf, or CFF2 tables.');\n if (typeof settings === 'string') settings = this.namedVariations[settings];\n if (typeof settings !== 'object') throw new Error('Variation settings must be either a variation name or settings object.');\n // normalize the coordinates\n let coords = this.fvar.axis.map((axis, i)=>{\n let axisTag = axis.axisTag.trim();\n if (axisTag in settings) return Math.max(axis.minValue, Math.min(axis.maxValue, settings[axisTag]));\n else return axis.defaultValue;\n });\n let stream = new $6uUbQ$DecodeStream(this.stream.buffer);\n stream.pos = this._directoryPos;\n let font = new $4c1709dee528ea76$export$2e2bcd8739ae039(stream, coords);\n font._tables = this._tables;\n return font;\n }\n get _variationProcessor() {\n if (!this.fvar) return null;\n let variationCoords = this.variationCoords;\n // Ignore if no variation coords and not CFF2\n if (!variationCoords && !this.CFF2) return null;\n if (!variationCoords) variationCoords = this.fvar.axis.map((axis)=>axis.defaultValue);\n return new (0, $0bb840cac04e911b$export$2e2bcd8739ae039)(this, variationCoords);\n }\n // Standardized format plugin API\n getFont(name) {\n return this.getVariation(name);\n }\n constructor(stream, variationCoords = null){\n (0, $6uUbQ$_)(this, \"type\", 'TTF');\n this.defaultLanguage = null;\n this.stream = stream;\n this.variationCoords = variationCoords;\n this._directoryPos = this.stream.pos;\n this._tables = {};\n this._glyphs = {};\n this._decodeDirectory();\n // define properties for each table to lazily parse\n for(let tag in this.directory.tables){\n let table = this.directory.tables[tag];\n if ((0, $c3395722bea751e2$export$2e2bcd8739ae039)[tag] && table.length > 0) Object.defineProperty(this, tag, {\n get: this._getTable.bind(this, table)\n });\n }\n }\n}\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $4c1709dee528ea76$export$2e2bcd8739ae039.prototype, \"bbox\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $4c1709dee528ea76$export$2e2bcd8739ae039.prototype, \"_cmapProcessor\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $4c1709dee528ea76$export$2e2bcd8739ae039.prototype, \"characterSet\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $4c1709dee528ea76$export$2e2bcd8739ae039.prototype, \"_layoutEngine\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $4c1709dee528ea76$export$2e2bcd8739ae039.prototype, \"variationAxes\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $4c1709dee528ea76$export$2e2bcd8739ae039.prototype, \"namedVariations\", null);\n(0, $6uUbQ$_1)([\n (0, $e71565f2ce09cb6b$export$69a3209f1a06c04d)\n], $4c1709dee528ea76$export$2e2bcd8739ae039.prototype, \"_variationProcessor\", null);\n\n\n\n\n\n\nlet $c1726355ecc5b889$var$WOFFDirectoryEntry = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n offset: new $6uUbQ$Pointer($6uUbQ$uint32, 'void', {\n type: 'global'\n }),\n compLength: $6uUbQ$uint32,\n length: $6uUbQ$uint32,\n origChecksum: $6uUbQ$uint32\n});\nlet $c1726355ecc5b889$var$WOFFDirectory = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n flavor: $6uUbQ$uint32,\n length: $6uUbQ$uint32,\n numTables: $6uUbQ$uint16,\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n totalSfntSize: $6uUbQ$uint32,\n majorVersion: $6uUbQ$uint16,\n minorVersion: $6uUbQ$uint16,\n metaOffset: $6uUbQ$uint32,\n metaLength: $6uUbQ$uint32,\n metaOrigLength: $6uUbQ$uint32,\n privOffset: $6uUbQ$uint32,\n privLength: $6uUbQ$uint32,\n tables: new $6uUbQ$Array($c1726355ecc5b889$var$WOFFDirectoryEntry, 'numTables')\n});\n$c1726355ecc5b889$var$WOFFDirectory.process = function() {\n let tables = {};\n for (let table of this.tables)tables[table.tag] = table;\n this.tables = tables;\n};\nvar $c1726355ecc5b889$export$2e2bcd8739ae039 = $c1726355ecc5b889$var$WOFFDirectory;\n\n\n\n\n\n\nclass $760785214b9fc52c$export$2e2bcd8739ae039 extends (0, $4c1709dee528ea76$export$2e2bcd8739ae039) {\n static probe(buffer) {\n return (0, $12727730ddfc8bfe$export$3d28c1996ced1f14).decode(buffer.slice(0, 4)) === 'wOFF';\n }\n _decodeDirectory() {\n this.directory = (0, $c1726355ecc5b889$export$2e2bcd8739ae039).decode(this.stream, {\n _startOffset: 0\n });\n }\n _getTableStream(tag) {\n let table = this.directory.tables[tag];\n if (table) {\n this.stream.pos = table.offset;\n if (table.compLength < table.length) {\n this.stream.pos += 2; // skip deflate header\n let outBuffer = new Uint8Array(table.length);\n let buf = (0, $6uUbQ$tinyinflate)(this.stream.readBuffer(table.compLength - 2), outBuffer);\n return new $6uUbQ$DecodeStream(buf);\n } else return this.stream;\n }\n return null;\n }\n constructor(...args){\n super(...args);\n (0, $6uUbQ$_)(this, \"type\", 'WOFF');\n }\n}\n\n\n\n\n\n\n\n\n\nclass $8046190c9f1ad19e$export$2e2bcd8739ae039 extends (0, $69aac16029968692$export$2e2bcd8739ae039) {\n _decode() {\n // We have to decode in advance (in WOFF2Font), so just return the pre-decoded data.\n return this._font._transformedGlyphs[this.id];\n }\n _getCBox() {\n return this.path.bbox;\n }\n constructor(...args){\n super(...args);\n (0, $6uUbQ$_)(this, \"type\", 'WOFF2');\n }\n}\n\n\n\nconst $c28ec7bbb3b8de3a$var$Base128 = {\n decode (stream) {\n let result = 0;\n let iterable = [\n 0,\n 1,\n 2,\n 3,\n 4\n ];\n for(let j = 0; j < iterable.length; j++){\n let i = iterable[j];\n let code = stream.readUInt8();\n // If any of the top seven bits are set then we're about to overflow.\n if (result & 0xe0000000) throw new Error('Overflow');\n result = result << 7 | code & 0x7f;\n if ((code & 0x80) === 0) return result;\n }\n throw new Error('Bad base 128 number');\n }\n};\nlet $c28ec7bbb3b8de3a$var$knownTags = [\n 'cmap',\n 'head',\n 'hhea',\n 'hmtx',\n 'maxp',\n 'name',\n 'OS/2',\n 'post',\n 'cvt ',\n 'fpgm',\n 'glyf',\n 'loca',\n 'prep',\n 'CFF ',\n 'VORG',\n 'EBDT',\n 'EBLC',\n 'gasp',\n 'hdmx',\n 'kern',\n 'LTSH',\n 'PCLT',\n 'VDMX',\n 'vhea',\n 'vmtx',\n 'BASE',\n 'GDEF',\n 'GPOS',\n 'GSUB',\n 'EBSC',\n 'JSTF',\n 'MATH',\n 'CBDT',\n 'CBLC',\n 'COLR',\n 'CPAL',\n 'SVG ',\n 'sbix',\n 'acnt',\n 'avar',\n 'bdat',\n 'bloc',\n 'bsln',\n 'cvar',\n 'fdsc',\n 'feat',\n 'fmtx',\n 'fvar',\n 'gvar',\n 'hsty',\n 'just',\n 'lcar',\n 'mort',\n 'morx',\n 'opbd',\n 'prop',\n 'trak',\n 'Zapf',\n 'Silf',\n 'Glat',\n 'Gloc',\n 'Feat',\n 'Sill'\n];\nlet $c28ec7bbb3b8de3a$var$WOFF2DirectoryEntry = new $6uUbQ$Struct({\n flags: $6uUbQ$uint8,\n customTag: new $6uUbQ$Optional(new $6uUbQ$String(4), (t)=>(t.flags & 0x3f) === 0x3f),\n tag: (t)=>t.customTag || $c28ec7bbb3b8de3a$var$knownTags[t.flags & 0x3f],\n length: $c28ec7bbb3b8de3a$var$Base128,\n transformVersion: (t)=>t.flags >>> 6 & 0x03,\n transformed: (t)=>t.tag === 'glyf' || t.tag === 'loca' ? t.transformVersion === 0 : t.transformVersion !== 0,\n transformLength: new $6uUbQ$Optional($c28ec7bbb3b8de3a$var$Base128, (t)=>t.transformed)\n});\nlet $c28ec7bbb3b8de3a$var$WOFF2Directory = new $6uUbQ$Struct({\n tag: new $6uUbQ$String(4),\n flavor: $6uUbQ$uint32,\n length: $6uUbQ$uint32,\n numTables: $6uUbQ$uint16,\n reserved: new $6uUbQ$Reserved($6uUbQ$uint16),\n totalSfntSize: $6uUbQ$uint32,\n totalCompressedSize: $6uUbQ$uint32,\n majorVersion: $6uUbQ$uint16,\n minorVersion: $6uUbQ$uint16,\n metaOffset: $6uUbQ$uint32,\n metaLength: $6uUbQ$uint32,\n metaOrigLength: $6uUbQ$uint32,\n privOffset: $6uUbQ$uint32,\n privLength: $6uUbQ$uint32,\n tables: new $6uUbQ$Array($c28ec7bbb3b8de3a$var$WOFF2DirectoryEntry, 'numTables')\n});\n$c28ec7bbb3b8de3a$var$WOFF2Directory.process = function() {\n let tables = {};\n for(let i = 0; i < this.tables.length; i++){\n let table = this.tables[i];\n tables[table.tag] = table;\n }\n return this.tables = tables;\n};\nvar $c28ec7bbb3b8de3a$export$2e2bcd8739ae039 = $c28ec7bbb3b8de3a$var$WOFF2Directory;\n\n\n\nclass $21ee218f84ac7f32$export$2e2bcd8739ae039 extends (0, $4c1709dee528ea76$export$2e2bcd8739ae039) {\n static probe(buffer) {\n return (0, $12727730ddfc8bfe$export$3d28c1996ced1f14).decode(buffer.slice(0, 4)) === 'wOF2';\n }\n _decodeDirectory() {\n this.directory = (0, $c28ec7bbb3b8de3a$export$2e2bcd8739ae039).decode(this.stream);\n this._dataPos = this.stream.pos;\n }\n _decompress() {\n // decompress data and setup table offsets if we haven't already\n if (!this._decompressed) {\n this.stream.pos = this._dataPos;\n let buffer = this.stream.readBuffer(this.directory.totalCompressedSize);\n let decompressedSize = 0;\n for(let tag in this.directory.tables){\n let entry = this.directory.tables[tag];\n entry.offset = decompressedSize;\n decompressedSize += entry.transformLength != null ? entry.transformLength : entry.length;\n }\n let decompressed = (0, $6uUbQ$brotlidecompressjs)(buffer, decompressedSize);\n if (!decompressed) throw new Error('Error decoding compressed data in WOFF2');\n this.stream = new $6uUbQ$DecodeStream(decompressed);\n this._decompressed = true;\n }\n }\n _decodeTable(table) {\n this._decompress();\n return super._decodeTable(table);\n }\n // Override this method to get a glyph and return our\n // custom subclass if there is a glyf table.\n _getBaseGlyph(glyph, characters = []) {\n if (!this._glyphs[glyph]) {\n if (this.directory.tables.glyf && this.directory.tables.glyf.transformed) {\n if (!this._transformedGlyphs) this._transformGlyfTable();\n return this._glyphs[glyph] = new (0, $8046190c9f1ad19e$export$2e2bcd8739ae039)(glyph, characters, this);\n } else return super._getBaseGlyph(glyph, characters);\n }\n }\n _transformGlyfTable() {\n this._decompress();\n this.stream.pos = this.directory.tables.glyf.offset;\n let table = $21ee218f84ac7f32$var$GlyfTable.decode(this.stream);\n let glyphs = [];\n for(let index = 0; index < table.numGlyphs; index++){\n let glyph = {};\n let nContours = table.nContours.readInt16BE();\n glyph.numberOfContours = nContours;\n if (nContours > 0) {\n let nPoints = [];\n let totalPoints = 0;\n for(let i = 0; i < nContours; i++){\n let r = $21ee218f84ac7f32$var$read255UInt16(table.nPoints);\n totalPoints += r;\n nPoints.push(totalPoints);\n }\n glyph.points = $21ee218f84ac7f32$var$decodeTriplet(table.flags, table.glyphs, totalPoints);\n for(let i = 0; i < nContours; i++)glyph.points[nPoints[i] - 1].endContour = true;\n var instructionSize = $21ee218f84ac7f32$var$read255UInt16(table.glyphs);\n } else if (nContours < 0) {\n let haveInstructions = (0, $69aac16029968692$export$2e2bcd8739ae039).prototype._decodeComposite.call({\n _font: this\n }, glyph, table.composites);\n if (haveInstructions) var instructionSize = $21ee218f84ac7f32$var$read255UInt16(table.glyphs);\n }\n glyphs.push(glyph);\n }\n this._transformedGlyphs = glyphs;\n }\n constructor(...args){\n super(...args);\n (0, $6uUbQ$_)(this, \"type\", 'WOFF2');\n }\n}\n// Special class that accepts a length and returns a sub-stream for that data\nclass $21ee218f84ac7f32$var$Substream {\n decode(stream, parent) {\n return new $6uUbQ$DecodeStream(this._buf.decode(stream, parent));\n }\n constructor(length){\n this.length = length;\n this._buf = new $6uUbQ$Buffer(length);\n }\n}\n// This struct represents the entire glyf table\nlet $21ee218f84ac7f32$var$GlyfTable = new $6uUbQ$Struct({\n version: $6uUbQ$uint32,\n numGlyphs: $6uUbQ$uint16,\n indexFormat: $6uUbQ$uint16,\n nContourStreamSize: $6uUbQ$uint32,\n nPointsStreamSize: $6uUbQ$uint32,\n flagStreamSize: $6uUbQ$uint32,\n glyphStreamSize: $6uUbQ$uint32,\n compositeStreamSize: $6uUbQ$uint32,\n bboxStreamSize: $6uUbQ$uint32,\n instructionStreamSize: $6uUbQ$uint32,\n nContours: new $21ee218f84ac7f32$var$Substream('nContourStreamSize'),\n nPoints: new $21ee218f84ac7f32$var$Substream('nPointsStreamSize'),\n flags: new $21ee218f84ac7f32$var$Substream('flagStreamSize'),\n glyphs: new $21ee218f84ac7f32$var$Substream('glyphStreamSize'),\n composites: new $21ee218f84ac7f32$var$Substream('compositeStreamSize'),\n bboxes: new $21ee218f84ac7f32$var$Substream('bboxStreamSize'),\n instructions: new $21ee218f84ac7f32$var$Substream('instructionStreamSize')\n});\nconst $21ee218f84ac7f32$var$WORD_CODE = 253;\nconst $21ee218f84ac7f32$var$ONE_MORE_BYTE_CODE2 = 254;\nconst $21ee218f84ac7f32$var$ONE_MORE_BYTE_CODE1 = 255;\nconst $21ee218f84ac7f32$var$LOWEST_U_CODE = 253;\nfunction $21ee218f84ac7f32$var$read255UInt16(stream) {\n let code = stream.readUInt8();\n if (code === $21ee218f84ac7f32$var$WORD_CODE) return stream.readUInt16BE();\n if (code === $21ee218f84ac7f32$var$ONE_MORE_BYTE_CODE1) return stream.readUInt8() + $21ee218f84ac7f32$var$LOWEST_U_CODE;\n if (code === $21ee218f84ac7f32$var$ONE_MORE_BYTE_CODE2) return stream.readUInt8() + $21ee218f84ac7f32$var$LOWEST_U_CODE * 2;\n return code;\n}\nfunction $21ee218f84ac7f32$var$withSign(flag, baseval) {\n return flag & 1 ? baseval : -baseval;\n}\nfunction $21ee218f84ac7f32$var$decodeTriplet(flags, glyphs, nPoints) {\n let y;\n let x = y = 0;\n let res = [];\n for(let i = 0; i < nPoints; i++){\n let dx = 0, dy = 0;\n let flag = flags.readUInt8();\n let onCurve = !(flag >> 7);\n flag &= 0x7f;\n if (flag < 10) {\n dx = 0;\n dy = $21ee218f84ac7f32$var$withSign(flag, ((flag & 14) << 7) + glyphs.readUInt8());\n } else if (flag < 20) {\n dx = $21ee218f84ac7f32$var$withSign(flag, ((flag - 10 & 14) << 7) + glyphs.readUInt8());\n dy = 0;\n } else if (flag < 84) {\n var b0 = flag - 20;\n var b1 = glyphs.readUInt8();\n dx = $21ee218f84ac7f32$var$withSign(flag, 1 + (b0 & 0x30) + (b1 >> 4));\n dy = $21ee218f84ac7f32$var$withSign(flag >> 1, 1 + ((b0 & 0x0c) << 2) + (b1 & 0x0f));\n } else if (flag < 120) {\n var b0 = flag - 84;\n dx = $21ee218f84ac7f32$var$withSign(flag, 1 + (b0 / 12 << 8) + glyphs.readUInt8());\n dy = $21ee218f84ac7f32$var$withSign(flag >> 1, 1 + (b0 % 12 >> 2 << 8) + glyphs.readUInt8());\n } else if (flag < 124) {\n var b1 = glyphs.readUInt8();\n let b2 = glyphs.readUInt8();\n dx = $21ee218f84ac7f32$var$withSign(flag, (b1 << 4) + (b2 >> 4));\n dy = $21ee218f84ac7f32$var$withSign(flag >> 1, ((b2 & 0x0f) << 8) + glyphs.readUInt8());\n } else {\n dx = $21ee218f84ac7f32$var$withSign(flag, glyphs.readUInt16BE());\n dy = $21ee218f84ac7f32$var$withSign(flag >> 1, glyphs.readUInt16BE());\n }\n x += dx;\n y += dy;\n res.push(new (0, $69aac16029968692$export$baf26146a414f24a)(onCurve, false, x, y));\n }\n return res;\n}\n\n\n\n\n\n\n\n\nlet $cd5853a56c68fec7$var$TTCHeader = new $6uUbQ$VersionedStruct($6uUbQ$uint32, {\n 0x00010000: {\n numFonts: $6uUbQ$uint32,\n offsets: new $6uUbQ$Array($6uUbQ$uint32, 'numFonts')\n },\n 0x00020000: {\n numFonts: $6uUbQ$uint32,\n offsets: new $6uUbQ$Array($6uUbQ$uint32, 'numFonts'),\n dsigTag: $6uUbQ$uint32,\n dsigLength: $6uUbQ$uint32,\n dsigOffset: $6uUbQ$uint32\n }\n});\nclass $cd5853a56c68fec7$export$2e2bcd8739ae039 {\n static probe(buffer) {\n return (0, $12727730ddfc8bfe$export$3d28c1996ced1f14).decode(buffer.slice(0, 4)) === 'ttcf';\n }\n getFont(name) {\n for (let offset of this.header.offsets){\n let stream = new $6uUbQ$DecodeStream(this.stream.buffer);\n stream.pos = offset;\n let font = new (0, $4c1709dee528ea76$export$2e2bcd8739ae039)(stream);\n if (font.postscriptName === name || font.postscriptName instanceof Uint8Array && name instanceof Uint8Array && font.postscriptName.every((v, i)=>name[i] === v)) return font;\n }\n return null;\n }\n get fonts() {\n let fonts = [];\n for (let offset of this.header.offsets){\n let stream = new $6uUbQ$DecodeStream(this.stream.buffer);\n stream.pos = offset;\n fonts.push(new (0, $4c1709dee528ea76$export$2e2bcd8739ae039)(stream));\n }\n return fonts;\n }\n constructor(stream){\n (0, $6uUbQ$_)(this, \"type\", 'TTC');\n this.stream = stream;\n if (stream.readString(4) !== 'ttcf') throw new Error('Not a TrueType collection');\n this.header = $cd5853a56c68fec7$var$TTCHeader.decode(stream);\n }\n}\n\n\n\n\n\nlet $05f49f930186144e$var$DFontName = new $6uUbQ$String($6uUbQ$uint8);\nlet $05f49f930186144e$var$DFontData = new $6uUbQ$Struct({\n len: $6uUbQ$uint32,\n buf: new $6uUbQ$Buffer('len')\n});\nlet $05f49f930186144e$var$Ref = new $6uUbQ$Struct({\n id: $6uUbQ$uint16,\n nameOffset: $6uUbQ$int16,\n attr: $6uUbQ$uint8,\n dataOffset: $6uUbQ$uint24,\n handle: $6uUbQ$uint32\n});\nlet $05f49f930186144e$var$Type = new $6uUbQ$Struct({\n name: new $6uUbQ$String(4),\n maxTypeIndex: $6uUbQ$uint16,\n refList: new $6uUbQ$Pointer($6uUbQ$uint16, new $6uUbQ$Array($05f49f930186144e$var$Ref, (t)=>t.maxTypeIndex + 1), {\n type: 'parent'\n })\n});\nlet $05f49f930186144e$var$TypeList = new $6uUbQ$Struct({\n length: $6uUbQ$uint16,\n types: new $6uUbQ$Array($05f49f930186144e$var$Type, (t)=>t.length + 1)\n});\nlet $05f49f930186144e$var$DFontMap = new $6uUbQ$Struct({\n reserved: new $6uUbQ$Reserved($6uUbQ$uint8, 24),\n typeList: new $6uUbQ$Pointer($6uUbQ$uint16, $05f49f930186144e$var$TypeList),\n nameListOffset: new $6uUbQ$Pointer($6uUbQ$uint16, 'void')\n});\nlet $05f49f930186144e$var$DFontHeader = new $6uUbQ$Struct({\n dataOffset: $6uUbQ$uint32,\n map: new $6uUbQ$Pointer($6uUbQ$uint32, $05f49f930186144e$var$DFontMap),\n dataLength: $6uUbQ$uint32,\n mapLength: $6uUbQ$uint32\n});\nclass $05f49f930186144e$export$2e2bcd8739ae039 {\n static probe(buffer) {\n let stream = new $6uUbQ$DecodeStream(buffer);\n try {\n var header = $05f49f930186144e$var$DFontHeader.decode(stream);\n } catch (e) {\n return false;\n }\n for (let type of header.map.typeList.types){\n if (type.name === 'sfnt') return true;\n }\n return false;\n }\n getFont(name) {\n if (!this.sfnt) return null;\n for (let ref of this.sfnt.refList){\n let pos = this.header.dataOffset + ref.dataOffset + 4;\n let stream = new $6uUbQ$DecodeStream(this.stream.buffer.slice(pos));\n let font = new (0, $4c1709dee528ea76$export$2e2bcd8739ae039)(stream);\n if (font.postscriptName === name || font.postscriptName instanceof Uint8Array && name instanceof Uint8Array && font.postscriptName.every((v, i)=>name[i] === v)) return font;\n }\n return null;\n }\n get fonts() {\n let fonts = [];\n for (let ref of this.sfnt.refList){\n let pos = this.header.dataOffset + ref.dataOffset + 4;\n let stream = new $6uUbQ$DecodeStream(this.stream.buffer.slice(pos));\n fonts.push(new (0, $4c1709dee528ea76$export$2e2bcd8739ae039)(stream));\n }\n return fonts;\n }\n constructor(stream){\n (0, $6uUbQ$_)(this, \"type\", 'DFont');\n this.stream = stream;\n this.header = $05f49f930186144e$var$DFontHeader.decode(this.stream);\n for (let type of this.header.map.typeList.types){\n for (let ref of type.refList)if (ref.nameOffset >= 0) {\n this.stream.pos = ref.nameOffset + this.header.map.nameListOffset;\n ref.name = $05f49f930186144e$var$DFontName.decode(this.stream);\n } else ref.name = null;\n if (type.name === 'sfnt') this.sfnt = type;\n }\n }\n}\n\n\n// Register font formats\n(0, $d636bc798e7178db$export$36b2f24e97d43be)((0, $4c1709dee528ea76$export$2e2bcd8739ae039));\n(0, $d636bc798e7178db$export$36b2f24e97d43be)((0, $760785214b9fc52c$export$2e2bcd8739ae039));\n(0, $d636bc798e7178db$export$36b2f24e97d43be)((0, $21ee218f84ac7f32$export$2e2bcd8739ae039));\n(0, $d636bc798e7178db$export$36b2f24e97d43be)((0, $cd5853a56c68fec7$export$2e2bcd8739ae039));\n(0, $d636bc798e7178db$export$36b2f24e97d43be)((0, $05f49f930186144e$export$2e2bcd8739ae039));\n\n\nexport {$d636bc798e7178db$export$bd5c5d8b8dcafd78 as logErrors, $d636bc798e7178db$export$36b2f24e97d43be as registerFormat, $d636bc798e7178db$export$185802fd694ee1f5 as create, $d636bc798e7178db$export$42940898df819940 as defaultLanguage, $d636bc798e7178db$export$5157e7780d44cc36 as setDefaultLanguage};\n//# sourceMappingURL=browser-module.mjs.map\n","import 'is-url';\nimport fetch from 'cross-fetch';\nimport * as fontkit from 'fontkit';\n\n/* eslint-disable max-classes-per-file */\n\nconst FONT_WEIGHTS = {\n thin: 100,\n hairline: 100,\n ultralight: 200,\n extralight: 200,\n light: 300,\n normal: 400,\n medium: 500,\n semibold: 600,\n demibold: 600,\n bold: 700,\n ultrabold: 800,\n extrabold: 800,\n heavy: 900,\n black: 900\n};\nconst fetchFont = async (src, options) => {\n const response = await fetch(src, options);\n const data = await response.arrayBuffer();\n return new Uint8Array(data);\n};\nconst isDataUrl = dataUrl => {\n const header = dataUrl.split(',')[0];\n const hasDataPrefix = header.substring(0, 5) === 'data:';\n const hasBase64Prefix = header.split(';')[1] === 'base64';\n return hasDataPrefix && hasBase64Prefix;\n};\nconst resolveFontWeight = value => {\n return typeof value === 'string' ? FONT_WEIGHTS[value] : value;\n};\nconst sortByFontWeight = (a, b) => a.fontWeight - b.fontWeight;\nclass FontSource {\n constructor(src, fontFamily, fontStyle, fontWeight, options) {\n this.src = src;\n this.fontFamily = fontFamily;\n this.fontStyle = fontStyle || 'normal';\n this.fontWeight = fontWeight || 400;\n this.data = null;\n this.options = options;\n this.loadResultPromise = null;\n }\n async _load() {\n const {\n postscriptName\n } = this.options;\n if (isDataUrl(this.src)) {\n const raw = this.src.split(',')[1];\n const uint8Array = new Uint8Array(atob(raw).split('').map(c => c.charCodeAt(0)));\n this.data = fontkit.create(uint8Array, postscriptName);\n } else {\n const {\n headers,\n body,\n method = 'GET'\n } = this.options;\n const data = await fetchFont(this.src, {\n method,\n body,\n headers\n });\n this.data = fontkit.create(data, postscriptName);\n }\n }\n async load() {\n if (this.loadResultPromise === null) {\n this.loadResultPromise = this._load();\n }\n return this.loadResultPromise;\n }\n}\nclass Font {\n static create(family) {\n return new Font(family);\n }\n constructor(family) {\n this.family = family;\n this.sources = [];\n }\n register(_ref) {\n let {\n src,\n fontWeight,\n fontStyle,\n ...options\n } = _ref;\n const numericFontWeight = resolveFontWeight(fontWeight);\n this.sources.push(new FontSource(src, this.family, fontStyle, numericFontWeight, options));\n }\n resolve(descriptor) {\n const {\n fontWeight = 400,\n fontStyle = 'normal'\n } = descriptor;\n const styleSources = this.sources.filter(s => s.fontStyle === fontStyle);\n\n // Weight resolution. https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#Fallback_weights\n const exactFit = styleSources.find(s => s.fontWeight === fontWeight);\n if (exactFit) return exactFit;\n let res;\n if (fontWeight >= 400 && fontWeight <= 500) {\n const leftOffset = styleSources.filter(s => s.fontWeight <= fontWeight);\n const rightOffset = styleSources.filter(s => s.fontWeight > 500);\n const fit = styleSources.filter(s => s.fontWeight >= fontWeight && s.fontWeight < 500);\n res = fit[0] || leftOffset[leftOffset.length - 1] || rightOffset[0];\n }\n const lt = styleSources.filter(s => s.fontWeight < fontWeight).sort(sortByFontWeight);\n const gt = styleSources.filter(s => s.fontWeight > fontWeight).sort(sortByFontWeight);\n if (fontWeight < 400) {\n res = lt[lt.length - 1] || gt[0];\n }\n if (fontWeight > 500) {\n res = gt[0] || lt[lt.length - 1];\n }\n if (!res) {\n throw new Error(\"Could not resolve font for \" + this.family + \", fontWeight \" + fontWeight);\n }\n return res;\n }\n}\n\nvar standard = ['Courier', 'Courier-Bold', 'Courier-Oblique', 'Courier-BoldOblique', 'Helvetica', 'Helvetica-Bold', 'Helvetica-Oblique', 'Helvetica-BoldOblique', 'Times-Roman', 'Times-Bold', 'Times-Italic', 'Times-BoldItalic'];\n\nfunction FontStore() {\n let fonts = {};\n let emojiSource = null;\n let hyphenationCallback = null;\n this.register = data => {\n const {\n family\n } = data;\n if (!fonts[family]) {\n fonts[family] = Font.create(family);\n }\n\n // Bulk loading\n if (data.fonts) {\n for (let i = 0; i < data.fonts.length; i += 1) {\n fonts[family].register({\n family,\n ...data.fonts[i]\n });\n }\n } else {\n fonts[family].register(data);\n }\n };\n this.registerEmojiSource = _ref => {\n let {\n url,\n format = 'png',\n builder,\n withVariationSelectors = false\n } = _ref;\n emojiSource = {\n url,\n format,\n builder,\n withVariationSelectors\n };\n };\n this.registerHyphenationCallback = callback => {\n hyphenationCallback = callback;\n };\n this.getFont = descriptor => {\n const {\n fontFamily\n } = descriptor;\n const isStandard = standard.includes(fontFamily);\n if (isStandard) return null;\n if (!fonts[fontFamily]) {\n throw new Error(\"Font family not registered: \" + fontFamily + \". Please register it calling Font.register() method.\");\n }\n return fonts[fontFamily].resolve(descriptor);\n };\n this.load = async descriptor => {\n const {\n fontFamily\n } = descriptor;\n const fontFamilies = typeof fontFamily === 'string' ? [fontFamily] : [...(fontFamily || [])];\n const promises = [];\n for (let len = fontFamilies.length, i = 0; i < len; i += 1) {\n const family = fontFamilies[i];\n const isStandard = standard.includes(family);\n if (isStandard) return;\n const f = this.getFont({\n ...descriptor,\n fontFamily: family\n });\n promises.push(f.load());\n }\n await Promise.all(promises);\n };\n this.reset = () => {\n const keys = Object.keys(fonts);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n fonts[key].data = null;\n }\n };\n this.clear = () => {\n fonts = {};\n };\n this.getRegisteredFonts = () => fonts;\n this.getEmojiSource = () => emojiSource;\n this.getHyphenationCallback = () => hyphenationCallback;\n this.getRegisteredFontFamilies = () => Object.keys(fonts);\n}\n\nexport { FontStore as default };\n","import _typeof from \"./typeof.js\";\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nexport { _regeneratorRuntime as default };","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import _regeneratorRuntime from '@babel/runtime/helpers/regeneratorRuntime';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\n\n/**\n * Applies a function to the value at the given index of an array\n\n * @param {number} index\n * @param {function} fn\n * @param {array} collection\n * @returns copy of the array with the element at the given index replaced with the result of the function application.\n */\nvar adjust = function adjust(index, fn, collection) {\n var _Object$assign;\n if (index >= 0 && index >= collection.length) return collection;\n if (index < 0 && Math.abs(index) > collection.length) return collection;\n var i = index < 0 ? collection.length + index : index;\n return Object.assign([], collection, (_Object$assign = {}, _Object$assign[i] = fn(collection[i]), _Object$assign));\n};\n\nvar reverse = function reverse(list) {\n return Array.prototype.slice.call(list, 0).reverse();\n};\n\n/**\n * @typedef {Function} AsyncCompose\n * @param {any} value\n * @param {...any} args\n * @returns {any} result\n */\n\n/**\n * Performs right-to-left function composition with async functions support\n *\n * @param {...Function} fns functions\n * @returns {AsyncCompose} composed function\n */\nvar asyncCompose = function asyncCompose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(value) {\n var result,\n reversedFns,\n _len2,\n args,\n _key2,\n i,\n fn,\n _args = arguments;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n result = value;\n reversedFns = reverse(fns);\n for (_len2 = _args.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = _args[_key2];\n }\n i = 0;\n case 4:\n if (!(i < reversedFns.length)) {\n _context.next = 12;\n break;\n }\n fn = reversedFns[i];\n _context.next = 8;\n return fn.apply(void 0, [result].concat(args));\n case 8:\n result = _context.sent;\n case 9:\n i += 1;\n _context.next = 4;\n break;\n case 12:\n return _context.abrupt(\"return\", result);\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n};\n\n/**\n * Capitalize first letter of each word\n *\n * @param {string} value string\n * @returns {string} capitalized string\n */\nvar capitalize = function capitalize(value) {\n if (!value) return value;\n return value.replace(/(^|\\s)\\S/g, function (l) {\n return l.toUpperCase();\n });\n};\n\n/**\n * Casts value to array\n *\n * @template T\n * @param {T|T[]} value value\n * @returns {T[]} array\n */\nvar castArray = function castArray(value) {\n return Array.isArray(value) ? value : [value];\n};\n\n/* eslint-disable no-await-in-loop */\n\n\n/**\n * @typedef {Function} Compose\n * @param {any} value\n * @param {...any} args\n * @returns {any} result\n */\n\n/**\n * Performs right-to-left function composition\n *\n * @param {...Function} fns functions\n * @returns {Compose} composed function\n */\nvar compose = function compose() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return function (value) {\n var result = value;\n var reversedFns = reverse(fns);\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n for (var i = 0; i < reversedFns.length; i += 1) {\n var fn = reversedFns[i];\n result = fn.apply(void 0, [result].concat(args));\n }\n return result;\n };\n};\n\nvar dropLast = function dropLast(array) {\n return array.slice(0, array.length - 1);\n};\n\nvar evolve = function evolve(transformations, object) {\n var result = object instanceof Array ? [] : {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var transformation = transformations[key];\n var type = typeof transformation;\n if (type === 'function') {\n result[key] = transformation(object[key]);\n } else if (transformation && type === 'object') {\n result[key] = evolve(transformation, object[key]);\n } else result[key] = object[key];\n }\n return result;\n};\n\nvar isNil = function isNil(value) {\n return value === null || value === undefined;\n};\n\nvar get = function get(target, path, defaultValue) {\n if (isNil(target)) return defaultValue;\n var _path = castArray(path);\n var result = target;\n for (var i = 0; i < _path.length; i += 1) {\n if (isNil(result)) return undefined;\n result = result[_path[i]];\n }\n return isNil(result) ? defaultValue : result;\n};\n\nvar last = function last(value) {\n return value === '' ? '' : value[value.length - 1];\n};\n\nvar mapValues = function mapValues(object, fn) {\n var entries = Object.entries(object);\n return entries.reduce(function (acc, _ref, index) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = fn(value, key, index);\n return acc;\n }, {});\n};\n\n/**\n * @param {string | number} value\n * @returns {RegExpExecArray | null} match\n */\nvar isPercent = function isPercent(value) {\n return /((-)?\\d+\\.?\\d*)%/g.exec(\"\" + value);\n};\n\n/**\n * Get percentage value of input\n *\n * @param {string | number} value\n * @returns {{ percent: number, value: number } | null} percent value (if matches)\n */\nvar matchPercent = function matchPercent(value) {\n var match = isPercent(value);\n if (match) {\n var f = parseFloat(match[1]);\n var percent = f / 100;\n return {\n percent: percent,\n value: f\n };\n }\n return null;\n};\n\nvar omit = function omit(keys, object) {\n var _keys = castArray(keys);\n var copy = Object.assign({}, object);\n _keys.forEach(function (key) {\n delete copy[key];\n });\n return copy;\n};\n\nvar pick = function pick(keys, obj) {\n var result = {};\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (key in obj) result[key] = obj[key];\n }\n return result;\n};\n\nvar repeat = function repeat(list, length) {\n if (length === void 0) {\n length = 0;\n }\n var result = new Array(length);\n for (var i = 0; i < length; i += 1) {\n result[i] = list;\n }\n return result;\n};\n\n/**\n * Capitalize first letter of string\n *\n * @param {string} value string\n * @returns {string} capitalized string\n */\nvar upperFirst = function upperFirst(value) {\n if (!value) return value;\n return value.charAt(0).toUpperCase() + value.slice(1);\n};\n\nexport { adjust, asyncCompose, capitalize, castArray, compose, dropLast, evolve, get, isNil, last, mapValues, matchPercent, omit, pick, repeat, reverse, upperFirst };\n","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar TAU = Math.PI * 2;\n\nvar mapToEllipse = function mapToEllipse(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _ref.x,\n y = _ref.y;\n\n x *= rx;\n y *= ry;\n\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\n\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\n\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n\n var dot = ux * vx + uy * vy;\n\n if (dot > 1) {\n dot = 1;\n }\n\n if (dot < -1) {\n dot = -1;\n }\n\n return sign * Math.acos(dot);\n};\n\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n\n if (radicant < 0) {\n radicant = 0;\n }\n\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n\n return [centerx, centery, ang1, ang2];\n};\n\nvar arcToBezier = function arcToBezier(_ref2) {\n var px = _ref2.px,\n py = _ref2.py,\n cx = _ref2.cx,\n cy = _ref2.cy,\n rx = _ref2.rx,\n ry = _ref2.ry,\n _ref2$xAxisRotation = _ref2.xAxisRotation,\n xAxisRotation = _ref2$xAxisRotation === undefined ? 0 : _ref2$xAxisRotation,\n _ref2$largeArcFlag = _ref2.largeArcFlag,\n largeArcFlag = _ref2$largeArcFlag === undefined ? 0 : _ref2$largeArcFlag,\n _ref2$sweepFlag = _ref2.sweepFlag,\n sweepFlag = _ref2$sweepFlag === undefined ? 0 : _ref2$sweepFlag;\n\n var curves = [];\n\n if (rx === 0 || ry === 0) {\n return [];\n }\n\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n\n if (pxp === 0 && pyp === 0) {\n return [];\n }\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n\n var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n _getArcCenter2 = _slicedToArray(_getArcCenter, 4),\n centerx = _getArcCenter2[0],\n centery = _getArcCenter2[1],\n ang1 = _getArcCenter2[2],\n ang2 = _getArcCenter2[3];\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n\n\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n\n var segments = Math.max(Math.ceil(ratio), 1);\n\n ang2 /= segments;\n\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n\n return curves.map(function (curve) {\n var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _mapToEllipse.x,\n y1 = _mapToEllipse.y;\n\n var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _mapToEllipse2.x,\n y2 = _mapToEllipse2.y;\n\n var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _mapToEllipse3.x,\n y = _mapToEllipse3.y;\n\n return { x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y };\n });\n};\n\nexport default arcToBezier;","import arcToCurve from 'svg-arc-to-cubic-bezier'\r\n\r\nexport default function normalize(path){\r\n // init state\r\n var prev\r\n var result = []\r\n var bezierX = 0\r\n var bezierY = 0\r\n var startX = 0\r\n var startY = 0\r\n var quadX = null\r\n var quadY = null\r\n var x = 0\r\n var y = 0\r\n\r\n for (var i = 0, len = path.length; i < len; i++) {\r\n var seg = path[i]\r\n var command = seg[0]\r\n\r\n switch (command) {\r\n case 'M':\r\n startX = seg[1]\r\n startY = seg[2]\r\n break\r\n case 'A':\r\n var curves = arcToCurve({\r\n px: x,\r\n py: y,\r\n cx: seg[6],\r\n cy: seg[7],\r\n rx: seg[1],\r\n ry: seg[2],\r\n xAxisRotation: seg[3],\r\n largeArcFlag: seg[4],\r\n sweepFlag: seg[5]\r\n })\r\n\r\n // null-curves\r\n if (!curves.length) continue\r\n\r\n for (var j = 0, c; j < curves.length; j++) {\r\n c = curves[j]\r\n seg = ['C', c.x1, c.y1, c.x2, c.y2, c.x, c.y]\r\n if (j < curves.length - 1) result.push(seg)\r\n }\r\n\r\n break\r\n case 'S':\r\n // default control point\r\n var cx = x\r\n var cy = y\r\n if (prev == 'C' || prev == 'S') {\r\n cx += cx - bezierX // reflect the previous command's control\r\n cy += cy - bezierY // point relative to the current point\r\n }\r\n seg = ['C', cx, cy, seg[1], seg[2], seg[3], seg[4]]\r\n break\r\n case 'T':\r\n if (prev == 'Q' || prev == 'T') {\r\n quadX = x * 2 - quadX // as with 'S' reflect previous control point\r\n quadY = y * 2 - quadY\r\n } else {\r\n quadX = x\r\n quadY = y\r\n }\r\n seg = quadratic(x, y, quadX, quadY, seg[1], seg[2])\r\n break\r\n case 'Q':\r\n quadX = seg[1]\r\n quadY = seg[2]\r\n seg = quadratic(x, y, seg[1], seg[2], seg[3], seg[4])\r\n break\r\n case 'L':\r\n seg = line(x, y, seg[1], seg[2])\r\n break\r\n case 'H':\r\n seg = line(x, y, seg[1], y)\r\n break\r\n case 'V':\r\n seg = line(x, y, x, seg[1])\r\n break\r\n case 'Z':\r\n seg = line(x, y, startX, startY)\r\n break\r\n }\r\n\r\n // update state\r\n prev = command\r\n x = seg[seg.length - 2]\r\n y = seg[seg.length - 1]\r\n if (seg.length > 4) {\r\n bezierX = seg[seg.length - 4]\r\n bezierY = seg[seg.length - 3]\r\n } else {\r\n bezierX = x\r\n bezierY = y\r\n }\r\n result.push(seg)\r\n }\r\n\r\n return result\r\n}\r\n\r\nfunction line(x1, y1, x2, y2){\r\n return ['C', x1, y1, x2, y2, x2, y2]\r\n}\r\n\r\nfunction quadratic(x1, y1, cx, cy, x2, y2){\r\n return [\r\n 'C',\r\n x1/3 + (2/3) * cx,\r\n y1/3 + (2/3) * cy,\r\n x2/3 + (2/3) * cx,\r\n y2/3 + (2/3) * cy,\r\n x2,\r\n y2\r\n ]\r\n}\r\n","import * as P from '@react-pdf/primitives';\nimport { isNil, matchPercent } from '@react-pdf/fns';\nimport absPath from 'abs-svg-path';\nimport parsePath from 'parse-svg-path';\nimport normalizePath from 'normalize-svg-path';\nimport colorString from 'color-string';\n\nconst renderPath = (ctx, node) => {\n var _node$props;\n const d = (_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.d;\n if (d) ctx.path(node.props.d);\n};\n\nconst KAPPA$3 = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nconst renderRect = (ctx, node) => {\n var _node$props, _node$props2, _node$props3, _node$props4, _node$props5, _node$props6;\n const x = ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.x) || 0;\n const y = ((_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.y) || 0;\n const rx = ((_node$props3 = node.props) === null || _node$props3 === void 0 ? void 0 : _node$props3.rx) || 0;\n const ry = ((_node$props4 = node.props) === null || _node$props4 === void 0 ? void 0 : _node$props4.ry) || 0;\n const width = ((_node$props5 = node.props) === null || _node$props5 === void 0 ? void 0 : _node$props5.width) || 0;\n const height = ((_node$props6 = node.props) === null || _node$props6 === void 0 ? void 0 : _node$props6.height) || 0;\n if (!width || !height) return;\n if (rx && ry) {\n const krx = rx * KAPPA$3;\n const kry = ry * KAPPA$3;\n ctx.moveTo(x + rx, y);\n ctx.lineTo(x - rx + width, y);\n ctx.bezierCurveTo(x - rx + width + krx, y, x + width, y + ry - kry, x + width, y + ry);\n ctx.lineTo(x + width, y + height - ry);\n ctx.bezierCurveTo(x + width, y + height - ry + kry, x - rx + width + krx, y + height, x - rx + width, y + height);\n ctx.lineTo(x + rx, y + height);\n ctx.bezierCurveTo(x + rx - krx, y + height, x, y + height - ry + kry, x, y + height - ry);\n ctx.lineTo(x, y + ry);\n ctx.bezierCurveTo(x, y + ry - kry, x + rx - krx, y, x + rx, y);\n } else {\n ctx.moveTo(x, y);\n ctx.lineTo(x + width, y);\n ctx.lineTo(x + width, y + height);\n ctx.lineTo(x, y + height);\n }\n ctx.closePath();\n};\n\nconst renderLine$1 = (ctx, node) => {\n const {\n x1,\n x2,\n y1,\n y2\n } = node.props || {};\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n};\n\nconst renderGroup = () => {\n // noop\n};\n\nconst KAPPA$2 = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nconst drawEllipse = function (ctx, cx, cy, rx, ry) {\n if (cx === void 0) {\n cx = 0;\n }\n if (cy === void 0) {\n cy = 0;\n }\n const x = cx - rx;\n const y = cy - ry;\n const ox = rx * KAPPA$2;\n const oy = ry * KAPPA$2;\n const xe = x + rx * 2;\n const ye = y + ry * 2;\n const xm = x + rx;\n const ym = y + ry;\n ctx.moveTo(x, ym);\n ctx.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n ctx.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n ctx.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n ctx.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n ctx.closePath();\n};\nconst renderEllipse = (ctx, node) => {\n const {\n cx,\n cy,\n rx,\n ry\n } = node.props || {};\n drawEllipse(ctx, cx, cy, rx, ry);\n};\n\nconst renderCircle = (ctx, node) => {\n var _node$props, _node$props2, _node$props3;\n const cx = (_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.cx;\n const cy = (_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.cy;\n const r = (_node$props3 = node.props) === null || _node$props3 === void 0 ? void 0 : _node$props3.r;\n drawEllipse(ctx, cx, cy, r, r);\n};\n\nconst renderGlyphs = function (ctx, glyphs, positions, x, y, options) {\n if (options === void 0) {\n options = {};\n }\n const scale = 1000 / ctx._fontSize;\n const unitsPerEm = ctx._font.font.unitsPerEm || 1000;\n const advanceWidthScale = 1000 / unitsPerEm;\n\n // Glyph encoding and positioning\n const encodedGlyphs = ctx._font.encodeGlyphs(glyphs);\n const encodedPositions = positions.map((pos, i) => ({\n xAdvance: pos.xAdvance * scale,\n yAdvance: pos.yAdvance * scale,\n xOffset: pos.xOffset,\n yOffset: pos.yOffset,\n advanceWidth: glyphs[i].advanceWidth * advanceWidthScale\n }));\n return ctx._glyphs(encodedGlyphs, encodedPositions, x, y, options);\n};\n\nconst renderRun$1 = (ctx, run) => {\n const runAdvanceWidth = run.xAdvance;\n const {\n font,\n fontSize,\n color,\n opacity\n } = run.attributes;\n ctx.fillColor(color);\n ctx.fillOpacity(opacity);\n if (font.sbix || font.COLR && font.CPAL) {\n ctx.save();\n ctx.translate(0, -run.ascent);\n for (let i = 0; i < run.glyphs.length; i += 1) {\n const position = run.positions[i];\n const glyph = run.glyphs[i];\n ctx.save();\n ctx.translate(position.xOffset, position.yOffset);\n glyph.render(ctx, fontSize);\n ctx.restore();\n ctx.translate(position.xAdvance, position.yAdvance);\n }\n ctx.restore();\n } else {\n ctx.font(typeof font.name === 'string' ? font.name : font, fontSize);\n try {\n renderGlyphs(ctx, run.glyphs, run.positions, 0, 0);\n } catch (error) {\n console.log(error);\n }\n }\n ctx.translate(runAdvanceWidth, 0);\n};\nconst renderSpan = (ctx, line, textAnchor, dominantBaseline) => {\n var _line$box, _line$box2, _line$runs$, _line$runs$2, _line$runs$2$attribut;\n ctx.save();\n const x = ((_line$box = line.box) === null || _line$box === void 0 ? void 0 : _line$box.x) || 0;\n const y = ((_line$box2 = line.box) === null || _line$box2 === void 0 ? void 0 : _line$box2.y) || 0;\n const font = (_line$runs$ = line.runs[0]) === null || _line$runs$ === void 0 ? void 0 : _line$runs$.attributes.font;\n const scale = ((_line$runs$2 = line.runs[0]) === null || _line$runs$2 === void 0 ? void 0 : (_line$runs$2$attribut = _line$runs$2.attributes) === null || _line$runs$2$attribut === void 0 ? void 0 : _line$runs$2$attribut.scale) || 1;\n const width = line.xAdvance;\n const ascent = font.ascent * scale;\n const xHeight = font.xHeight * scale;\n const descent = font.descent * scale;\n const capHeight = font.capHeight * scale;\n let xTranslate = x;\n let yTranslate = y;\n switch (textAnchor) {\n case 'middle':\n xTranslate = x - width / 2;\n break;\n case 'end':\n xTranslate = x - width;\n break;\n default:\n xTranslate = x;\n break;\n }\n switch (dominantBaseline) {\n case 'middle':\n case 'central':\n yTranslate = y + capHeight / 2;\n break;\n case 'hanging':\n yTranslate = y + capHeight;\n break;\n case 'mathematical':\n yTranslate = y + xHeight;\n break;\n case 'text-after-edge':\n yTranslate = y + descent;\n break;\n case 'text-before-edge':\n yTranslate = y + ascent;\n break;\n default:\n yTranslate = y;\n break;\n }\n ctx.translate(xTranslate, yTranslate);\n line.runs.forEach(run => renderRun$1(ctx, run));\n ctx.restore();\n};\nconst renderSvgText = (ctx, node) => {\n node.children.forEach(span => renderSpan(ctx, span.lines[0], span.props.textAnchor, span.props.dominantBaseline));\n};\n\n/**\n * Create pairs from array\n *\n * @template T\n * @param {T[]} values array\n * @returns {T[][]} pairs\n */\nconst pairs = values => {\n const result = [];\n for (let i = 0; i < values.length; i += 2) {\n result.push([values[i], values[i + 1]]);\n }\n return result;\n};\n\n/**\n * Parse svg-like points into number arrays\n *\n * @param {string} points string ex. \"20,30 50,60\"\n * @returns {number[][]} points array ex. [[20, 30], [50, 60]]\n */\nconst parsePoints = points => {\n let values = (points || '').trim().replace(/,/g, ' ').replace(/(\\d)-(\\d)/g, '$1 -$2').split(/\\s+/);\n if (values.length % 2 !== 0) {\n values = values.slice(0, -1);\n }\n const mappedValues = values.map(parseFloat);\n return pairs(mappedValues);\n};\n\nconst drawPolyline = (ctx, points) => {\n if (points.length > 0) {\n ctx.moveTo(points[0][0], points[0][1]);\n points.slice(1).forEach(p => ctx.lineTo(p[0], p[1]));\n }\n};\nconst renderPolyline = (ctx, node) => {\n const points = parsePoints(node.props.points || '');\n drawPolyline(ctx, points);\n};\n\nconst renderPolygon = (ctx, node) => {\n renderPolyline(ctx, node);\n ctx.closePath();\n};\n\nconst renderImage$1 = (ctx, node) => {\n if (!node.image.data) return;\n const {\n x,\n y\n } = node.props;\n const {\n width,\n height,\n opacity\n } = node.style;\n const paddingTop = node.box.paddingLeft || 0;\n const paddingLeft = node.box.paddingLeft || 0;\n if (width === 0 || height === 0) {\n console.warn(\"Image with src '\" + node.props.href + \"' skipped due to invalid dimensions\");\n return;\n }\n ctx.save();\n ctx.fillOpacity(opacity || 1).image(node.image.data, x + paddingLeft, y + paddingTop, {\n width,\n height\n });\n ctx.restore();\n};\n\n// This constant is used to approximate a symmetrical arc using a cubic\n// Bezier curve.\nconst KAPPA$1 = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nconst clipNode = (ctx, node) => {\n if (!node.style) return;\n const {\n top,\n left,\n width,\n height\n } = node.box;\n const {\n borderTopLeftRadius = 0,\n borderTopRightRadius = 0,\n borderBottomRightRadius = 0,\n borderBottomLeftRadius = 0\n } = node.style;\n\n // Border top\n const rtr = Math.min(borderTopRightRadius, 0.5 * width, 0.5 * height);\n const ctr = rtr * (1.0 - KAPPA$1);\n ctx.moveTo(left + rtr, top);\n ctx.lineTo(left + width - rtr, top);\n ctx.bezierCurveTo(left + width - ctr, top, left + width, top + ctr, left + width, top + rtr);\n\n // Border right\n const rbr = Math.min(borderBottomRightRadius, 0.5 * width, 0.5 * height);\n const cbr = rbr * (1.0 - KAPPA$1);\n ctx.lineTo(left + width, top + height - rbr);\n ctx.bezierCurveTo(left + width, top + height - cbr, left + width - cbr, top + height, left + width - rbr, top + height);\n\n // Border bottom\n const rbl = Math.min(borderBottomLeftRadius, 0.5 * width, 0.5 * height);\n const cbl = rbl * (1.0 - KAPPA$1);\n ctx.lineTo(left + rbl, top + height);\n ctx.bezierCurveTo(left + cbl, top + height, left, top + height - cbl, left, top + height - rbl);\n\n // Border left\n const rtl = Math.min(borderTopLeftRadius, 0.5 * width, 0.5 * height);\n const ctl = rtl * (1.0 - KAPPA$1);\n ctx.lineTo(left, top + rtl);\n ctx.bezierCurveTo(left, top + ctl, left + ctl, top, left + rtl, top);\n ctx.closePath();\n ctx.clip();\n};\n\nconst applySingleTransformation = (ctx, transform, origin) => {\n const {\n operation,\n value\n } = transform;\n switch (operation) {\n case 'scale':\n {\n const [scaleX, scaleY] = value;\n ctx.scale(scaleX, scaleY, {\n origin\n });\n break;\n }\n case 'rotate':\n {\n const [angle] = value;\n ctx.rotate(angle, {\n origin\n });\n break;\n }\n case 'translate':\n {\n const [x, y = 0] = value;\n ctx.translate(x, y, {\n origin\n });\n break;\n }\n case 'skew':\n {\n const [xAngle, yAngle] = value;\n ctx.skew(xAngle, yAngle, {\n origin\n });\n break;\n }\n case 'matrix':\n {\n ctx.transform(...value);\n break;\n }\n default:\n {\n console.error(\"Transform operation: '\" + operation + \"' doesn't supported\");\n }\n }\n};\nconst applyTransformations = (ctx, node) => {\n var _node$style, _node$props;\n if (!node.origin) return;\n const origin = [node.origin.left, node.origin.top];\n const operations = ((_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.transform) || ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.transform) || [];\n operations.forEach(operation => {\n applySingleTransformation(ctx, operation, origin);\n });\n};\n\n// From https://github.com/dy/svg-path-bounds/blob/master/index.js\nconst getPathBoundingBox = node => {\n var _node$props;\n const path = normalizePath(absPath(parsePath(((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.d) || '')));\n if (!path.length) return [0, 0, 0, 0];\n const bounds = [Infinity, Infinity, -Infinity, -Infinity];\n for (let i = 0, l = path.length; i < l; i += 1) {\n const points = path[i].slice(1);\n for (let j = 0; j < points.length; j += 2) {\n if (points[j + 0] < bounds[0]) bounds[0] = points[j + 0];\n if (points[j + 1] < bounds[1]) bounds[1] = points[j + 1];\n if (points[j + 0] > bounds[2]) bounds[2] = points[j + 0];\n if (points[j + 1] > bounds[3]) bounds[3] = points[j + 1];\n }\n }\n return bounds;\n};\nconst getCircleBoundingBox = node => {\n var _node$props2, _node$props3, _node$props4;\n const r = ((_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.r) || 0;\n const cx = ((_node$props3 = node.props) === null || _node$props3 === void 0 ? void 0 : _node$props3.cx) || 0;\n const cy = ((_node$props4 = node.props) === null || _node$props4 === void 0 ? void 0 : _node$props4.cy) || 0;\n return [cx - r, cy - r, cx + r, cy + r];\n};\nconst getEllipseBoundingBox = node => {\n var _node$props5, _node$props6, _node$props7, _node$props8;\n const cx = ((_node$props5 = node.props) === null || _node$props5 === void 0 ? void 0 : _node$props5.cx) || 0;\n const cy = ((_node$props6 = node.props) === null || _node$props6 === void 0 ? void 0 : _node$props6.cy) || 0;\n const rx = ((_node$props7 = node.props) === null || _node$props7 === void 0 ? void 0 : _node$props7.rx) || 0;\n const ry = ((_node$props8 = node.props) === null || _node$props8 === void 0 ? void 0 : _node$props8.ry) || 0;\n return [cx - rx, cy - ry, cx + rx, cy + ry];\n};\nconst getLineBoundingBox = node => {\n var _node$props9, _node$props10, _node$props11, _node$props12;\n const x1 = ((_node$props9 = node.props) === null || _node$props9 === void 0 ? void 0 : _node$props9.x1) || 0;\n const y1 = ((_node$props10 = node.props) === null || _node$props10 === void 0 ? void 0 : _node$props10.y1) || 0;\n const x2 = ((_node$props11 = node.props) === null || _node$props11 === void 0 ? void 0 : _node$props11.x2) || 0;\n const y2 = ((_node$props12 = node.props) === null || _node$props12 === void 0 ? void 0 : _node$props12.y2) || 0;\n return [Math.min(x1, x2), Math.min(y1, y2), Math.max(x1, x2), Math.max(y1, y2)];\n};\nconst getRectBoundingBox = node => {\n var _node$props13, _node$props14, _node$props15, _node$props16;\n const x = ((_node$props13 = node.props) === null || _node$props13 === void 0 ? void 0 : _node$props13.x) || 0;\n const y = ((_node$props14 = node.props) === null || _node$props14 === void 0 ? void 0 : _node$props14.y) || 0;\n const width = ((_node$props15 = node.props) === null || _node$props15 === void 0 ? void 0 : _node$props15.width) || 0;\n const height = ((_node$props16 = node.props) === null || _node$props16 === void 0 ? void 0 : _node$props16.height) || 0;\n return [x, y, x + width, y + height];\n};\nconst max = values => Math.max(-Infinity, ...values);\nconst min = values => Math.min(Infinity, ...values);\nconst getPolylineBoundingBox = node => {\n var _node$props17;\n const points = parsePoints(((_node$props17 = node.props) === null || _node$props17 === void 0 ? void 0 : _node$props17.points) || []);\n const xValues = points.map(p => p[0]);\n const yValues = points.map(p => p[1]);\n return [min(xValues), min(yValues), max(xValues), max(yValues)];\n};\nconst boundingBoxFns = {\n [P.Rect]: getRectBoundingBox,\n [P.Line]: getLineBoundingBox,\n [P.Path]: getPathBoundingBox,\n [P.Circle]: getCircleBoundingBox,\n [P.Ellipse]: getEllipseBoundingBox,\n [P.Polygon]: getPolylineBoundingBox,\n [P.Polyline]: getPolylineBoundingBox\n};\nconst getBoundingBox = node => {\n const boundingBoxFn = boundingBoxFns[node.type];\n return boundingBoxFn ? boundingBoxFn(node) : [0, 0, 0, 0];\n};\n\nconst setStrokeWidth = (ctx, node) => {\n var _node$props;\n const lineWidth = ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.strokeWidth) || 0;\n if (lineWidth) ctx.lineWidth(lineWidth);\n};\nconst setStrokeColor = (ctx, node) => {\n var _node$props2;\n const strokeColor = ((_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.stroke) || null;\n if (strokeColor) ctx.strokeColor(strokeColor);\n};\nconst setOpacity = (ctx, node) => {\n var _node$props3;\n const opacity = ((_node$props3 = node.props) === null || _node$props3 === void 0 ? void 0 : _node$props3.opacity) || null;\n if (!isNil(opacity)) ctx.opacity(opacity);\n};\nconst setFillOpacity = (ctx, node) => {\n var _node$props4;\n const fillOpacity = ((_node$props4 = node.props) === null || _node$props4 === void 0 ? void 0 : _node$props4.fillOpacity) || null;\n if (!isNil(fillOpacity)) ctx.fillOpacity(fillOpacity);\n};\nconst setStrokeOpacity = (ctx, node) => {\n var _node$props5;\n const strokeOpacity = ((_node$props5 = node.props) === null || _node$props5 === void 0 ? void 0 : _node$props5.strokeOpacity) || null;\n if (!isNil(strokeOpacity)) ctx.strokeOpacity(strokeOpacity);\n};\nconst setLineJoin = (ctx, node) => {\n var _node$props6;\n const lineJoin = ((_node$props6 = node.props) === null || _node$props6 === void 0 ? void 0 : _node$props6.strokeLinejoin) || null;\n if (lineJoin) ctx.lineJoin(lineJoin);\n};\nconst setLineCap = (ctx, node) => {\n var _node$props7;\n const lineCap = ((_node$props7 = node.props) === null || _node$props7 === void 0 ? void 0 : _node$props7.strokeLinecap) || null;\n if (lineCap) ctx.lineCap(lineCap);\n};\nconst setLineDash = (ctx, node) => {\n var _node$props8;\n const value = ((_node$props8 = node.props) === null || _node$props8 === void 0 ? void 0 : _node$props8.strokeDasharray) || null;\n if (value) ctx.dash(value.split(',').map(Number));\n};\nconst hasLinearGradientFill = node => {\n var _node$props9, _node$props9$fill;\n return ((_node$props9 = node.props) === null || _node$props9 === void 0 ? void 0 : (_node$props9$fill = _node$props9.fill) === null || _node$props9$fill === void 0 ? void 0 : _node$props9$fill.type) === P.LinearGradient;\n};\nconst hasRadialGradientFill = node => {\n var _node$props10, _node$props10$fill;\n return ((_node$props10 = node.props) === null || _node$props10 === void 0 ? void 0 : (_node$props10$fill = _node$props10.fill) === null || _node$props10$fill === void 0 ? void 0 : _node$props10$fill.type) === P.RadialGradient;\n};\n\n// Math simplified from https://github.com/devongovett/svgkit/blob/master/src/elements/SVGGradient.js#L104\nconst setLinearGradientFill = (ctx, node) => {\n var _node$props11;\n const bbox = getBoundingBox(node);\n const gradient = ((_node$props11 = node.props) === null || _node$props11 === void 0 ? void 0 : _node$props11.fill) || null;\n const x1 = gradient.props.x1 || 0;\n const y1 = gradient.props.y1 || 0;\n const x2 = gradient.props.x2 || 1;\n const y2 = gradient.props.y2 || 0;\n const m0 = bbox[2] - bbox[0];\n const m3 = bbox[3] - bbox[1];\n const m4 = bbox[0];\n const m5 = bbox[1];\n const gx1 = m0 * x1 + m4;\n const gy1 = m3 * y1 + m5;\n const gx2 = m0 * x2 + m4;\n const gy2 = m3 * y2 + m5;\n const grad = ctx.linearGradient(gx1, gy1, gx2, gy2);\n gradient.children.forEach(stop => {\n grad.stop(stop.props.offset, stop.props.stopColor, stop.props.stopOpacity);\n });\n ctx.fill(grad);\n};\n\n// Math simplified from https://github.com/devongovett/svgkit/blob/master/src/elements/SVGGradient.js#L155\nconst setRadialGradientFill = (ctx, node) => {\n var _node$props12;\n const bbox = getBoundingBox(node);\n const gradient = ((_node$props12 = node.props) === null || _node$props12 === void 0 ? void 0 : _node$props12.fill) || null;\n const cx = gradient.props.cx || 0.5;\n const cy = gradient.props.cy || 0.5;\n const fx = gradient.props.fx || cx;\n const fy = gradient.props.fy || cy;\n const r = gradient.props.r || 0.5;\n const m0 = bbox[2] - bbox[0];\n const m3 = bbox[3] - bbox[1];\n const m4 = bbox[0];\n const m5 = bbox[1];\n const gr = r * m0;\n const gcx = m0 * cx + m4;\n const gcy = m3 * cy + m5;\n const gfx = m0 * fx + m4;\n const gfy = m3 * fy + m5;\n const grad = ctx.radialGradient(gfx, gfy, 0, gcx, gcy, gr);\n gradient.children.forEach(stop => {\n grad.stop(stop.props.offset, stop.props.stopColor, stop.props.stopOpacity);\n });\n ctx.fill(grad);\n};\nconst setFillColor = (ctx, node) => {\n var _node$props13;\n const fillColor = ((_node$props13 = node.props) === null || _node$props13 === void 0 ? void 0 : _node$props13.fill) || null;\n if (fillColor) ctx.fillColor(fillColor);\n};\nconst setFill = (ctx, node) => {\n if (hasLinearGradientFill(node)) return setLinearGradientFill(ctx, node);\n if (hasRadialGradientFill(node)) return setRadialGradientFill(ctx, node);\n return setFillColor(ctx, node);\n};\nconst draw = (ctx, node) => {\n const props = node.props || {};\n if (props.fill && props.stroke) {\n ctx.fillAndStroke(props.fillRule);\n } else if (props.fill) {\n ctx.fill(props.fillRule);\n } else if (props.stroke) {\n ctx.stroke();\n } else {\n ctx.save();\n ctx.opacity(0);\n ctx.fill(null);\n ctx.restore();\n }\n};\nconst noop = () => {};\nconst renderFns$1 = {\n [P.Tspan]: noop,\n [P.TextInstance]: noop,\n [P.Path]: renderPath,\n [P.Rect]: renderRect,\n [P.Line]: renderLine$1,\n [P.G]: renderGroup,\n [P.Text]: renderSvgText,\n [P.Circle]: renderCircle,\n [P.Image]: renderImage$1,\n [P.Ellipse]: renderEllipse,\n [P.Polygon]: renderPolygon,\n [P.Polyline]: renderPolyline\n};\nconst renderNode$1 = (ctx, node) => {\n const renderFn = renderFns$1[node.type];\n if (renderFn) {\n renderFn(ctx, node);\n } else {\n console.warn(\"SVG node of type \" + node.type + \" is not currently supported\");\n }\n};\nconst drawNode = (ctx, node) => {\n setLineCap(ctx, node);\n setLineDash(ctx, node);\n setLineJoin(ctx, node);\n setStrokeWidth(ctx, node);\n setStrokeColor(ctx, node);\n setFill(ctx, node);\n setStrokeOpacity(ctx, node);\n setFillOpacity(ctx, node);\n setOpacity(ctx, node);\n applyTransformations(ctx, node);\n renderNode$1(ctx, node);\n draw(ctx, node);\n};\nconst clipPath = (ctx, node) => {\n var _node$props14;\n const value = (_node$props14 = node.props) === null || _node$props14 === void 0 ? void 0 : _node$props14.clipPath;\n if (value) {\n const children = value.children || [];\n children.forEach(child => renderNode$1(ctx, child));\n ctx.clip();\n }\n};\nconst drawChildren = (ctx, node) => {\n const children = node.children || [];\n children.forEach(child => {\n ctx.save();\n clipPath(ctx, child);\n drawNode(ctx, child);\n drawChildren(ctx, child);\n ctx.restore();\n });\n};\nconst resolveAspectRatio = (ctx, node) => {\n const {\n width,\n height\n } = node.box;\n const {\n viewBox,\n preserveAspectRatio = {}\n } = node.props;\n const {\n meetOrSlice = 'meet',\n align = 'xMidYMid'\n } = preserveAspectRatio;\n if (viewBox == null || width == null || height == null) return;\n const x = (viewBox === null || viewBox === void 0 ? void 0 : viewBox.minX) || 0;\n const y = (viewBox === null || viewBox === void 0 ? void 0 : viewBox.minY) || 0;\n const logicalWidth = (viewBox === null || viewBox === void 0 ? void 0 : viewBox.maxX) || width;\n const logicalHeight = (viewBox === null || viewBox === void 0 ? void 0 : viewBox.maxY) || height;\n const logicalRatio = logicalWidth / logicalHeight;\n const physicalRatio = width / height;\n const scaleX = width / logicalWidth;\n const scaleY = height / logicalHeight;\n if (align === 'none') {\n ctx.scale(scaleX, scaleY);\n ctx.translate(-x, -y);\n return;\n }\n if (logicalRatio < physicalRatio && meetOrSlice === 'meet' || logicalRatio >= physicalRatio && meetOrSlice === 'slice') {\n ctx.scale(scaleY, scaleY);\n switch (align) {\n case 'xMinYMin':\n case 'xMinYMid':\n case 'xMinYMax':\n ctx.translate(-x, -y);\n break;\n case 'xMidYMin':\n case 'xMidYMid':\n case 'xMidYMax':\n ctx.translate(-x - (logicalWidth - width * logicalHeight / height) / 2, -y);\n break;\n default:\n ctx.translate(-x - (logicalWidth - width * logicalHeight / height), -y);\n }\n } else {\n ctx.scale(scaleX, scaleX);\n switch (align) {\n case 'xMinYMin':\n case 'xMidYMin':\n case 'xMaxYMin':\n ctx.translate(-x, -y);\n break;\n case 'xMinYMid':\n case 'xMidYMid':\n case 'xMaxYMid':\n ctx.translate(-x, -y - (logicalHeight - height * logicalWidth / width) / 2);\n break;\n default:\n ctx.translate(-x, -y - (logicalHeight - height * logicalWidth / width));\n }\n }\n};\nconst moveToOrigin = (ctx, node) => {\n const {\n top,\n left\n } = node.box;\n const paddingLeft = node.box.paddingLeft || 0;\n const paddingTop = node.box.paddingTop || 0;\n ctx.translate(left + paddingLeft, top + paddingTop);\n};\nconst renderSvg = (ctx, node) => {\n ctx.save();\n clipNode(ctx, node);\n moveToOrigin(ctx, node);\n resolveAspectRatio(ctx, node);\n drawChildren(ctx, node);\n ctx.restore();\n};\n\nconst black = {\n value: [0, 0, 0],\n opacity: 1\n};\nconst parseColor = hex => {\n const parsed = colorString.get(hex);\n if (!parsed) return black;\n const value = colorString.to.hex(parsed.value.slice(0, 3));\n const opacity = parsed.value[3];\n return {\n value,\n opacity\n };\n};\n\n/* eslint-disable no-param-reassign */\nconst DEST_REGEXP = /^#.+/;\nconst isSrcId$1 = src => src.match(DEST_REGEXP);\nconst renderAttachment = (ctx, attachment) => {\n const {\n xOffset = 0,\n yOffset = 0,\n width,\n height,\n image\n } = attachment;\n ctx.translate(-width + xOffset, -height + yOffset);\n ctx.image(image, 0, 0, {\n fit: [width, height],\n align: 'center',\n valign: 'bottom'\n });\n};\nconst renderAttachments = (ctx, run) => {\n ctx.save();\n const {\n font\n } = run.attributes;\n const space = font.glyphForCodePoint(0x20);\n const objectReplacement = font.glyphForCodePoint(0xfffc);\n let attachmentAdvance = 0;\n for (let i = 0; i < run.glyphs.length; i += 1) {\n const position = run.positions[i];\n const glyph = run.glyphs[i];\n attachmentAdvance += position.xAdvance || 0;\n if (glyph.id === objectReplacement.id && run.attributes.attachment) {\n ctx.translate(attachmentAdvance, position.yOffset || 0);\n renderAttachment(ctx, run.attributes.attachment);\n run.glyphs[i] = space;\n attachmentAdvance = 0;\n }\n }\n ctx.restore();\n};\nconst renderRun = (ctx, run, options) => {\n const {\n font,\n fontSize,\n link\n } = run.attributes;\n const color = parseColor(run.attributes.color);\n const opacity = isNil(run.attributes.opacity) ? color.opacity : run.attributes.opacity;\n const {\n height,\n descent,\n xAdvance\n } = run;\n if (options.outlineRuns) {\n ctx.rect(0, -height, xAdvance, height).stroke();\n }\n ctx.fillColor(color.value);\n ctx.fillOpacity(opacity);\n if (link) {\n if (isSrcId$1(link)) {\n ctx.goTo(0, -height - descent, xAdvance, height, link.slice(1));\n } else {\n ctx.link(0, -height - descent, xAdvance, height, link);\n }\n }\n renderAttachments(ctx, run);\n if (font.sbix || font.COLR && font.CPAL) {\n ctx.save();\n ctx.translate(0, -run.ascent);\n for (let i = 0; i < run.glyphs.length; i += 1) {\n const position = run.positions[i];\n const glyph = run.glyphs[i];\n ctx.save();\n ctx.translate(position.xOffset, position.yOffset);\n glyph.render(ctx, fontSize);\n ctx.restore();\n ctx.translate(position.xAdvance, position.yAdvance);\n }\n ctx.restore();\n } else {\n ctx.font(typeof font.name === 'string' ? font.name : font, fontSize);\n try {\n renderGlyphs(ctx, run.glyphs, run.positions, 0, 0);\n } catch (error) {\n console.log(error);\n }\n }\n ctx.translate(xAdvance, 0);\n};\nconst renderBackground$1 = (ctx, rect, backgroundColor) => {\n const color = parseColor(backgroundColor);\n ctx.save();\n ctx.fillOpacity(color.opacity);\n ctx.rect(rect.x, rect.y, rect.width, rect.height);\n ctx.fill(color.value);\n ctx.restore();\n};\nconst renderDecorationLine = (ctx, line) => {\n ctx.save();\n ctx.lineWidth(line.rect.height);\n ctx.strokeOpacity(line.opacity);\n if (/dashed/.test(line.style)) {\n ctx.dash(3 * line.rect.height);\n } else if (/dotted/.test(line.style)) {\n ctx.dash(line.rect.height);\n }\n if (/wavy/.test(line.style)) {\n const dist = Math.max(2, line.rect.height);\n let step = 1.1 * dist;\n const stepCount = Math.floor(line.rect.width / (2 * step));\n\n // Adjust step to fill entire width\n const remainingWidth = line.rect.width - stepCount * 2 * step;\n const adjustment = remainingWidth / stepCount / 2;\n step += adjustment;\n const cp1y = line.rect.y + dist;\n const cp2y = line.rect.y - dist;\n let {\n x\n } = line.rect;\n ctx.moveTo(line.rect.x, line.rect.y);\n for (let i = 0; i < stepCount; i += 1) {\n ctx.bezierCurveTo(x + step, cp1y, x + step, cp2y, x + 2 * step, line.rect.y);\n x += 2 * step;\n }\n } else {\n ctx.moveTo(line.rect.x, line.rect.y);\n ctx.lineTo(line.rect.x + line.rect.width, line.rect.y);\n if (/double/.test(line.style)) {\n ctx.moveTo(line.rect.x, line.rect.y + line.rect.height * 2);\n ctx.lineTo(line.rect.x + line.rect.width, line.rect.y + line.rect.height * 2);\n }\n }\n ctx.stroke(line.color);\n ctx.restore();\n};\nconst renderLine = (ctx, line, options) => {\n const lineAscent = line.ascent;\n if (options.outlineLines) {\n ctx.rect(line.box.x, line.box.y, line.box.width, line.box.height).stroke();\n }\n ctx.save();\n ctx.translate(line.box.x, line.box.y + lineAscent);\n for (let i = 0; i < line.runs.length; i += 1) {\n const run = line.runs[i];\n const isLastRun = i === line.runs.length - 1;\n if (run.attributes.backgroundColor) {\n const overflowRight = isLastRun ? line.overflowRight : 0;\n const backgroundRect = {\n x: 0,\n y: -lineAscent,\n height: line.box.height,\n width: run.xAdvance - overflowRight\n };\n renderBackground$1(ctx, backgroundRect, run.attributes.backgroundColor);\n }\n renderRun(ctx, run, options);\n }\n ctx.restore();\n ctx.save();\n ctx.translate(line.box.x, line.box.y);\n for (let i = 0; i < line.decorationLines.length; i += 1) {\n const decorationLine = line.decorationLines[i];\n renderDecorationLine(ctx, decorationLine);\n }\n ctx.restore();\n};\nconst renderBlock = (ctx, block, options) => {\n block.forEach(line => {\n renderLine(ctx, line, options);\n });\n};\nconst renderText = (ctx, node) => {\n var _node$box, _node$box2;\n const {\n top,\n left\n } = node.box;\n const blocks = [node.lines];\n const paddingTop = ((_node$box = node.box) === null || _node$box === void 0 ? void 0 : _node$box.paddingTop) || 0;\n const paddingLeft = ((_node$box2 = node.box) === null || _node$box2 === void 0 ? void 0 : _node$box2.paddingLeft) || 0;\n const initialY = node.lines[0] ? node.lines[0].box.y : 0;\n const offsetX = node.alignOffset || 0;\n ctx.save();\n ctx.translate(left + paddingLeft - offsetX, top + paddingTop - initialY);\n blocks.forEach(block => {\n renderBlock(ctx, block, {});\n });\n ctx.restore();\n};\n\nconst renderPage = (ctx, node) => {\n var _node$props;\n const {\n width,\n height\n } = node.box;\n const dpi = ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.dpi) || 72;\n const userUnit = dpi / 72;\n ctx.addPage({\n size: [width, height],\n margin: 0,\n userUnit\n });\n};\n\nconst renderNote = (ctx, node) => {\n var _node$children, _node$style, _node$style2;\n const {\n top,\n left\n } = node.box;\n const value = (node === null || node === void 0 ? void 0 : (_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children[0].value) || '';\n const color = ((_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.backgroundColor) || null;\n const borderWidth = ((_node$style2 = node.style) === null || _node$style2 === void 0 ? void 0 : _node$style2.borderWidth) || null;\n ctx.note(left, top, 0, 0, value, {\n color,\n borderWidth\n });\n};\n\nconst isNumeric = n => {\n return !Number.isNaN(parseFloat(n)) && Number.isFinite(n);\n};\nconst applyContainObjectFit = (cw, ch, iw, ih, px, py) => {\n const cr = cw / ch;\n const ir = iw / ih;\n const pxp = matchPercent(px);\n const pyp = matchPercent(py);\n const pxv = pxp ? pxp.percent : 0.5;\n const pyv = pyp ? pyp.percent : 0.5;\n if (cr > ir) {\n const height = ch;\n const width = height * ir;\n const yOffset = isNumeric(py) ? py : 0;\n const xOffset = isNumeric(px) ? px : (cw - width) * pxv;\n return {\n width,\n height,\n xOffset,\n yOffset\n };\n }\n const width = cw;\n const height = width / ir;\n const xOffset = isNumeric(px) ? px : 0;\n const yOffset = isNumeric(py) ? py : (ch - height) * pyv;\n return {\n width,\n height,\n yOffset,\n xOffset\n };\n};\nconst applyNoneObjectFit = (cw, ch, iw, ih, px, py) => {\n const width = iw;\n const height = ih;\n const pxp = matchPercent(px);\n const pyp = matchPercent(py);\n const pxv = pxp ? pxp.percent : 0.5;\n const pyv = pyp ? pyp.percent : 0.5;\n const xOffset = isNumeric(px) ? px : (cw - width) * pxv;\n const yOffset = isNumeric(py) ? py : (ch - height) * pyv;\n return {\n width,\n height,\n xOffset,\n yOffset\n };\n};\nconst applyCoverObjectFit = (cw, ch, iw, ih, px, py) => {\n const ir = iw / ih;\n const cr = cw / ch;\n const pxp = matchPercent(px);\n const pyp = matchPercent(py);\n const pxv = pxp ? pxp.percent : 0.5;\n const pyv = pyp ? pyp.percent : 0.5;\n if (cr > ir) {\n const width = cw;\n const height = width / ir;\n const xOffset = isNumeric(px) ? px : 0;\n const yOffset = isNumeric(py) ? py : (ch - height) * pyv;\n return {\n width,\n height,\n yOffset,\n xOffset\n };\n }\n const height = ch;\n const width = height * ir;\n const xOffset = isNumeric(px) ? px : (cw - width) * pxv;\n const yOffset = isNumeric(py) ? py : 0;\n return {\n width,\n height,\n xOffset,\n yOffset\n };\n};\nconst applyScaleDownObjectFit = (cw, ch, iw, ih, px, py) => {\n const containDimension = applyContainObjectFit(cw, ch, iw, ih, px, py);\n const noneDimension = applyNoneObjectFit(cw, ch, iw, ih, px, py);\n return containDimension.width < noneDimension.width ? containDimension : noneDimension;\n};\nconst applyFillObjectFit = (cw, ch, px, py) => {\n return {\n width: cw,\n height: ch,\n xOffset: matchPercent(px) ? 0 : px || 0,\n yOffset: matchPercent(py) ? 0 : py || 0\n };\n};\nconst resolveObjectFit = function (type, cw, ch, iw, ih, px, py) {\n if (type === void 0) {\n type = 'fill';\n }\n switch (type) {\n case 'contain':\n return applyContainObjectFit(cw, ch, iw, ih, px, py);\n case 'cover':\n return applyCoverObjectFit(cw, ch, iw, ih, px, py);\n case 'none':\n return applyNoneObjectFit(cw, ch, iw, ih, px, py);\n case 'scale-down':\n return applyScaleDownObjectFit(cw, ch, iw, ih, px, py);\n default:\n return applyFillObjectFit(cw, ch, px, py);\n }\n};\n\nconst drawImage = function (ctx, node, options) {\n var _node$style, _node$style2, _node$style3, _node$style4;\n if (options === void 0) {\n options = {};\n }\n const {\n left,\n top\n } = node.box;\n const opacity = (_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.opacity;\n const objectFit = (_node$style2 = node.style) === null || _node$style2 === void 0 ? void 0 : _node$style2.objectFit;\n const objectPositionX = (_node$style3 = node.style) === null || _node$style3 === void 0 ? void 0 : _node$style3.objectPositionX;\n const objectPositionY = (_node$style4 = node.style) === null || _node$style4 === void 0 ? void 0 : _node$style4.objectPositionY;\n const paddingTop = node.box.paddingTop || 0;\n const paddingRight = node.box.paddingRight || 0;\n const paddingBottom = node.box.paddingBottom || 0;\n const paddingLeft = node.box.paddingLeft || 0;\n const imageCache = options.imageCache || new Map();\n const {\n width,\n height,\n xOffset,\n yOffset\n } = resolveObjectFit(objectFit, node.box.width - paddingLeft - paddingRight, node.box.height - paddingTop - paddingBottom, node.image.width, node.image.height, objectPositionX, objectPositionY);\n if (node.image.data) {\n if (width !== 0 && height !== 0) {\n const cacheKey = node.image.key;\n const image = imageCache.get(cacheKey) || ctx.embedImage(node.image.data);\n if (cacheKey) imageCache.set(cacheKey, image);\n const imageOpacity = isNil(opacity) ? 1 : opacity;\n ctx.fillOpacity(imageOpacity).image(image, left + paddingLeft + xOffset, top + paddingTop + yOffset, {\n width,\n height\n });\n } else {\n console.warn(\"Image with src '\" + JSON.stringify(node.props.src) + \"' skipped due to invalid dimensions\");\n }\n }\n};\nconst renderImage = (ctx, node, options) => {\n ctx.save();\n clipNode(ctx, node);\n drawImage(ctx, node, options);\n ctx.restore();\n};\n\nconst CONTENT_COLOR = '#a1c6e7';\nconst PADDING_COLOR = '#c4deb9';\nconst MARGIN_COLOR = '#f8cca1';\n\n// TODO: Draw debug boxes using clipping to enhance quality\n\nconst debugContent = (ctx, node) => {\n const {\n left,\n top,\n width,\n height,\n paddingLeft = 0,\n paddingTop = 0,\n paddingRight = 0,\n paddingBottom = 0,\n borderLeftWidth = 0,\n borderTopWidth = 0,\n borderRightWidth = 0,\n borderBottomWidth = 0\n } = node.box;\n ctx.fillColor(CONTENT_COLOR).opacity(0.5).rect(left + paddingLeft + borderLeftWidth, top + paddingTop + borderTopWidth, width - paddingLeft - paddingRight - borderRightWidth - borderLeftWidth, height - paddingTop - paddingBottom - borderTopWidth - borderBottomWidth).fill();\n};\nconst debugPadding = (ctx, node) => {\n const {\n left,\n top,\n width,\n height,\n paddingLeft = 0,\n paddingTop = 0,\n paddingRight = 0,\n paddingBottom = 0,\n borderLeftWidth = 0,\n borderTopWidth = 0,\n borderRightWidth = 0,\n borderBottomWidth = 0\n } = node.box;\n ctx.fillColor(PADDING_COLOR).opacity(0.5);\n\n // Padding top\n ctx.rect(left + paddingLeft + borderLeftWidth, top + borderTopWidth, width - paddingRight - paddingLeft - borderLeftWidth - borderRightWidth, paddingTop).fill();\n\n // Padding left\n ctx.rect(left + borderLeftWidth, top + borderTopWidth, paddingLeft, height - borderTopWidth - borderBottomWidth).fill();\n\n // Padding right\n ctx.rect(left + width - paddingRight - borderRightWidth, top + borderTopWidth, paddingRight, height - borderTopWidth - borderBottomWidth).fill();\n\n // Padding bottom\n ctx.rect(left + paddingLeft + borderLeftWidth, top + height - paddingBottom - borderBottomWidth, width - paddingRight - paddingLeft - borderLeftWidth - borderRightWidth, paddingBottom).fill();\n};\nconst getMargin = box => {\n const marginLeft = box.marginLeft === 'auto' ? 0 : box.marginLeft;\n const marginTop = box.marginTop === 'auto' ? 0 : box.marginTop;\n const marginRight = box.marginRight === 'auto' ? 0 : box.marginRight;\n const marginBottom = box.marginBottom === 'auto' ? 0 : box.marginBottom;\n return {\n marginLeft,\n marginTop,\n marginRight,\n marginBottom\n };\n};\nconst debugMargin = (ctx, node) => {\n const {\n left,\n top,\n width,\n height\n } = node.box;\n const {\n marginLeft = 0,\n marginTop = 0,\n marginRight = 0,\n marginBottom = 0\n } = getMargin(node.box);\n ctx.fillColor(MARGIN_COLOR).opacity(0.5);\n\n // Margin top\n ctx.rect(left, top - marginTop, width, marginTop).fill();\n\n // Margin left\n ctx.rect(left - marginLeft, top - marginTop, marginLeft, height + marginTop + marginBottom).fill();\n\n // Margin right\n ctx.rect(left + width, top - marginTop, marginRight, height + marginTop + marginBottom).fill();\n\n // Margin bottom\n ctx.rect(left, top + height, width, marginBottom).fill();\n};\nconst debugText = (ctx, node) => {\n const {\n left,\n top,\n width,\n height\n } = node.box;\n const {\n marginLeft = 0,\n marginTop = 0,\n marginRight = 0,\n marginBottom = 0\n } = getMargin(node.box);\n const roundedWidth = Math.round(width + marginLeft + marginRight);\n const roundedHeight = Math.round(height + marginTop + marginBottom);\n ctx.fontSize(6).opacity(1).fillColor('black').text(roundedWidth + \" x \" + roundedHeight, left - marginLeft, Math.max(top - marginTop - 4, 1));\n};\nconst debugOrigin = (ctx, node) => {\n if (node.origin) {\n ctx.circle(node.origin.left, node.origin.top, 3).fill('red').circle(node.origin.left, node.origin.top, 5).stroke('red');\n }\n};\nconst renderDebug = (ctx, node) => {\n var _node$props;\n if (!((_node$props = node.props) !== null && _node$props !== void 0 && _node$props.debug)) return;\n ctx.save();\n debugContent(ctx, node);\n debugPadding(ctx, node);\n debugMargin(ctx, node);\n debugText(ctx, node);\n debugOrigin(ctx, node);\n ctx.restore();\n};\n\nconst availableMethods = ['dash', 'clip', 'save', 'path', 'fill', 'font', 'text', 'rect', 'scale', 'moveTo', 'lineTo', 'stroke', 'rotate', 'circle', 'lineCap', 'opacity', 'ellipse', 'polygon', 'restore', 'lineJoin', 'fontSize', 'fillColor', 'lineWidth', 'translate', 'miterLimit', 'strokeColor', 'fillOpacity', 'roundedRect', 'fillAndStroke', 'strokeOpacity', 'bezierCurveTo', 'quadraticCurveTo', 'linearGradient', 'radialGradient'];\nconst painter = ctx => {\n const p = availableMethods.reduce((acc, prop) => ({\n ...acc,\n [prop]: function () {\n ctx[prop](...arguments);\n return p;\n }\n }), {});\n return p;\n};\nconst renderCanvas = (ctx, node) => {\n const {\n top,\n left,\n width,\n height\n } = node.box;\n const paddingTop = node.box.paddingTop || 0;\n const paddingLeft = node.box.paddingLeft || 0;\n const paddingRight = node.box.paddingRight || 0;\n const paddingBottom = node.box.paddingBottom || 0;\n const availableWidth = width - paddingLeft - paddingRight;\n const availableHeight = height - paddingTop - paddingBottom;\n if (!availableWidth || !availableHeight) {\n console.warn('Canvas element has null width or height. Please provide valid values via the `style` prop in order to correctly render it.');\n }\n ctx.save().translate(left + paddingLeft, top + paddingTop);\n if (node.props.paint) {\n node.props.paint(painter(ctx), availableWidth, availableHeight);\n }\n ctx.restore();\n};\n\n// Ref: https://www.w3.org/TR/css-backgrounds-3/#borders\n\n// This constant is used to approximate a symmetrical arc using a cubic Bezier curve.\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nconst clipBorderTop = (ctx, layout, style, rtr, rtl) => {\n const {\n top,\n left,\n width,\n height\n } = layout;\n const {\n borderTopWidth,\n borderRightWidth,\n borderLeftWidth\n } = style;\n\n // Clip outer top border edge\n ctx.moveTo(left + rtl, top);\n ctx.lineTo(left + width - rtr, top);\n\n // Ellipse coefficients outer top right cap\n const c0 = rtr * (1.0 - KAPPA);\n\n // Clip outer top right cap\n ctx.bezierCurveTo(left + width - c0, top, left + width, top + c0, left + width, top + rtr);\n\n // Move down in case the margin exceedes the radius\n const topRightYCoord = top + Math.max(borderTopWidth, rtr);\n ctx.lineTo(left + width, topRightYCoord);\n\n // Clip inner top right cap\n ctx.lineTo(left + width - borderRightWidth, topRightYCoord);\n\n // Ellipse coefficients inner top right cap\n const innerTopRightRadiusX = Math.max(rtr - borderRightWidth, 0);\n const innerTopRightRadiusY = Math.max(rtr - borderTopWidth, 0);\n const c1 = innerTopRightRadiusX * (1.0 - KAPPA);\n const c2 = innerTopRightRadiusY * (1.0 - KAPPA);\n\n // Clip inner top right cap\n ctx.bezierCurveTo(left + width - borderRightWidth, top + borderTopWidth + c2, left + width - borderRightWidth - c1, top + borderTopWidth, left + width - borderRightWidth - innerTopRightRadiusX, top + borderTopWidth);\n\n // Clip inner top border edge\n ctx.lineTo(left + Math.max(rtl, borderLeftWidth), top + borderTopWidth);\n\n // Ellipse coefficients inner top left cap\n const innerTopLeftRadiusX = Math.max(rtl - borderLeftWidth, 0);\n const innerTopLeftRadiusY = Math.max(rtl - borderTopWidth, 0);\n const c3 = innerTopLeftRadiusX * (1.0 - KAPPA);\n const c4 = innerTopLeftRadiusY * (1.0 - KAPPA);\n const topLeftYCoord = top + Math.max(borderTopWidth, rtl);\n\n // Clip inner top left cap\n ctx.bezierCurveTo(left + borderLeftWidth + c3, top + borderTopWidth, left + borderLeftWidth, top + borderTopWidth + c4, left + borderLeftWidth, topLeftYCoord);\n ctx.lineTo(left, topLeftYCoord);\n\n // Move down in case the margin exceedes the radius\n ctx.lineTo(left, top + rtl);\n\n // Ellipse coefficients outer top left cap\n const c5 = rtl * (1.0 - KAPPA);\n\n // Clip outer top left cap\n ctx.bezierCurveTo(left, top + c5, left + c5, top, left + rtl, top);\n ctx.closePath();\n ctx.clip();\n\n // Clip border top cap joins\n if (borderRightWidth) {\n const trSlope = -borderTopWidth / borderRightWidth;\n ctx.moveTo(left + width / 2, trSlope * (-width / 2) + top);\n ctx.lineTo(left + width, top);\n ctx.lineTo(left, top);\n ctx.lineTo(left, top + height);\n ctx.closePath();\n ctx.clip();\n }\n if (borderLeftWidth) {\n const trSlope = -borderTopWidth / borderLeftWidth;\n ctx.moveTo(left + width / 2, trSlope * (-width / 2) + top);\n ctx.lineTo(left, top);\n ctx.lineTo(left + width, top);\n ctx.lineTo(left + width, top + height);\n ctx.closePath();\n ctx.clip();\n }\n};\nconst fillBorderTop = (ctx, layout, style, rtr, rtl) => {\n const {\n top,\n left,\n width\n } = layout;\n const {\n borderTopColor,\n borderTopWidth,\n borderTopStyle,\n borderRightWidth,\n borderLeftWidth\n } = style;\n const c0 = rtl * (1.0 - KAPPA);\n const c1 = rtr * (1.0 - KAPPA);\n ctx.moveTo(left, top + Math.max(rtl, borderTopWidth));\n ctx.bezierCurveTo(left, top + c0, left + c0, top, left + rtl, top);\n ctx.lineTo(left + width - rtr, top);\n ctx.bezierCurveTo(left + width - c1, top, left + width, top + c1, left + width, top + rtr);\n ctx.strokeColor(borderTopColor);\n ctx.lineWidth(Math.max(borderRightWidth, borderTopWidth, borderLeftWidth) * 2);\n if (borderTopStyle === 'dashed') {\n ctx.dash(borderTopWidth * 2, {\n space: borderTopWidth * 1.2\n });\n } else if (borderTopStyle === 'dotted') {\n ctx.dash(borderTopWidth, {\n space: borderTopWidth * 1.2\n });\n }\n ctx.stroke();\n ctx.undash();\n};\nconst clipBorderRight = (ctx, layout, style, rtr, rbr) => {\n const {\n top,\n left,\n width,\n height\n } = layout;\n const {\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth\n } = style;\n\n // Clip outer right border edge\n ctx.moveTo(left + width, top + rtr);\n ctx.lineTo(left + width, top + height - rbr);\n\n // Ellipse coefficients outer bottom right cap\n const c0 = rbr * (1.0 - KAPPA);\n\n // Clip outer top right cap\n ctx.bezierCurveTo(left + width, top + height - c0, left + width - c0, top + height, left + width - rbr, top + height);\n\n // Move left in case the margin exceedes the radius\n const topBottomXCoord = left + width - Math.max(borderRightWidth, rbr);\n ctx.lineTo(topBottomXCoord, top + height);\n\n // Clip inner bottom right cap\n ctx.lineTo(topBottomXCoord, top + height - borderBottomWidth);\n\n // Ellipse coefficients inner bottom right cap\n const innerBottomRightRadiusX = Math.max(rbr - borderRightWidth, 0);\n const innerBottomRightRadiusY = Math.max(rbr - borderBottomWidth, 0);\n const c1 = innerBottomRightRadiusX * (1.0 - KAPPA);\n const c2 = innerBottomRightRadiusY * (1.0 - KAPPA);\n\n // Clip inner top right cap\n ctx.bezierCurveTo(left + width - borderRightWidth - c1, top + height - borderBottomWidth, left + width - borderRightWidth, top + height - borderBottomWidth - c2, left + width - borderRightWidth, top + height - Math.max(rbr, borderBottomWidth));\n\n // Clip inner right border edge\n ctx.lineTo(left + width - borderRightWidth, top + Math.max(rtr, borderTopWidth));\n\n // Ellipse coefficients inner top right cap\n const innerTopRightRadiusX = Math.max(rtr - borderRightWidth, 0);\n const innerTopRightRadiusY = Math.max(rtr - borderTopWidth, 0);\n const c3 = innerTopRightRadiusX * (1.0 - KAPPA);\n const c4 = innerTopRightRadiusY * (1.0 - KAPPA);\n const topRightXCoord = left + width - Math.max(rtr, borderRightWidth);\n\n // Clip inner top left cap\n ctx.bezierCurveTo(left + width - borderRightWidth, top + borderTopWidth + c4, left + width - borderRightWidth - c3, top + borderTopWidth, topRightXCoord, top + borderTopWidth);\n ctx.lineTo(topRightXCoord, top);\n\n // Move right in case the margin exceedes the radius\n ctx.lineTo(left + width - rtr, top);\n\n // Ellipse coefficients outer top right cap\n const c5 = rtr * (1.0 - KAPPA);\n\n // Clip outer top right cap\n ctx.bezierCurveTo(left + width - c5, top, left + width, top + c5, left + width, top + rtr);\n ctx.closePath();\n ctx.clip();\n\n // Clip border right cap joins\n if (borderTopWidth) {\n const trSlope = -borderTopWidth / borderRightWidth;\n ctx.moveTo(left + width / 2, trSlope * (-width / 2) + top);\n ctx.lineTo(left + width, top);\n ctx.lineTo(left + width, top + height);\n ctx.lineTo(left, top + height);\n ctx.closePath();\n ctx.clip();\n }\n if (borderBottomWidth) {\n const brSlope = borderBottomWidth / borderRightWidth;\n ctx.moveTo(left + width / 2, brSlope * (-width / 2) + top + height);\n ctx.lineTo(left + width, top + height);\n ctx.lineTo(left + width, top);\n ctx.lineTo(left, top);\n ctx.closePath();\n ctx.clip();\n }\n};\nconst fillBorderRight = (ctx, layout, style, rtr, rbr) => {\n const {\n top,\n left,\n width,\n height\n } = layout;\n const {\n borderRightColor,\n borderRightStyle,\n borderRightWidth,\n borderTopWidth,\n borderBottomWidth\n } = style;\n const c0 = rbr * (1.0 - KAPPA);\n const c1 = rtr * (1.0 - KAPPA);\n ctx.moveTo(left + width - rtr, top);\n ctx.bezierCurveTo(left + width - c1, top, left + width, top + c1, left + width, top + rtr);\n ctx.lineTo(left + width, top + height - rbr);\n ctx.bezierCurveTo(left + width, top + height - c0, left + width - c0, top + height, left + width - rbr, top + height);\n ctx.strokeColor(borderRightColor);\n ctx.lineWidth(Math.max(borderRightWidth, borderTopWidth, borderBottomWidth) * 2);\n if (borderRightStyle === 'dashed') {\n ctx.dash(borderRightWidth * 2, {\n space: borderRightWidth * 1.2\n });\n } else if (borderRightStyle === 'dotted') {\n ctx.dash(borderRightWidth, {\n space: borderRightWidth * 1.2\n });\n }\n ctx.stroke();\n ctx.undash();\n};\nconst clipBorderBottom = (ctx, layout, style, rbl, rbr) => {\n const {\n top,\n left,\n width,\n height\n } = layout;\n const {\n borderBottomWidth,\n borderRightWidth,\n borderLeftWidth\n } = style;\n\n // Clip outer top border edge\n ctx.moveTo(left + width - rbr, top + height);\n ctx.lineTo(left + rbl, top + height);\n\n // Ellipse coefficients outer top right cap\n const c0 = rbl * (1.0 - KAPPA);\n\n // Clip outer top right cap\n ctx.bezierCurveTo(left + c0, top + height, left, top + height - c0, left, top + height - rbl);\n\n // Move up in case the margin exceedes the radius\n const bottomLeftYCoord = top + height - Math.max(borderBottomWidth, rbl);\n ctx.lineTo(left, bottomLeftYCoord);\n\n // Clip inner bottom left cap\n ctx.lineTo(left + borderLeftWidth, bottomLeftYCoord);\n\n // Ellipse coefficients inner top right cap\n const innerBottomLeftRadiusX = Math.max(rbl - borderLeftWidth, 0);\n const innerBottomLeftRadiusY = Math.max(rbl - borderBottomWidth, 0);\n const c1 = innerBottomLeftRadiusX * (1.0 - KAPPA);\n const c2 = innerBottomLeftRadiusY * (1.0 - KAPPA);\n\n // Clip inner bottom left cap\n ctx.bezierCurveTo(left + borderLeftWidth, top + height - borderBottomWidth - c2, left + borderLeftWidth + c1, top + height - borderBottomWidth, left + borderLeftWidth + innerBottomLeftRadiusX, top + height - borderBottomWidth);\n\n // Clip inner bottom border edge\n ctx.lineTo(left + width - Math.max(rbr, borderRightWidth), top + height - borderBottomWidth);\n\n // Ellipse coefficients inner top left cap\n const innerBottomRightRadiusX = Math.max(rbr - borderRightWidth, 0);\n const innerBottomRightRadiusY = Math.max(rbr - borderBottomWidth, 0);\n const c3 = innerBottomRightRadiusX * (1.0 - KAPPA);\n const c4 = innerBottomRightRadiusY * (1.0 - KAPPA);\n const bottomRightYCoord = top + height - Math.max(borderBottomWidth, rbr);\n\n // Clip inner top left cap\n ctx.bezierCurveTo(left + width - borderRightWidth - c3, top + height - borderBottomWidth, left + width - borderRightWidth, top + height - borderBottomWidth - c4, left + width - borderRightWidth, bottomRightYCoord);\n ctx.lineTo(left + width, bottomRightYCoord);\n\n // Move down in case the margin exceedes the radius\n ctx.lineTo(left + width, top + height - rbr);\n\n // Ellipse coefficients outer top left cap\n const c5 = rbr * (1.0 - KAPPA);\n\n // Clip outer top left cap\n ctx.bezierCurveTo(left + width, top + height - c5, left + width - c5, top + height, left + width - rbr, top + height);\n ctx.closePath();\n ctx.clip();\n\n // Clip border bottom cap joins\n if (borderRightWidth) {\n const brSlope = borderBottomWidth / borderRightWidth;\n ctx.moveTo(left + width / 2, brSlope * (-width / 2) + top + height);\n ctx.lineTo(left + width, top + height);\n ctx.lineTo(left, top + height);\n ctx.lineTo(left, top);\n ctx.closePath();\n ctx.clip();\n }\n if (borderLeftWidth) {\n const trSlope = -borderBottomWidth / borderLeftWidth;\n ctx.moveTo(left + width / 2, trSlope * (width / 2) + top + height);\n ctx.lineTo(left, top + height);\n ctx.lineTo(left + width, top + height);\n ctx.lineTo(left + width, top);\n ctx.closePath();\n ctx.clip();\n }\n};\nconst fillBorderBottom = (ctx, layout, style, rbl, rbr) => {\n const {\n top,\n left,\n width,\n height\n } = layout;\n const {\n borderBottomColor,\n borderBottomStyle,\n borderBottomWidth,\n borderRightWidth,\n borderLeftWidth\n } = style;\n const c0 = rbl * (1.0 - KAPPA);\n const c1 = rbr * (1.0 - KAPPA);\n ctx.moveTo(left + width, top + height - rbr);\n ctx.bezierCurveTo(left + width, top + height - c1, left + width - c1, top + height, left + width - rbr, top + height);\n ctx.lineTo(left + rbl, top + height);\n ctx.bezierCurveTo(left + c0, top + height, left, top + height - c0, left, top + height - rbl);\n ctx.strokeColor(borderBottomColor);\n ctx.lineWidth(Math.max(borderBottomWidth, borderRightWidth, borderLeftWidth) * 2);\n if (borderBottomStyle === 'dashed') {\n ctx.dash(borderBottomWidth * 2, {\n space: borderBottomWidth * 1.2\n });\n } else if (borderBottomStyle === 'dotted') {\n ctx.dash(borderBottomWidth, {\n space: borderBottomWidth * 1.2\n });\n }\n ctx.stroke();\n ctx.undash();\n};\nconst clipBorderLeft = (ctx, layout, style, rbl, rtl) => {\n const {\n top,\n left,\n width,\n height\n } = layout;\n const {\n borderTopWidth,\n borderLeftWidth,\n borderBottomWidth\n } = style;\n\n // Clip outer left border edge\n ctx.moveTo(left, top + height - rbl);\n ctx.lineTo(left, top + rtl);\n\n // Ellipse coefficients outer top left cap\n const c0 = rtl * (1.0 - KAPPA);\n\n // Clip outer top left cap\n ctx.bezierCurveTo(left, top + c0, left + c0, top, left + rtl, top);\n\n // Move right in case the margin exceedes the radius\n const topLeftCoordX = left + Math.max(borderLeftWidth, rtl);\n ctx.lineTo(topLeftCoordX, top);\n\n // Clip inner top left cap\n ctx.lineTo(topLeftCoordX, top + borderTopWidth);\n\n // Ellipse coefficients inner top left cap\n const innerTopLeftRadiusX = Math.max(rtl - borderLeftWidth, 0);\n const innerTopLeftRadiusY = Math.max(rtl - borderTopWidth, 0);\n const c1 = innerTopLeftRadiusX * (1.0 - KAPPA);\n const c2 = innerTopLeftRadiusY * (1.0 - KAPPA);\n\n // Clip inner top right cap\n ctx.bezierCurveTo(left + borderLeftWidth + c1, top + borderTopWidth, left + borderLeftWidth, top + borderTopWidth + c2, left + borderLeftWidth, top + Math.max(rtl, borderTopWidth));\n\n // Clip inner left border edge\n ctx.lineTo(left + borderLeftWidth, top + height - Math.max(rbl, borderBottomWidth));\n\n // Ellipse coefficients inner bottom left cap\n const innerBottomLeftRadiusX = Math.max(rbl - borderLeftWidth, 0);\n const innerBottomLeftRadiusY = Math.max(rbl - borderBottomWidth, 0);\n const c3 = innerBottomLeftRadiusX * (1.0 - KAPPA);\n const c4 = innerBottomLeftRadiusY * (1.0 - KAPPA);\n const bottomLeftXCoord = left + Math.max(rbl, borderLeftWidth);\n\n // Clip inner top left cap\n ctx.bezierCurveTo(left + borderLeftWidth, top + height - borderBottomWidth - c4, left + borderLeftWidth + c3, top + height - borderBottomWidth, bottomLeftXCoord, top + height - borderBottomWidth);\n ctx.lineTo(bottomLeftXCoord, top + height);\n\n // Move left in case the margin exceedes the radius\n ctx.lineTo(left + rbl, top + height);\n\n // Ellipse coefficients outer top right cap\n const c5 = rbl * (1.0 - KAPPA);\n\n // Clip outer top right cap\n ctx.bezierCurveTo(left + c5, top + height, left, top + height - c5, left, top + height - rbl);\n ctx.closePath();\n ctx.clip();\n\n // Clip border right cap joins\n if (borderBottomWidth) {\n const trSlope = -borderBottomWidth / borderLeftWidth;\n ctx.moveTo(left + width / 2, trSlope * (width / 2) + top + height);\n ctx.lineTo(left, top + height);\n ctx.lineTo(left, top);\n ctx.lineTo(left + width, top);\n ctx.closePath();\n ctx.clip();\n }\n if (borderBottomWidth) {\n const trSlope = -borderTopWidth / borderLeftWidth;\n ctx.moveTo(left + width / 2, trSlope * (-width / 2) + top);\n ctx.lineTo(left, top);\n ctx.lineTo(left, top + height);\n ctx.lineTo(left + width, top + height);\n ctx.closePath();\n ctx.clip();\n }\n};\nconst fillBorderLeft = (ctx, layout, style, rbl, rtl) => {\n const {\n top,\n left,\n height\n } = layout;\n const {\n borderLeftColor,\n borderLeftStyle,\n borderLeftWidth,\n borderTopWidth,\n borderBottomWidth\n } = style;\n const c0 = rbl * (1.0 - KAPPA);\n const c1 = rtl * (1.0 - KAPPA);\n ctx.moveTo(left + rbl, top + height);\n ctx.bezierCurveTo(left + c0, top + height, left, top + height - c0, left, top + height - rbl);\n ctx.lineTo(left, top + rtl);\n ctx.bezierCurveTo(left, top + c1, left + c1, top, left + rtl, top);\n ctx.strokeColor(borderLeftColor);\n ctx.lineWidth(Math.max(borderLeftWidth, borderTopWidth, borderBottomWidth) * 2);\n if (borderLeftStyle === 'dashed') {\n ctx.dash(borderLeftWidth * 2, {\n space: borderLeftWidth * 1.2\n });\n } else if (borderLeftStyle === 'dotted') {\n ctx.dash(borderLeftWidth, {\n space: borderLeftWidth * 1.2\n });\n }\n ctx.stroke();\n ctx.undash();\n};\nconst shouldRenderBorders = node => node.box && (node.box.borderTopWidth || node.box.borderRightWidth || node.box.borderBottomWidth || node.box.borderLeftWidth);\nconst renderBorders = (ctx, node) => {\n if (!shouldRenderBorders(node)) return;\n const {\n width,\n height,\n borderTopWidth,\n borderLeftWidth,\n borderRightWidth,\n borderBottomWidth\n } = node.box;\n const {\n opacity,\n borderTopLeftRadius = 0,\n borderTopRightRadius = 0,\n borderBottomLeftRadius = 0,\n borderBottomRightRadius = 0,\n borderTopColor = 'black',\n borderTopStyle = 'solid',\n borderLeftColor = 'black',\n borderLeftStyle = 'solid',\n borderRightColor = 'black',\n borderRightStyle = 'solid',\n borderBottomColor = 'black',\n borderBottomStyle = 'solid'\n } = node.style;\n const style = {\n borderTopColor,\n borderTopWidth,\n borderTopStyle,\n borderLeftColor,\n borderLeftWidth,\n borderLeftStyle,\n borderRightColor,\n borderRightWidth,\n borderRightStyle,\n borderBottomColor,\n borderBottomWidth,\n borderBottomStyle,\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius\n };\n const rtr = Math.min(borderTopRightRadius, 0.5 * width, 0.5 * height);\n const rtl = Math.min(borderTopLeftRadius, 0.5 * width, 0.5 * height);\n const rbr = Math.min(borderBottomRightRadius, 0.5 * width, 0.5 * height);\n const rbl = Math.min(borderBottomLeftRadius, 0.5 * width, 0.5 * height);\n ctx.save();\n ctx.strokeOpacity(opacity);\n if (borderTopWidth) {\n ctx.save();\n clipBorderTop(ctx, node.box, style, rtr, rtl);\n fillBorderTop(ctx, node.box, style, rtr, rtl);\n ctx.restore();\n }\n if (borderRightWidth) {\n ctx.save();\n clipBorderRight(ctx, node.box, style, rtr, rbr);\n fillBorderRight(ctx, node.box, style, rtr, rbr);\n ctx.restore();\n }\n if (borderBottomWidth) {\n ctx.save();\n clipBorderBottom(ctx, node.box, style, rbl, rbr);\n fillBorderBottom(ctx, node.box, style, rbl, rbr);\n ctx.restore();\n }\n if (borderLeftWidth) {\n ctx.save();\n clipBorderLeft(ctx, node.box, style, rbl, rtl);\n fillBorderLeft(ctx, node.box, style, rbl, rtl);\n ctx.restore();\n }\n ctx.restore();\n};\n\nconst drawBackground = (ctx, node) => {\n var _node$style;\n const {\n top,\n left,\n width,\n height\n } = node.box;\n const color = parseColor(node.style.backgroundColor);\n const nodeOpacity = isNil((_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.opacity) ? 1 : node.style.opacity;\n const opacity = Math.min(color.opacity, nodeOpacity);\n ctx.fillOpacity(opacity).fillColor(color.value).rect(left, top, width, height).fill();\n};\nconst renderBackground = (ctx, node) => {\n var _node$style2;\n const hasBackground = !!node.box && !!((_node$style2 = node.style) !== null && _node$style2 !== void 0 && _node$style2.backgroundColor);\n if (hasBackground) {\n ctx.save();\n clipNode(ctx, node);\n drawBackground(ctx, node);\n ctx.restore();\n }\n};\n\nconst isSrcId = value => /^#.+/.test(value);\nconst setLink = (ctx, node) => {\n const props = node.props || {};\n const {\n top,\n left,\n width,\n height\n } = node.box;\n const src = props.src || props.href;\n if (src) {\n const isId = isSrcId(src);\n const method = isId ? 'goTo' : 'link';\n const value = isId ? src.slice(1) : src;\n ctx[method](left, top, width, height, value);\n }\n};\n\nconst setDestination = (ctx, node) => {\n var _node$props;\n if ((_node$props = node.props) !== null && _node$props !== void 0 && _node$props.id) {\n ctx.addNamedDestination(node.props.id, 'XYZ', null, node.box.top, null);\n }\n};\n\nconst isRecursiveNode = node => node.type !== P.Text && node.type !== P.Svg;\nconst renderChildren = (ctx, node, options) => {\n ctx.save();\n if (node.box) {\n ctx.translate(node.box.left, node.box.top);\n }\n const children = node.children || [];\n const renderChild = child => renderNode(ctx, child, options);\n children.forEach(renderChild);\n ctx.restore();\n};\nconst renderFns = {\n [P.Text]: renderText,\n [P.Note]: renderNote,\n [P.Image]: renderImage,\n [P.Canvas]: renderCanvas,\n [P.Svg]: renderSvg,\n [P.Link]: setLink\n};\nconst renderNode = (ctx, node, options) => {\n var _node$style;\n const overflowHidden = ((_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.overflow) === 'hidden';\n const shouldRenderChildren = isRecursiveNode(node);\n if (node.type === P.Page) renderPage(ctx, node);\n ctx.save();\n if (overflowHidden) clipNode(ctx, node);\n applyTransformations(ctx, node);\n renderBackground(ctx, node);\n renderBorders(ctx, node);\n const renderFn = renderFns[node.type];\n if (renderFn) renderFn(ctx, node, options);\n if (shouldRenderChildren) renderChildren(ctx, node, options);\n setDestination(ctx, node);\n renderDebug(ctx, node);\n ctx.restore();\n};\n\n/* eslint-disable no-param-reassign */\n\nconst setPDFMetadata = target => (key, value) => {\n if (value) target.info[key] = value;\n};\n\n/**\n * Set document instance metadata\n *\n * @param {Object} ctx document instance\n * @param {Object} doc document root\n */\nconst addMetadata = (ctx, doc) => {\n var _props$creator, _props$producer;\n const setProp = setPDFMetadata(ctx);\n const props = doc.props || {};\n const title = props.title || null;\n const author = props.author || null;\n const subject = props.subject || null;\n const keywords = props.keywords || null;\n const creator = (_props$creator = props.creator) != null ? _props$creator : 'react-pdf';\n const producer = (_props$producer = props.producer) != null ? _props$producer : 'react-pdf';\n const creationDate = props.creationDate || new Date();\n const modificationDate = props.modificationDate || null;\n setProp('Title', title);\n setProp('Author', author);\n setProp('Subject', subject);\n setProp('Keywords', keywords);\n setProp('Creator', creator);\n setProp('Producer', producer);\n setProp('CreationDate', creationDate);\n setProp('ModificationDate', modificationDate);\n};\n\n/* eslint-disable no-param-reassign */\n\nconst addNodeBookmark = (ctx, node, pageNumber, registry) => {\n var _node$props;\n const bookmark = (_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.bookmark;\n if (bookmark) {\n const {\n title,\n parent,\n expanded,\n zoom,\n fit\n } = bookmark;\n const outline = registry[parent] || ctx.outline;\n const top = bookmark.top || node.box.top;\n const left = bookmark.left || node.box.left;\n const instance = outline.addItem(title, {\n pageNumber,\n expanded,\n top,\n left,\n zoom,\n fit\n });\n registry[bookmark.ref] = instance;\n }\n if (!node.children) return;\n node.children.forEach(child => addNodeBookmark(ctx, child, pageNumber, registry));\n};\nconst addBookmarks = (ctx, root) => {\n const registry = {};\n const pages = root.children || [];\n pages.forEach((page, i) => {\n addNodeBookmark(ctx, page, i, registry);\n });\n};\n\nconst render = (ctx, doc) => {\n const pages = doc.children || [];\n const options = {\n imageCache: new Map()\n };\n addMetadata(ctx, doc);\n pages.forEach(page => renderNode(ctx, page, options));\n addBookmarks(ctx, doc);\n ctx.end();\n return ctx;\n};\n\nexport { render as default };\n","import * as r from \"restructure\";\n\nconst DACTable = new r.Struct({\n identifier: new r.Buffer(1),\n value: new r.Buffer(1),\n});\n\nconst DACMarker = {\n name: () => \"DAC\",\n length: r.uint16be,\n tables: new r.Array(DACTable, (parent) => parent.length / 2),\n};\n\nexport default DACMarker;\n","export const readUInt8 = (array, offset) => {\n return array[offset];\n};\n\nexport const readUInt16BE = (array, offset) => {\n return (array[offset] << 8) | array[offset + 1];\n};\n\nexport const readUInt16LE = (array, offset) => {\n return array[offset] | (array[offset + 1] << 8);\n};\n\nexport const readUInt32BE = (array, offset) => {\n return (\n (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]\n );\n};\n\nexport const readUInt32LE = (array, offset) => {\n return (\n array[offset] |\n (array[offset + 1] << 8) |\n (array[offset + 2] << 16) |\n (array[offset + 3] << 24)\n );\n};\n\nexport const uint8ArrayToHexString = (uint8Array) => {\n return Array.from(uint8Array, (byte) =>\n byte.toString(16).padStart(2, \"0\"),\n ).join(\"\");\n};\n\nconst decoder = new TextDecoder(\"utf-8\");\n\nexport const uint8ArrayToString = (uint8Array) => {\n return decoder.decode(uint8Array);\n};\n\nexport const concatenateUint8Arrays = (arrays) => {\n const totalLength = arrays.reduce((length, arr) => length + arr.length, 0);\n const concatenatedArray = new Uint8Array(totalLength);\n\n let offset = 0;\n\n arrays.forEach((arr) => {\n concatenatedArray.set(arr, offset);\n offset += arr.length;\n });\n\n return concatenatedArray;\n};\n\nexport const readInt32BE = (array, offset) => {\n return readUInt32BE(array, offset) | 0;\n};\n\nexport const readInt32LE = (array, offset) => {\n return readUInt32LE(array, offset) | 0;\n};\n","import * as r from \"restructure\";\nimport { concatenateUint8Arrays, readUInt8 } from \"./utils.js\";\n\nclass HuffmanTableElements {\n decode(stream, parent) {\n const tables = {};\n\n let buffer = stream.buffer.slice(\n stream.pos,\n stream.pos + parent.length - 2,\n );\n\n while (buffer.length > 0) {\n let offset = 1;\n\n const elements = [];\n const identifier = readUInt8(buffer, 0);\n const lengths = buffer.slice(offset, offset + 16);\n\n offset += 16;\n\n for (const length of lengths) {\n elements.push(buffer.slice(offset, offset + length));\n offset += length;\n }\n\n buffer = buffer.slice(offset);\n\n tables[identifier] = concatenateUint8Arrays(elements);\n }\n\n stream.pos += parent.length - 2;\n\n return tables;\n }\n}\n\nconst DefineHuffmanTableMarker = {\n name: () => \"DHT\",\n length: r.uint16be,\n tables: new HuffmanTableElements(),\n};\n\nexport default DefineHuffmanTableMarker;\n","import * as r from \"restructure\";\n\nconst DQTMarker = {\n name: () => \"DQT\",\n length: r.uint16be,\n tables: new r.Array(\n new r.Struct({\n identifier: new r.Buffer(1),\n data: new r.Buffer(64),\n }),\n (parent) => (parent.length - 2) / 65,\n ),\n};\n\nexport default DQTMarker;\n","import * as r from \"restructure\";\n\nconst DRIMarker = {\n name: () => \"DRI\",\n length: r.uint16be,\n restartInterval: r.uint16be,\n};\n\nexport default DRIMarker;\n","import * as r from \"restructure\";\n\nconst EndOfImageMarker = {\n name: () => \"EOI\",\n afterEOI: new r.Reserved(r.uint8, Infinity),\n};\n\nexport default EndOfImageMarker;\n","import * as r from \"restructure\";\nimport {\n readUInt8,\n readUInt16BE,\n readUInt16LE,\n readUInt32BE,\n readUInt32LE,\n uint8ArrayToHexString,\n uint8ArrayToString,\n readInt32BE,\n readInt32LE,\n} from \"./utils.js\";\n\nconst tags = {\n ifd: {\n \"010e\": \"imageDescription\",\n \"010f\": \"make\",\n \"011a\": \"xResolution\",\n \"011b\": \"yResolution\",\n \"011c\": \"planarConfiguration\",\n \"012d\": \"transferFunction\",\n \"013b\": \"artist\",\n \"013e\": \"whitePoint\",\n \"013f\": \"primaryChromaticities\",\n \"0100\": \"imageWidth\",\n \"0101\": \"imageHeight\",\n \"0102\": \"bitsPerSample\",\n \"0103\": \"compression\",\n \"0106\": \"photometricInterpretation\",\n \"0110\": \"model\",\n \"0111\": \"stripOffsets\",\n \"0112\": \"orientation\",\n \"0115\": \"samplesPerPixel\",\n \"0116\": \"rowsPerStrip\",\n \"0117\": \"stripByteCounts\",\n \"0128\": \"resolutionUnit\",\n \"0131\": \"software\",\n \"0132\": \"dateTime\",\n \"0201\": \"jpegInterchangeFormat\",\n \"0202\": \"jpegInterchangeFormatLength\",\n \"0211\": \"ycbCrCoefficients\",\n \"0212\": \"ycbCrSubSampling\",\n \"0213\": \"ycbCrPositioning\",\n \"0214\": \"referenceBlackWhite\",\n \"829a\": \"exposureTime\",\n \"829d\": \"fNumber\",\n \"920a\": \"focalLength\",\n \"927c\": \"makerNote\",\n 8298: \"copyright\",\n 8769: \"exifIFDPointer\",\n 8822: \"exposureProgram\",\n 8824: \"spectralSensitivity\",\n 8825: \"gpsInfoIFDPointer\",\n 8827: \"photographicSensitivity\",\n 8828: \"oecf\",\n 8830: \"sensitivityType\",\n 8831: \"standardOutputSensitivity\",\n 8832: \"recommendedExposureIndex\",\n 8833: \"isoSpeed\",\n 8834: \"isoSpeedLatitudeyyy\",\n 8835: \"isoSpeedLatitudezzz\",\n 9000: \"exifVersion\",\n 9003: \"dateTimeOriginal\",\n 9004: \"dateTimeDigitized\",\n 9101: \"componentsConfiguration\",\n 9102: \"compressedBitsPerPixel\",\n 9201: \"shutterSpeedValue\",\n 9202: \"apertureValue\",\n 9203: \"brightnessValue\",\n 9204: \"exposureBiasValue\",\n 9205: \"maxApertureValue\",\n 9206: \"subjectDistance\",\n 9207: \"meteringMode\",\n 9208: \"lightSource\",\n 9209: \"flash\",\n 9214: \"subjectArea\",\n 9286: \"userComment\",\n 9290: \"subSecTime\",\n 9291: \"subSecTimeOriginal\",\n 9292: \"subSecTimeDigitized\",\n a000: \"flashpixVersion\",\n a001: \"colorSpace\",\n a002: \"pixelXDimension\",\n a003: \"pixelYDimension\",\n a004: \"relatedSoundFile\",\n a005: \"interoperabilityIFDPointer\",\n a20b: \"flashEnergy\",\n a20c: \"spatialFrequencyResponse\",\n a20e: \"focalPlaneXResolution\",\n a20f: \"focalPlaneYResolution\",\n a40a: \"sharpness\",\n a40b: \"deviceSettingDescription\",\n a40c: \"subjectDistanceRange\",\n a210: \"focalPlaneResolutionUnit\",\n a214: \"subjectLocation\",\n a215: \"exposureIndex\",\n a217: \"sensingMethod\",\n a300: \"fileSource\",\n a301: \"sceneType\",\n a302: \"cfaPattern\",\n a401: \"customRendered\",\n a402: \"exposureMode\",\n a403: \"whiteBalance\",\n a404: \"digitalZoomRatio\",\n a405: \"focalLengthIn35mmFilm\",\n a406: \"sceneCaptureType\",\n a407: \"gainControl\",\n a408: \"contrast\",\n a409: \"saturation\",\n a420: \"imageUniqueID\",\n a430: \"cameraOwnerName\",\n a431: \"bodySerialNumber\",\n a432: \"lensSpecification\",\n a433: \"lensMake\",\n a434: \"lensModel\",\n a435: \"lensSerialNumber\",\n a500: \"gamma\",\n },\n gps: {\n \"0000\": \"gpsVersionID\",\n \"0001\": \"gpsLatitudeRef\",\n \"0002\": \"gpsLatitude\",\n \"0003\": \"gpsLongitudeRef\",\n \"0004\": \"gpsLongitude\",\n \"0005\": \"gpsAltitudeRef\",\n \"0006\": \"gpsAltitude\",\n \"0007\": \"gpsTimeStamp\",\n \"0008\": \"gpsSatellites\",\n \"0009\": \"gpsStatus\",\n \"000a\": \"gpsMeasureMode\",\n \"000b\": \"gpsDOP\",\n \"000c\": \"gpsSpeedRef\",\n \"000d\": \"gpsSpeed\",\n \"000e\": \"gpsTrackRef\",\n \"000f\": \"gpsTrack\",\n \"0010\": \"gpsImgDirectionRef\",\n \"0011\": \"gpsImgDirection\",\n \"0012\": \"gpsMapDatum\",\n \"0013\": \"gpsDestLatitudeRef\",\n \"0014\": \"gpsDestLatitude\",\n \"0015\": \"gpsDestLongitudeRef\",\n \"0016\": \"gpsDestLongitude\",\n \"0017\": \"gpsDestBearingRef\",\n \"0018\": \"gpsDestBearing\",\n \"0019\": \"gpsDestDistanceRef\",\n \"001a\": \"gpsDestDistance\",\n \"001b\": \"gpsProcessingMethod\",\n \"001c\": \"gpsAreaInformation\",\n \"001d\": \"gpsDateStamp\",\n \"001e\": \"gpsDifferential\",\n \"001f\": \"gpsHPositioningError\",\n },\n};\n\nclass IDFEntries {\n constructor(bigEndian) {\n this.bigEndian = bigEndian;\n this.bytes = [0, 1, 1, 2, 4, 8, 1, 1, 2, 4, 8, 4, 8];\n }\n\n _getTagValue(dataValue, dataFormat, componentsNumber) {\n switch (dataFormat) {\n case 2:\n return dataValue.toString(\"ascii\").replace(/\\0+$/, \"\");\n case 129:\n return dataValue.toString(\"utf8\").replace(/\\0+$/, \"\");\n case 7:\n return \"0x\" + dataValue.toString(\"hex\");\n default:\n return this._getTagValueForNumericalData(dataValue, dataFormat, componentsNumber);\n }\n }\n\n _getTagValueForNumericalData(dataValue, dataFormat, componentsNumber) {\n const tagValue = [];\n const componentsBytes = this.bytes[dataFormat];\n for (let i = 0; i < componentsNumber; i += 1) {\n tagValue.push(this._getSingleTagValueForNumericalData(dataValue, dataFormat, i * componentsBytes));\n }\n return tagValue.length === 1 ? tagValue[0] : tagValue;\n }\n\n _getSingleTagValueForNumericalData(dataValue, dataFormat, pos) {\n const uint16 = (pos) =>\n this.bigEndian\n ? readUInt16BE(dataValue, pos)\n : readUInt16LE(dataValue, pos);\n\n const uint32 = (pos) =>\n this.bigEndian\n ? readUInt32BE(dataValue, pos)\n : readUInt32LE(dataValue, pos);\n\n const int32 = (pos) =>\n this.bigEndian\n ? readInt32BE(dataValue, pos)\n : readInt32LE(dataValue, pos);\n\n switch (dataFormat) {\n case 1:\n return readUInt8(dataValue, pos)\n case 3:\n return uint16(pos);\n case 4:\n return uint32(pos);\n case 5:\n return uint32(pos) / uint32(pos + 4);\n case 9:\n return int32(pos);\n case 10: {\n return int32(pos) / int32(pos + 4);\n }\n }\n }\n\n _decodeIDFEntries(buffer, tags, offset, log = false) {\n let pos = 2 + offset;\n\n const entries = {};\n\n const uint16 = (pos) =>\n this.bigEndian ? readUInt16BE(buffer, pos) : readUInt16LE(buffer, pos);\n\n const uint32 = (pos) =>\n this.bigEndian ? readUInt32BE(buffer, pos) : readUInt32LE(buffer, pos);\n\n const numberOfEntries = uint16(offset);\n\n for (let i = 0; i < numberOfEntries; i++) {\n const tagAddress = buffer.slice(pos, pos + 2);\n const dataFormat = uint16(pos + 2);\n const componentsNumber = uint32(pos + 4);\n const componentsBytes = this.bytes[dataFormat];\n const dataLength = componentsNumber * componentsBytes;\n\n let dataValue = buffer.slice(pos + 8, pos + 12);\n\n if (dataLength > 4) {\n const dataOffset = this.bigEndian\n ? readUInt32BE(dataValue, 0)\n : readUInt32LE(dataValue, 0);\n\n dataValue = buffer.slice(dataOffset, dataOffset + dataLength);\n }\n\n const tagValue = this._getTagValue(dataValue, dataFormat, componentsNumber);\n\n const tagNumber = this.bigEndian\n ? uint8ArrayToHexString(tagAddress)\n : uint8ArrayToHexString(tagAddress.reverse());\n\n const tagName = tags[tagNumber];\n\n entries[tagName] = tagValue;\n\n pos += 12;\n }\n\n return entries;\n }\n\n decode(stream, parent) {\n const buffer = stream.buffer.slice(stream.pos - 8);\n const offsetToFirstIFD = parent.offsetToFirstIFD;\n\n if (offsetToFirstIFD > buffer.length) {\n stream.pos += parent.parent.length - 16;\n return {};\n }\n\n const entries = this._decodeIDFEntries(buffer, tags.ifd, offsetToFirstIFD);\n const { exifIFDPointer, gpsInfoIFDPointer } = entries;\n\n if (exifIFDPointer) {\n entries.subExif = this._decodeIDFEntries(\n buffer,\n tags.ifd,\n exifIFDPointer,\n );\n }\n\n if (gpsInfoIFDPointer) {\n const gps = gpsInfoIFDPointer;\n entries.gpsInfo = this._decodeIDFEntries(buffer, tags.gps, gps, true);\n }\n\n stream.pos += parent.parent.length - 16;\n\n return entries;\n }\n}\n\nconst IFDData = (bigEndian) => {\n const uint16 = bigEndian ? r.uint16be : r.uint16le;\n const uint32 = bigEndian ? r.uint32be : r.uint32le;\n\n return new r.Struct({\n fortyTwo: uint16,\n offsetToFirstIFD: uint32,\n entries: new IDFEntries(bigEndian),\n });\n};\n\nclass TIFFHeader {\n decode(stream, parent) {\n const byteOrder = uint8ArrayToString(\n stream.buffer.slice(stream.pos, stream.pos + 2),\n );\n\n const bigEndian = byteOrder === \"MM\";\n\n stream.pos += 2;\n\n const data = IFDData(bigEndian).decode(stream, parent);\n\n return data.entries;\n }\n}\n\nconst EXIFMarker = {\n name: () => \"EXIF\",\n length: r.uint16be,\n identifier: new r.String(6),\n entries: new TIFFHeader(),\n};\n\nexport default EXIFMarker;\n","import * as r from \"restructure\";\n\nconst JFIFMarker = {\n name: () => \"JFIF\",\n length: r.uint16be,\n identifier: new r.String(5),\n version: r.uint16be,\n units: r.uint8,\n xDensity: r.uint16be,\n yDensity: r.uint16be,\n thumbnailWidth: r.uint8,\n thumbnailHeight: r.uint8,\n};\n\nexport default JFIFMarker;\n","import * as r from \"restructure\";\n\nclass ImageData {\n decode(stream) {\n const buffer = stream.buffer.slice(stream.pos);\n\n let length = 0;\n let i = buffer.indexOf(0xff);\n\n while (i !== -1) {\n length = i;\n\n const nextByte = buffer[length + 1];\n const comesRestart = nextByte >= 0xd0 && nextByte <= 0xd7;\n\n if (nextByte !== 0x00 && !comesRestart) break;\n\n i = buffer.indexOf(0xff, i + 1);\n }\n\n stream.pos += length;\n\n return buffer.slice(0, length);\n }\n}\n\nconst SOSComponentSpecification = new r.Struct({\n scanComponentSelector: r.uint8,\n entropyCodingTable: new r.Buffer(1),\n});\n\nconst SOSMarker = {\n name: () => \"SOS\",\n length: r.uint16be,\n numberOfImageComponents: r.uint8,\n componentSpecifications: new r.Array(\n SOSComponentSpecification,\n (parent) => parent.numberOfImageComponents,\n ),\n startOfSpectral: r.uint8,\n endOfSpectral: r.uint8,\n successiveApproximationBit: new r.Buffer(1),\n data: new ImageData(),\n};\n\nexport default SOSMarker;\n","import * as r from \"restructure\";\n\nconst FrameColorComponent = new r.Struct({\n id: r.uint8,\n samplingFactors: r.uint8,\n quantizationTableId: r.uint8,\n});\n\nconst StartOfFrameMarker = {\n name: () => \"SOF\",\n length: r.uint16be,\n precision: r.uint8,\n height: r.uint16be,\n width: r.uint16be,\n numberOfComponents: r.uint8,\n components: new r.Array(\n FrameColorComponent,\n (parent) => parent.numberOfComponents,\n ),\n};\n\nexport default StartOfFrameMarker;\n","const StartOfImageMarker = {\n name: () => \"SOI\",\n};\n\nexport default StartOfImageMarker;\n","import * as r from \"restructure\";\n\nimport DACMarker from \"./markers/dac.js\";\nimport DefineHuffmanTableMarker from \"./markers/dht.js\";\nimport DQTMarker from \"./markers/dqt.js\";\nimport DRIMarker from \"./markers/dri.js\";\nimport EndOfImageMarker from \"./markers/eoi.js\";\nimport EXIFMarker from \"./markers/exif.js\";\nimport JFIFMarker from \"./markers/jfif.js\";\nimport SOSMarker from \"./markers/sos.js\";\nimport StartOfFrameMarker from \"./markers/sof.js\";\nimport StartOfImageMarker from \"./markers/soi.js\";\n\nconst UnknownMarker = {\n length: r.uint16be,\n buf: new r.Buffer((parent) => parent.length - 2),\n};\n\nconst unknownMarkers = Array(63)\n .fill(0)\n .reduce((acc, v, i) => ({ ...acc, [i + 0xffc0]: UnknownMarker }), {});\n\nconst Marker = new r.VersionedStruct(r.uint16be, {\n ...unknownMarkers,\n 0xffc0: StartOfFrameMarker,\n 0xffc1: StartOfFrameMarker,\n 0xffc2: StartOfFrameMarker,\n 0xffc3: StartOfFrameMarker,\n 0xffc4: DefineHuffmanTableMarker,\n 0xffc5: StartOfFrameMarker,\n 0xffc6: StartOfFrameMarker,\n 0xffc7: StartOfFrameMarker,\n 0xffc9: StartOfFrameMarker,\n 0xffca: StartOfFrameMarker,\n 0xffcb: StartOfFrameMarker,\n 0xffcc: DACMarker,\n 0xffcd: StartOfFrameMarker,\n 0xffce: StartOfFrameMarker,\n 0xffcf: StartOfFrameMarker,\n 0xffd8: StartOfImageMarker,\n 0xffd9: EndOfImageMarker,\n 0xffda: SOSMarker,\n 0xffdb: DQTMarker,\n 0xffdd: DRIMarker,\n 0xffe0: JFIFMarker,\n 0xffe1: EXIFMarker,\n});\n\nconst JPEG = new r.Array(Marker);\n\nconst decode = (buffer) => {\n const markers = JPEG.fromBuffer(buffer);\n return markers.map(({ version, ...rest }) => ({ type: version, ...rest }));\n};\n\nexport default { decode };\n","var global$1 = (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray$1 = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined\n ? global$1.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) ;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray$1(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer$1;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray$1(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return ''\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer$1(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nvar _polyfillNode_buffer = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Buffer: Buffer,\n INSPECT_MAX_BYTES: INSPECT_MAX_BYTES,\n SlowBuffer: SlowBuffer,\n isBuffer: isBuffer$1,\n kMaxLength: _kMaxLength\n});\n\n// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global$1.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global$1.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding$1(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global$1.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nvar browser$1 = {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding$1,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction getAugmentedNamespace(n) {\n if (n.__esModule) return n;\n var f = n.default;\n\tif (typeof f == \"function\") {\n\t\tvar a = function a () {\n\t\t\tif (this instanceof a) {\n return Reflect.construct(f, arguments, this.constructor);\n\t\t\t}\n\t\t\treturn f.apply(this, arguments);\n\t\t};\n\t\ta.prototype = f.prototype;\n } else a = {};\n Object.defineProperty(a, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nvar lib = {};\n\nvar require$$0 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_buffer);\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active ) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n \n// Alias for removeListener added in NodeJS 10.0\n// https://nodejs.org/api/events.html#events_emitter_off_eventname_listener\nEventEmitter.prototype.off = function(type, listener){\n return this.removeListener(type, listener);\n};\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount$1.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount$1;\nfunction listenerCount$1(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nfunction format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect$1(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect$1(x);\n }\n }\n return str;\n}\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nfunction deprecate(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global$1.process)) {\n return function() {\n return deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (browser$1.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (browser$1.throwDeprecation) {\n throw new Error(msg);\n } else if (browser$1.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\nvar debugs = {};\nvar debugEnviron;\nfunction debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = browser$1.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n}\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect$1(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect$1.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect$1.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect$1.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect$1.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect$1.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect$1 &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var length = output.reduce(function(prev, cur) {\n if (cur.indexOf('\\n') >= 0) ;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nfunction isBuffer(maybeBuf) {\n return Buffer.isBuffer(maybeBuf);\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nfunction log() {\n console.log('%s - %s', timestamp(), format.apply(null, arguments));\n}\n\nfunction _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n}\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nfunction promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\npromisify.custom = kCustomPromisifiedSymbol;\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { browser$1.nextTick(cb.bind(null, null, ret)); },\n function(rej) { browser$1.nextTick(callbackifyOnRejected.bind(null, rej, cb)); });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n return callbackified;\n}\n\nvar _polyfillNode_util = {\n inherits: inherits$1,\n _extend: _extend,\n log: log,\n isBuffer: isBuffer,\n isPrimitive: isPrimitive,\n isFunction: isFunction,\n isError: isError,\n isDate: isDate,\n isObject: isObject,\n isRegExp: isRegExp,\n isUndefined: isUndefined,\n isSymbol: isSymbol,\n isString: isString,\n isNumber: isNumber,\n isNullOrUndefined: isNullOrUndefined,\n isNull: isNull,\n isBoolean: isBoolean,\n isArray: isArray,\n inspect: inspect$1,\n deprecate: deprecate,\n format: format,\n debuglog: debuglog,\n promisify: promisify,\n callbackify: callbackify,\n};\n\nvar _polyfillNode_util$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n _extend: _extend,\n callbackify: callbackify,\n debuglog: debuglog,\n default: _polyfillNode_util,\n deprecate: deprecate,\n format: format,\n inherits: inherits$1,\n inspect: inspect$1,\n isArray: isArray,\n isBoolean: isBoolean,\n isBuffer: isBuffer,\n isDate: isDate,\n isError: isError,\n isFunction: isFunction,\n isNull: isNull,\n isNullOrUndefined: isNullOrUndefined,\n isNumber: isNumber,\n isObject: isObject,\n isPrimitive: isPrimitive,\n isRegExp: isRegExp,\n isString: isString,\n isSymbol: isSymbol,\n isUndefined: isUndefined,\n log: log,\n promisify: promisify\n});\n\nfunction BufferList() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n}\n\nBufferList.prototype.push = function (v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n};\n\nBufferList.prototype.unshift = function (v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n};\n\nBufferList.prototype.shift = function () {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n};\n\nBufferList.prototype.clear = function () {\n this.head = this.tail = null;\n this.length = 0;\n};\n\nBufferList.prototype.join = function (s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n};\n\nBufferList.prototype.concat = function (n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n p.data.copy(ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n};\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n };\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nfunction StringDecoder(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n}\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n\nReadable.ReadableState = ReadableState;\n\nvar debug = debuglog('stream');\ninherits$1(Readable, EventEmitter);\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event])\n emitter.on(event, fn);\n else if (Array.isArray(emitter._events[event]))\n emitter._events[event].unshift(fn);\n else\n emitter._events[event] = [fn, emitter._events[event]];\n }\n}\nfunction listenerCount (emitter, type) {\n return emitter.listeners(type).length;\n}\nfunction ReadableState(options, stream) {\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~ ~this.highWaterMark;\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options && typeof options.read === 'function') this._read = options.read;\n\n EventEmitter.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n\n if (!state.objectMode && typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var _e = new Error('stream.unshift() after end event');\n stream.emit('error', _e);\n } else {\n var skipAdd;\n if (state.decoder && !addToFront && !encoding) {\n chunk = state.decoder.write(chunk);\n skipAdd = !state.objectMode && chunk.length === 0;\n }\n\n if (!addToFront) state.reading = false;\n\n // Don't add to the buffer if we've decoded to an empty string chunk and\n // we're not in object mode\n if (!skipAdd) {\n // if we want the data now, just emit it.\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false);\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted) nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (listenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && src.listeners('data').length) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var _i = 0; _i < len; _i++) {\n dests[_i].emit('unpipe', this);\n }return this;\n }\n\n // try to find the right one.\n var i = indexOf(state.pipes, dest);\n if (i === -1) return this;\n\n state.pipes.splice(i, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = EventEmitter.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function (ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\nWritable.WritableState = WritableState;\ninherits$1(Writable, EventEmitter);\n\nfunction nop() {}\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\nfunction WritableState(options, stream) {\n Object.defineProperty(this, 'buffer', {\n get: deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\n });\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~ ~this.highWaterMark;\n\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function writableStateGetBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\nfunction Writable(options) {\n\n // Writable ctor is applied to Duplexes, though they're not\n // instanceof Writable, they're instanceof Readable.\n if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n }\n\n EventEmitter.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n nextTick(cb, er);\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n // Always throw error if a null is written\n // if we are not in object mode then throw\n // if it is not a buffer, string, or undefined.\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) nextTick(cb, er);else cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n nextTick(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n while (entry) {\n buffer[count] = entry;\n entry = entry.next;\n count += 1;\n }\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else {\n prefinish(stream, state);\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function (err) {\n var entry = _this.entry;\n _this.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = _this;\n } else {\n state.corkedRequestsFree = _this;\n }\n };\n}\n\ninherits$1(Duplex, Readable);\n\nvar keys = Object.keys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\ninherits$1(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n // when the writable side finishes, then flush out anything remaining.\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er) {\n done(stream, er);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('Not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nfunction done(stream, er) {\n if (er) return stream.emit('error', er);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}\n\ninherits$1(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\ninherits$1(Stream, EventEmitter);\nStream.Readable = Readable;\nStream.Writable = Writable;\nStream.Duplex = Duplex;\nStream.Transform = Transform;\nStream.PassThrough = PassThrough;\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EventEmitter.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EventEmitter.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\nvar _polyfillNode_stream = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Duplex: Duplex,\n PassThrough: PassThrough,\n Readable: Readable,\n Stream: Stream,\n Transform: Transform,\n Writable: Writable,\n default: Stream\n});\n\nvar require$$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_stream);\n\nvar binding = {};\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\nvar pSlice = Array.prototype.slice;\nvar _functionsHaveNames;\nfunction functionsHaveNames() {\n if (typeof _functionsHaveNames !== 'undefined') {\n return _functionsHaveNames;\n }\n return _functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n }());\n}\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer$1(arrbuf)) {\n return false;\n }\n if (typeof global$1.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nfunction assert(value, message) {\n if (!value) fail(value, true, message, '==', ok);\n}\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!isFunction(func)) {\n return;\n }\n if (functionsHaveNames()) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = AssertionError;\nfunction AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n}\n\n// assert.AssertionError instanceof Error\ninherits$1(AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames() || !isFunction(something)) {\n return inspect$1(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\nassert.equal = equal;\nfunction equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', equal);\n}\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\nassert.notEqual = notEqual;\nfunction notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', notEqual);\n }\n}\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\nassert.deepEqual = deepEqual;\nfunction deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', deepEqual);\n }\n}\nassert.deepStrictEqual = deepStrictEqual;\nfunction deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', deepStrictEqual);\n }\n}\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer$1(actual) && isBuffer$1(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer$1(actual) !== isBuffer$1(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (isPrimitive(a) || isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\nassert.notDeepEqual = notDeepEqual;\nfunction notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', notDeepEqual);\n }\n}\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\nassert.strictEqual = strictEqual;\nfunction strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', strictEqual);\n }\n}\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\nassert.notStrictEqual = notStrictEqual;\nfunction notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', notStrictEqual);\n }\n}\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\nassert.throws = throws;\nfunction throws(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n}\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = doesNotThrow;\nfunction doesNotThrow(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n}\n\nassert.ifError = ifError;\nfunction ifError(err) {\n if (err) throw err;\n}\n\nvar _polyfillNode_assert = /*#__PURE__*/Object.freeze({\n __proto__: null,\n AssertionError: AssertionError,\n assert: ok,\n deepEqual: deepEqual,\n deepStrictEqual: deepStrictEqual,\n default: assert,\n doesNotThrow: doesNotThrow,\n equal: equal,\n fail: fail,\n ifError: ifError,\n notDeepEqual: notDeepEqual,\n notDeepStrictEqual: notDeepStrictEqual,\n notEqual: notEqual,\n notStrictEqual: notStrictEqual,\n ok: ok,\n strictEqual: strictEqual,\n throws: throws\n});\n\nvar require$$4 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_assert);\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = '' /*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2 /*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\nvar zstream = ZStream;\n\nvar deflate$1 = {};\n\nvar common = {};\n\n(function (exports) {\n\n var TYPED_OK = typeof Uint8Array !== 'undefined' && typeof Uint16Array !== 'undefined' && typeof Int32Array !== 'undefined';\n function _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n exports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) {\n continue;\n }\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n return obj;\n };\n\n // reduce buffer size, avoiding mem copy\n exports.shrinkBuf = function (buf, size) {\n if (buf.length === size) {\n return buf;\n }\n if (buf.subarray) {\n return buf.subarray(0, size);\n }\n buf.length = size;\n return buf;\n };\n var fnTyped = {\n arraySet: function arraySet(dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function flattenChunks(chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n return result;\n }\n };\n var fnUntyped = {\n arraySet: function arraySet(dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function flattenChunks(chunks) {\n return [].concat.apply([], chunks);\n }\n };\n\n // Enable/Disable typed arrays use, for testing\n //\n exports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n };\n exports.setTyped(TYPED_OK);\n})(common);\n\nvar trees$1 = {};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils$3 = common;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED$1 = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN$1 = 2;\n\n/*============================================================================*/\n\nfunction zero$1(buf) {\n var len = buf.length;\n while (--len >= 0) {\n buf[len] = 0;\n }\n}\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES$1 = 30;\n/* number of distance codes */\n\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\n\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0];\nvar extra_dbits = /* extra bits for each distance code */\n[0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13];\nvar extra_blbits = /* extra bits for each bit length code */\n[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7];\nvar bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES$1 + 2) * 2);\nzero$1(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES$1 * 2);\nzero$1(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero$1(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);\nzero$1(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES$1);\nzero$1(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES$1);\nzero$1(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n // put_byte(s, (uch)((w) & 0xff));\n // put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = w & 0xff;\n s.pending_buf[s.pending++] = w >>> 8 & 0xff;\n}\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > Buf_size - length) {\n s.bi_buf |= value << s.bi_valid & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> Buf_size - s.bi_valid;\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= value << s.bi_valid & 0xffff;\n s.bi_valid += length;\n }\n}\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2] /*.Code*/, tree[c * 2 + 1] /*.Len*/);\n}\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1] /*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1] /*.Dad*/ * 2 + 1] /*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1] /*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) {\n continue;\n } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2] /*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1] /*.Len*/ + xbits);\n }\n }\n if (overflow === 0) {\n return;\n }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) {\n bits--;\n }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) {\n continue;\n }\n if (tree[m * 2 + 1] /*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1] /*.Len*/) * tree[m * 2] /*.Freq*/;\n tree[m * 2 + 1] /*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS$1 + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS$1; bits++) {\n next_code[bits] = code = code + bl_count[bits - 1] << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES$1 - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < 1 << extra_lbits[code]; n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < 1 << extra_dbits[code]; n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES$1; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < 1 << extra_dbits[code] - 7; n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS$1; bits++) {\n bl_count[bits] = 0;\n }\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1] /*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1] /*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1] /*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1] /*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES$1 + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES$1; n++) {\n static_dtree[n * 2 + 1] /*.Len*/ = 5;\n static_dtree[n * 2] /*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES$1; n++) {\n s.dyn_ltree[n * 2] /*.Freq*/ = 0;\n }\n for (n = 0; n < D_CODES$1; n++) {\n s.dyn_dtree[n * 2] /*.Freq*/ = 0;\n }\n for (n = 0; n < BL_CODES$1; n++) {\n s.bl_tree[n * 2] /*.Freq*/ = 0;\n }\n s.dyn_ltree[END_BLOCK * 2] /*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s) {\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n // while (len--) {\n // put_byte(s, *buf++);\n // }\n utils$3.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return tree[_n2] /*.Freq*/ < tree[_m2] /*.Freq*/ || tree[_n2] /*.Freq*/ === tree[_m2] /*.Freq*/ && depth[n] <= depth[m];\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) {\n break;\n }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = s.pending_buf[s.d_buf + lx * 2] << 8 | s.pending_buf[s.d_buf + lx * 2 + 1];\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS$1 + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n } while (lx < s.last_lit);\n }\n send_code(s, END_BLOCK, ltree);\n}\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE$1;\n for (n = 0; n < elems; n++) {\n if (tree[n * 2] /*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n } else {\n tree[n * 2 + 1] /*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;\n tree[node * 2] /*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1] /*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = s.heap_len >> 1 /*int /2*/; n >= 1; n--) {\n pqdownheap(s, tree, n);\n }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1 /*SMALLEST*/];\n s.heap[1 /*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1 /*SMALLEST*/);\n /***/\n\n m = s.heap[1 /*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2] /*.Freq*/ = tree[n * 2] /*.Freq*/ + tree[m * 2] /*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1] /*.Dad*/ = tree[m * 2 + 1] /*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1 /*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1 /*SMALLEST*/);\n } while (s.heap_len >= 2);\n s.heap[--s.heap_max] = s.heap[1 /*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1] /*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1] /*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1] /*.Len*/;\n if (++count < max_count && curlen === nextlen) {\n continue;\n } else if (count < min_count) {\n s.bl_tree[curlen * 2] /*.Freq*/ += count;\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n s.bl_tree[curlen * 2] /*.Freq*/++;\n }\n s.bl_tree[REP_3_6 * 2] /*.Freq*/++;\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2] /*.Freq*/++;\n } else {\n s.bl_tree[REPZ_11_138 * 2] /*.Freq*/++;\n }\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1] /*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1] /*.Len*/;\n if (++count < max_count && curlen === nextlen) {\n continue;\n } else if (count < min_count) {\n do {\n send_code(s, curlen, s.bl_tree);\n } while (--count !== 0);\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1] /*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1] /*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if (black_mask & 1 && s.dyn_ltree[n * 2] /*.Freq*/ !== 0) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2] /*.Freq*/ !== 0 || s.dyn_ltree[10 * 2] /*.Freq*/ !== 0 || s.dyn_ltree[13 * 2] /*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS$1; n++) {\n if (s.dyn_ltree[n * 2] /*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN$1) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = s.opt_len + 3 + 7 >>> 3;\n static_lenb = s.static_len + 3 + 7 >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) {\n opt_lenb = static_lenb;\n }\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n if (stored_len + 4 <= opt_lenb && buf !== -1) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = dist >>> 8 & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2] /*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2] /*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2] /*.Freq*/++;\n }\n\n // (!) This block is disabled in zlib defaults,\n // don't enable it for binary compatibility\n\n //#ifdef TRUNCATE_BLOCK\n // /* Try to guess if it is profitable to stop the current block here */\n // if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n // /* Compute an upper bound for the compressed length */\n // out_length = s.last_lit*8;\n // in_length = s.strstart - s.block_start;\n //\n // for (dcode = 0; dcode < D_CODES; dcode++) {\n // out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n // }\n // out_length >>>= 3;\n // //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n // // s->last_lit, in_length, out_length,\n // // 100L - out_length*100L/in_length));\n // if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n // return true;\n // }\n // }\n //#endif\n\n return s.last_lit === s.lit_bufsize - 1;\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\ntrees$1._tr_init = _tr_init;\ntrees$1._tr_stored_block = _tr_stored_block;\ntrees$1._tr_flush_block = _tr_flush_block;\ntrees$1._tr_tally = _tr_tally;\ntrees$1._tr_align = _tr_align;\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32$2(adler, buf, len, pos) {\n var s1 = adler & 0xffff | 0,\n s2 = adler >>> 16 & 0xffff | 0,\n n = 0;\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n do {\n s1 = s1 + buf[pos++] | 0;\n s2 = s2 + s1 | 0;\n } while (--n);\n s1 %= 65521;\n s2 %= 65521;\n }\n return s1 | s2 << 16 | 0;\n}\nvar adler32_1 = adler32$2;\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c,\n table = [];\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = c & 1 ? 0xEDB88320 ^ c >>> 1 : c >>> 1;\n }\n table[n] = c;\n }\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\nfunction crc32$2(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n crc ^= -1;\n for (var i = pos; i < end; i++) {\n crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 0xFF];\n }\n return crc ^ -1; // >>> 0;\n}\nvar crc32_1 = crc32$2;\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar messages = {\n 2: 'need dictionary',\n /* Z_NEED_DICT 2 */\n 1: 'stream end',\n /* Z_STREAM_END 1 */\n 0: '',\n /* Z_OK 0 */\n '-1': 'file error',\n /* Z_ERRNO (-1) */\n '-2': 'stream error',\n /* Z_STREAM_ERROR (-2) */\n '-3': 'data error',\n /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory',\n /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error',\n /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils$2 = common;\nvar trees = trees$1;\nvar adler32$1 = adler32_1;\nvar crc32$1 = crc32_1;\nvar msg = messages;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\n//var Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n/*============================================================================*/\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS$1 = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;\nvar PRESET_DICT = 0x20;\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\nfunction rank(f) {\n return (f << 1) - (f > 4 ? 9 : 0);\n}\nfunction zero(buf) {\n var len = buf.length;\n while (--len >= 0) {\n buf[len] = 0;\n }\n}\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) {\n return;\n }\n utils$2.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n // put_byte(s, (Byte)(b >> 8));\n // put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = b >>> 8 & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n if (len > size) {\n len = size;\n }\n if (len === 0) {\n return 0;\n }\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils$2.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32$1(strm.adler, buf, len, start);\n } else if (strm.state.wrap === 2) {\n strm.adler = crc32$1(strm.adler, buf, len, start);\n }\n strm.next_in += len;\n strm.total_in += len;\n return len;\n}\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0 /*NIL*/;\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) {\n nice_match = s.lookahead;\n }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n utils$2.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = m >= _w_size ? m - _w_size : 0;\n } while (--n);\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = m >= _w_size ? m - _w_size : 0;\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + 1]) & s.hash_mask;\n //#if MIN_MATCH != 3\n // Call update_hash() MIN_MATCH-3 more times\n //#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n // if (s.high_water < s.window_size) {\n // var curr = s.strstart + s.lookahead;\n // var init = 0;\n //\n // if (s.high_water < curr) {\n // /* Previous high water mark below current data -- zero WIN_INIT\n // * bytes or up to end of window, whichever is less.\n // */\n // init = s.window_size - curr;\n // if (init > WIN_INIT)\n // init = WIN_INIT;\n // zmemzero(s->window + curr, (unsigned)init);\n // s->high_water = curr + init;\n // }\n // else if (s->high_water < (ulg)curr + WIN_INIT) {\n // /* High water mark at or above current data, but below current data\n // * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n // * to end of window, whichever is less.\n // */\n // init = (ulg)curr + WIN_INIT - s->high_water;\n // if (init > s->window_size - s->high_water)\n // init = s->window_size - s->high_water;\n // zmemzero(s->window + s->high_water, (unsigned)init);\n // s->high_water += init;\n // }\n // }\n //\n // Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n // \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n // if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n // s.block_start >= s.w_size)) {\n // throw new Error(\"slide too late\");\n // }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n // if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= s.w_size - MIN_LOOKAHEAD) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$1) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0 /*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0 /*NIL*/ && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match /*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n //#if MIN_MATCH != 3\n // Call UPDATE_HASH() MIN_MATCH-3 more times\n //#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH$1) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break;\n } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0 /*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n if (hash_head !== 0 /*NIL*/ && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD /*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096 /*TOO_FAR*/)) {\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH$1) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break;\n } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$1) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH$1) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\nvar configuration_table;\nconfiguration_table = [/* good lazy nice chain */\nnew Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\nnew Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\nnew Config(4, 5, 16, 8, deflate_fast), /* 2 */\nnew Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\nnew Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\nnew Config(8, 16, 32, 32, deflate_slow), /* 5 */\nnew Config(8, 16, 128, 128, deflate_slow), /* 6 */\nnew Config(8, 32, 128, 256, deflate_slow), /* 7 */\nnew Config(32, 128, 258, 1024, deflate_slow), /* 8 */\nnew Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */];\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED$1; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils$2.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils$2.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils$2.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils$2.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils$2.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils$2.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\nfunction deflateResetKeep(strm) {\n var s;\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR$1);\n }\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = s.wrap ? INIT_STATE : BUSY_STATE;\n strm.adler = s.wrap === 2 ? 0 // crc32(0, Z_NULL, 0)\n : 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK$1;\n}\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK$1) {\n lm_init(strm.state);\n }\n return ret;\n}\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) {\n return Z_STREAM_ERROR$1;\n }\n if (strm.state.wrap !== 2) {\n return Z_STREAM_ERROR$1;\n }\n strm.state.gzhead = head;\n return Z_OK$1;\n}\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) {\n // === Z_NULL\n return Z_STREAM_ERROR$1;\n }\n var wrap = 1;\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n if (windowBits < 0) {\n /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n } else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$1 || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR$1);\n }\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n strm.state = s;\n s.strm = strm;\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n s.window = new utils$2.Buf8(s.w_size * 2);\n s.head = new utils$2.Buf16(s.hash_size);\n s.prev = new utils$2.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << memLevel + 6; /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils$2.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n return deflateReset(strm);\n}\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED$1, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state || flush > Z_BLOCK$1 || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR$1) : Z_STREAM_ERROR$1;\n }\n s = strm.state;\n if (!strm.output || !strm.input && strm.avail_in !== 0 || s.status === FINISH_STATE && flush !== Z_FINISH$1) {\n return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$1);\n }\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n if (s.wrap === 2) {\n // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) {\n // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n } else {\n put_byte(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16));\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, s.gzhead.time >> 8 & 0xff);\n put_byte(s, s.gzhead.time >> 16 & 0xff);\n put_byte(s, s.gzhead.time >> 24 & 0xff);\n put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, s.gzhead.extra.length >> 8 & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n } else\n // DEFLATE header\n {\n var header = Z_DEFLATED$1 + (s.w_bits - 8 << 4) << 8;\n var level_flags = -1;\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= level_flags << 6;\n if (s.strstart !== 0) {\n header |= PRESET_DICT;\n }\n header += 31 - header % 31;\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n //#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra /* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n } else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name /* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n } else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment /* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32$1(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n } else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, strm.adler >> 8 & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n } else {\n s.status = BUSY_STATE;\n }\n }\n //#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK$1;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH$1) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR$1);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH && s.status !== FINISH_STATE) {\n var bstate = s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush);\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK$1;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n } else if (flush !== Z_BLOCK$1) {\n /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK$1;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH$1) {\n return Z_OK$1;\n }\n if (s.wrap <= 0) {\n return Z_STREAM_END$1;\n }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, strm.adler >> 8 & 0xff);\n put_byte(s, strm.adler >> 16 & 0xff);\n put_byte(s, strm.adler >> 24 & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, strm.total_in >> 8 & 0xff);\n put_byte(s, strm.total_in >> 16 & 0xff);\n put_byte(s, strm.total_in >> 24 & 0xff);\n } else {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) {\n s.wrap = -s.wrap;\n }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK$1 : Z_STREAM_END$1;\n}\nfunction deflateEnd(strm) {\n var status;\n if (!strm /*== Z_NULL*/ || !strm.state /*== Z_NULL*/) {\n return Z_STREAM_ERROR$1;\n }\n status = strm.state.status;\n if (status !== INIT_STATE && status !== EXTRA_STATE && status !== NAME_STATE && status !== COMMENT_STATE && status !== HCRC_STATE && status !== BUSY_STATE && status !== FINISH_STATE) {\n return err(strm, Z_STREAM_ERROR$1);\n }\n strm.state = null;\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$1) : Z_OK$1;\n}\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n if (!strm /*== Z_NULL*/ || !strm.state /*== Z_NULL*/) {\n return Z_STREAM_ERROR$1;\n }\n s = strm.state;\n wrap = s.wrap;\n if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) {\n return Z_STREAM_ERROR$1;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32$1(strm.adler, dictionary, dictLength, 0);\n }\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) {\n /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils$2.Buf8(s.w_size);\n utils$2.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = (s.ins_h << s.hash_shift ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK$1;\n}\ndeflate$1.deflateInit = deflateInit;\ndeflate$1.deflateInit2 = deflateInit2;\ndeflate$1.deflateReset = deflateReset;\ndeflate$1.deflateResetKeep = deflateResetKeep;\ndeflate$1.deflateSetHeader = deflateSetHeader;\ndeflate$1.deflate = deflate;\ndeflate$1.deflateEnd = deflateEnd;\ndeflate$1.deflateSetDictionary = deflateSetDictionary;\ndeflate$1.deflateInfo = 'pako deflate (from Nodeca project)';\n\nvar inflate$1 = {};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nvar inffast = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n //#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n //#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n //#ifdef INFLATE_STRICT\n dmax = state.dmax;\n //#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top: do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = lcode[hold & lmask];\n dolen: for (;;) {\n // Goto emulation\n op = here >>> 24 /*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = here >>> 16 & 0xff /*here.op*/;\n if (op === 0) {\n /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff /*here.val*/;\n } else if (op & 16) {\n /* length base */\n len = here & 0xffff /*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & (1 << op) - 1;\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n dodist: for (;;) {\n // goto emulation\n op = here >>> 24 /*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = here >>> 16 & 0xff /*here.op*/;\n if (op & 16) {\n /* distance base */\n dist = here & 0xffff /*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & (1 << op) - 1;\n //#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n //#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) {\n /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break top;\n }\n\n // (!) This block is disabled in zlib defaults,\n // don't enable it for binary compatibility\n //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n // if (len <= op - whave) {\n // do {\n // output[_out++] = 0;\n // } while (--len);\n // continue top;\n // }\n // len -= op - whave;\n // do {\n // output[_out++] = 0;\n // } while (--op > whave);\n // if (op === 0) {\n // from = _out - dist;\n // do {\n // output[_out++] = output[from++];\n // } while (--len);\n // continue top;\n // }\n //#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) {\n /* very common case */\n from += wsize - op;\n if (op < len) {\n /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n } else if (wnext < op) {\n /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) {\n /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) {\n /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n } else {\n /* contiguous in window */\n from += wnext - op;\n if (op < len) {\n /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n } else {\n from = _out - dist; /* copy direct from output */\n do {\n /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n } else if ((op & 64) === 0) {\n /* 2nd level distance code */\n here = dcode[(here & 0xffff /*here.val*/) + (hold & (1 << op) - 1)];\n continue dodist;\n } else {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break top;\n }\n break; // need to emulate goto via \"continue\"\n }\n } else if ((op & 64) === 0) {\n /* 2nd level length code */\n here = lcode[(here & 0xffff /*here.val*/) + (hold & (1 << op) - 1)];\n continue dolen;\n } else if (op & 32) {\n /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE$1;\n break top;\n } else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break top;\n }\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);\n strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);\n state.hold = hold;\n state.bits = bits;\n return;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils$1 = common;\nvar MAXBITS = 15;\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\nvar lbase = [/* Length codes 257..285 base */\n3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0];\nvar lext = [/* Length codes 257..285 extra */\n16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78];\nvar dbase = [/* Distance codes 0..29 base */\n1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0];\nvar dext = [/* Distance codes 0..29 extra */\n16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64];\nvar inftrees = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0,\n max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n // var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils$1.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils$1.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) {\n break;\n }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) {\n /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = 1 << 24 | 64 << 16 | 0;\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = 1 << 24 | 64 << 16 | 0;\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) {\n break;\n }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES$1 || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES$1) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n } else if (type === LENS$1) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n } else {\n /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n } else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n } else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << len - drop;\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << len - 1;\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) {\n break;\n }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) {\n break;\n }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = root << 24 | curr << 16 | next - table_index | 0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = len - drop << 24 | 64 << 16 | 0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = common;\nvar adler32 = adler32_1;\nvar crc32 = crc32_1;\nvar inflate_fast = inffast;\nvar inflate_table = inftrees;\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\nfunction zswap32(q) {\n return (q >>> 24 & 0xff) + (q >>> 8 & 0xff00) + ((q & 0xff00) << 8) + ((q & 0xff) << 24);\n}\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\nfunction inflateResetKeep(strm) {\n var state;\n if (!strm || !strm.state) {\n return Z_STREAM_ERROR;\n }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) {\n /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null /*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\nfunction inflateReset(strm) {\n var state;\n if (!strm || !strm.state) {\n return Z_STREAM_ERROR;\n }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n}\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) {\n return Z_STREAM_ERROR;\n }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n } else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n if (!strm) {\n return Z_STREAM_ERROR;\n }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null /*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null /*Z_NULL*/;\n }\n return ret;\n}\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) {\n state.lens[sym++] = 8;\n }\n while (sym < 256) {\n state.lens[sym++] = 9;\n }\n while (sym < 280) {\n state.lens[sym++] = 7;\n }\n while (sym < 288) {\n state.lens[sym++] = 8;\n }\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, {\n bits: 9\n });\n\n /* distance table */\n sym = 0;\n while (sym < 32) {\n state.lens[sym++] = 5;\n }\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, {\n bits: 5\n });\n\n /* do this just once */\n virgin = false;\n }\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n } else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n } else {\n state.wnext += dist;\n if (state.wnext === state.wsize) {\n state.wnext = 0;\n }\n if (state.whave < state.wsize) {\n state.whave += dist;\n }\n }\n }\n return 0;\n}\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) {\n return Z_STREAM_ERROR;\n }\n state = strm.state;\n if (state.mode === TYPE) {\n state.mode = TYPEDO;\n } /* skip check */\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n inf_leave:\n // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.wrap & 2 && hold === 0x8b1f) {\n /* gzip header */\n state.check = 0 /*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = hold >>> 8 & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff /*BITS(8)*/) << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f /*BITS(4)*/) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f /*BITS(4)*/) + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n } else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1 /*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = hold >> 8 & 1;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = hold >>> 8 & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = hold >>> 8 & 0xff;\n hbuf[2] = hold >>> 16 & 0xff;\n hbuf[3] = hold >>> 24 & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = hold & 0xff;\n state.head.os = hold >> 8;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = hold >>> 8 & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = hold >>> 8 & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n } else if (state.head) {\n state.head.extra = null /*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) {\n copy = have;\n }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(state.head.extra, input, next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy, /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len);\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) {\n break inf_leave;\n }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) {\n break inf_leave;\n }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len && state.length < 65536 /*state.head.name_max*/) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) {\n break inf_leave;\n }\n } else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) {\n break inf_leave;\n }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len && state.length < 65536 /*state.head.comm_max*/) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) {\n break inf_leave;\n }\n } else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = state.flags >> 9 & 1;\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1 /*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) {\n break inf_leave;\n }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = hold & 0x01 /*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch (hold & 0x03 /*BITS(2)*/) {\n case 0:\n /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1:\n /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2:\n /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== (hold >>> 16 ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) {\n break inf_leave;\n }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) {\n copy = have;\n }\n if (copy > left) {\n copy = left;\n }\n if (copy === 0) {\n break inf_leave;\n }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f /*BITS(5)*/) + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f /*BITS(5)*/) + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f /*BITS(4)*/) + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n //#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n //#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = hold & 0x07; //BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n opts = {\n bits: state.lenbits\n };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & (1 << state.lenbits) - 1]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = here >>> 16 & 0xff;\n here_val = here & 0xffff;\n if (here_bits <= bits) {\n break;\n }\n //--- PULLBYTE() ---//\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n } else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03); //BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n } else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07); //BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n } else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f); //BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) {\n break;\n }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n opts = {\n bits: state.lenbits\n };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = {\n bits: state.distbits\n };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) {\n break inf_leave;\n }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & (1 << state.lenbits) - 1]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = here >>> 16 & 0xff;\n here_val = here & 0xffff;\n if (here_bits <= bits) {\n break;\n }\n //--- PULLBYTE() ---//\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1 /*BITS(last.bits + last.op)*/) >> last_bits)];\n here_bits = here >>> 24;\n here_op = here >>> 16 & 0xff;\n here_val = here & 0xffff;\n if (last_bits + here_bits <= bits) {\n break;\n }\n //--- PULLBYTE() ---//\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & (1 << state.extra) - 1 /*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & (1 << state.distbits) - 1]; /*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = here >>> 16 & 0xff;\n here_val = here & 0xffff;\n if (here_bits <= bits) {\n break;\n }\n //--- PULLBYTE() ---//\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1 /*BITS(last.bits + last.op)*/) >> last_bits)];\n here_bits = here >>> 24;\n here_op = here >>> 16 & 0xff;\n here_val = here & 0xffff;\n if (last_bits + here_bits <= bits) {\n break;\n }\n //--- PULLBYTE() ---//\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = here_op & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & (1 << state.extra) - 1 /*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n //#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) {\n break inf_leave;\n }\n copy = _out - left;\n if (state.offset > copy) {\n /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n // (!) This block is disabled in zlib defaults,\n // don't enable it for binary compatibility\n //#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n // Trace((stderr, \"inflate.c too far\\n\"));\n // copy -= state.whave;\n // if (copy > state.length) { copy = state.length; }\n // if (copy > left) { copy = left; }\n // left -= copy;\n // state.length -= copy;\n // do {\n // output[put++] = 0;\n // } while (--copy);\n // if (state.length === 0) { state.mode = LEN; }\n // break;\n //#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n } else {\n from = state.wnext - copy;\n }\n if (copy > state.length) {\n copy = state.length;\n }\n from_source = state.window;\n } else {\n /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) {\n copy = left;\n }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) {\n state.mode = LEN;\n }\n break;\n case LIT:\n if (left === 0) {\n break inf_leave;\n }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/\n state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out);\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) {\n break inf_leave;\n }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH)) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out);\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\nfunction inflateEnd(strm) {\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) {\n return Z_STREAM_ERROR;\n }\n state = strm.state;\n if ((state.wrap & 2) === 0) {\n return Z_STREAM_ERROR;\n }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) {\n return Z_STREAM_ERROR;\n }\n state = strm.state;\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\ninflate$1.inflateReset = inflateReset;\ninflate$1.inflateReset2 = inflateReset2;\ninflate$1.inflateResetKeep = inflateResetKeep;\ninflate$1.inflateInit = inflateInit;\ninflate$1.inflateInit2 = inflateInit2;\ninflate$1.inflate = inflate;\ninflate$1.inflateEnd = inflateEnd;\ninflate$1.inflateGetHeader = inflateGetHeader;\ninflate$1.inflateSetDictionary = inflateSetDictionary;\ninflate$1.inflateInfo = 'pako inflate (from Nodeca project)';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar constants = {\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n\n(function (exports) {\n\n /* eslint camelcase: \"off\" */\n var assert = require$$4;\n var Zstream = zstream;\n var zlib_deflate = deflate$1;\n var zlib_inflate = inflate$1;\n var constants$1 = constants;\n for (var key in constants$1) {\n exports[key] = constants$1[key];\n }\n\n // zlib modes\n exports.NONE = 0;\n exports.DEFLATE = 1;\n exports.INFLATE = 2;\n exports.GZIP = 3;\n exports.GUNZIP = 4;\n exports.DEFLATERAW = 5;\n exports.INFLATERAW = 6;\n exports.UNZIP = 7;\n var GZIP_HEADER_ID1 = 0x1f;\n var GZIP_HEADER_ID2 = 0x8b;\n\n /**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\n function Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n }\n Zlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n this.pending_close = false;\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n this.mode = exports.NONE;\n this.dictionary = null;\n };\n Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n };\n Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n };\n Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n this.write_in_progress = true;\n assert.equal(false, flush === undefined, 'must provide flush value');\n this.write_in_progress = true;\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n if (input == null) {\n input = Buffer.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n if (!async) {\n // sync version\n this._process();\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n browser$1.nextTick(function () {\n self._process();\n self._after();\n });\n return this;\n };\n Zlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n this.write_in_progress = false;\n return [avail_in, avail_out];\n };\n Zlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );\n if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n };\n Zlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n return true;\n };\n Zlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n if (this.pending_close) {\n this.close();\n }\n };\n Zlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );\n this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n };\n Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n };\n Zlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n };\n Zlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n };\n Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n this.flush = exports.Z_NO_FLUSH;\n this.err = exports.Z_OK;\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n this.strm = new Zstream();\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n this.dictionary = dictionary;\n this.write_in_progress = false;\n this.init_done = true;\n };\n Zlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n this.err = exports.Z_OK;\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n }\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n };\n Zlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n }\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n };\n exports.Zlib = Zlib;\n})(binding);\n\nvar require$$3 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_util$1);\n\n(function (exports) {\n\n var Buffer = require$$0.Buffer;\n var Transform = require$$1.Transform;\n var binding$1 = binding;\n var util = require$$3;\n var assert = require$$4.ok;\n var kMaxLength = require$$0.kMaxLength;\n var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n // zlib doesn't provide these, so kludge them in following the same\n // const naming scheme zlib uses.\n binding$1.Z_MIN_WINDOWBITS = 8;\n binding$1.Z_MAX_WINDOWBITS = 15;\n binding$1.Z_DEFAULT_WINDOWBITS = 15;\n\n // fewer than 64 bytes per chunk is stupid.\n // technically it could work with as few as 8, but even 64 bytes\n // is absurdly low. Usually a MB or more is best.\n binding$1.Z_MIN_CHUNK = 64;\n binding$1.Z_MAX_CHUNK = Infinity;\n binding$1.Z_DEFAULT_CHUNK = 16 * 1024;\n binding$1.Z_MIN_MEMLEVEL = 1;\n binding$1.Z_MAX_MEMLEVEL = 9;\n binding$1.Z_DEFAULT_MEMLEVEL = 8;\n binding$1.Z_MIN_LEVEL = -1;\n binding$1.Z_MAX_LEVEL = 9;\n binding$1.Z_DEFAULT_LEVEL = binding$1.Z_DEFAULT_COMPRESSION;\n\n // expose all the zlib constants\n var bkeys = Object.keys(binding$1);\n for (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true,\n value: binding$1[bkey],\n writable: false\n });\n }\n }\n\n // translation table for return codes.\n var codes = {\n Z_OK: binding$1.Z_OK,\n Z_STREAM_END: binding$1.Z_STREAM_END,\n Z_NEED_DICT: binding$1.Z_NEED_DICT,\n Z_ERRNO: binding$1.Z_ERRNO,\n Z_STREAM_ERROR: binding$1.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding$1.Z_DATA_ERROR,\n Z_MEM_ERROR: binding$1.Z_MEM_ERROR,\n Z_BUF_ERROR: binding$1.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding$1.Z_VERSION_ERROR\n };\n var ckeys = Object.keys(codes);\n for (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n }\n Object.defineProperty(exports, 'codes', {\n enumerable: true,\n value: Object.freeze(codes),\n writable: false\n });\n exports.Deflate = Deflate;\n exports.Inflate = Inflate;\n exports.Gzip = Gzip;\n exports.Gunzip = Gunzip;\n exports.DeflateRaw = DeflateRaw;\n exports.InflateRaw = InflateRaw;\n exports.Unzip = Unzip;\n exports.createDeflate = function (o) {\n return new Deflate(o);\n };\n exports.createInflate = function (o) {\n return new Inflate(o);\n };\n exports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n };\n exports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n };\n exports.createGzip = function (o) {\n return new Gzip(o);\n };\n exports.createGunzip = function (o) {\n return new Gunzip(o);\n };\n exports.createUnzip = function (o) {\n return new Unzip(o);\n };\n\n // Convenience methods.\n // compress/decompress a string or buffer in one step.\n exports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n };\n exports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n };\n exports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n };\n exports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n };\n exports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n };\n exports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n };\n exports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n };\n exports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n };\n exports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n };\n exports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n };\n exports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n };\n exports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n };\n exports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n };\n exports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n };\n function zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n engine.on('error', onError);\n engine.on('end', onEnd);\n engine.end(buffer);\n flow();\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n function onEnd() {\n var buf;\n var err = null;\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n }\n function zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n var flushFlag = engine._finishFlushFlag;\n return engine._processChunk(buffer, flushFlag);\n }\n\n // generic zlib\n // minimal 2-byte header\n function Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding$1.DEFLATE);\n }\n function Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding$1.INFLATE);\n }\n\n // gzip - bigger header, same deflate compression\n function Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding$1.GZIP);\n }\n function Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding$1.GUNZIP);\n }\n\n // raw - no header\n function DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding$1.DEFLATERAW);\n }\n function InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding$1.INFLATERAW);\n }\n\n // auto-detect header.\n function Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding$1.UNZIP);\n }\n function isValidFlushFlag(flag) {\n return flag === binding$1.Z_NO_FLUSH || flag === binding$1.Z_PARTIAL_FLUSH || flag === binding$1.Z_SYNC_FLUSH || flag === binding$1.Z_FULL_FLUSH || flag === binding$1.Z_FINISH || flag === binding$1.Z_BLOCK;\n }\n\n // the Zlib class they all inherit from\n // This thing manages the queue of requests, and returns\n // true or false if there is anything in the queue when\n // you call the .write() method.\n\n function Zlib(opts, mode) {\n var _this = this;\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n Transform.call(this, opts);\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n this._flushFlag = opts.flush || binding$1.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding$1.Z_FINISH;\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n this._handle = new binding$1.Zlib(mode);\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n this.once('end', this.close);\n Object.defineProperty(this, '_closed', {\n get: function get() {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n }\n util.inherits(Zlib, Transform);\n Zlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding$1.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n browser$1.nextTick(callback);\n }\n };\n Zlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n };\n\n // This is the _flush function called by the transform class,\n // internally, when the last chunk has been written.\n Zlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n };\n Zlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n var ws = this._writableState;\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding$1.Z_FULL_FLUSH;\n }\n if (ws.ended) {\n if (callback) browser$1.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n };\n Zlib.prototype.close = function (callback) {\n _close(this, callback);\n browser$1.nextTick(emitCloseNT, this);\n };\n function _close(engine, callback) {\n if (callback) browser$1.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n engine._handle.close();\n engine._handle = null;\n }\n function emitCloseNT(self) {\n self.emit('close');\n }\n Zlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding$1.Z_NO_FLUSH;\n }\n }\n this._processChunk(chunk, flushFlag, cb);\n };\n Zlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n var self = this;\n var async = typeof cb === 'function';\n if (!async) {\n var buffers = [];\n var nread = 0;\n var error;\n this.on('error', function (er) {\n error = er;\n });\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk,\n // in\n inOff,\n // in_off\n availInBefore,\n // in_len\n this._buffer,\n // out\n this._offset,\n //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n if (this._hadError) {\n throw error;\n }\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n return buf;\n }\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk,\n // in\n inOff,\n // in_off\n availInBefore,\n // in_len\n this._buffer,\n // out\n this._offset,\n //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n if (self._hadError) return;\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n if (!async) return true;\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n };\n util.inherits(Deflate, Zlib);\n util.inherits(Inflate, Zlib);\n util.inherits(Gzip, Zlib);\n util.inherits(Gunzip, Zlib);\n util.inherits(DeflateRaw, Zlib);\n util.inherits(InflateRaw, Zlib);\n util.inherits(Unzip, Zlib);\n})(lib);\nvar zlib = /*@__PURE__*/getDefaultExportFromCjs(lib);\n\nvar PNG = /*#__PURE__*/function () {\n PNG.decode = function decode(path, fn) {\n {\n throw new Error('PNG.decode not available in browser build');\n }\n };\n PNG.load = function load(path) {\n {\n throw new Error('PNG.load not available in browser build');\n }\n };\n function PNG(data) {\n var i;\n this.data = data;\n this.pos = 8; // Skip the default header\n\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.text = {};\n while (true) {\n var chunkSize = this.readUInt32();\n var section = '';\n for (i = 0; i < 4; i++) {\n section += String.fromCharCode(this.data[this.pos++]);\n }\n switch (section) {\n case 'IHDR':\n // we can grab interesting values from here (like width, height, etc)\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n case 'PLTE':\n this.palette = this.read(chunkSize);\n break;\n case 'IDAT':\n for (i = 0; i < chunkSize; i++) {\n this.imgData.push(this.data[this.pos++]);\n }\n break;\n case 'tRNS':\n // This chunk can only occur once and it must occur after the\n // PLTE chunk and before the IDAT chunk.\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n // Indexed color, RGB. Each byte in this chunk is an alpha for\n // the palette index in the PLTE (\"palette\") chunk up until the\n // last non-opaque entry. Set up an array, stretching over all\n // palette entries which will be 0 (opaque) or 1 (transparent).\n this.transparency.indexed = this.read(chunkSize);\n var short = 255 - this.transparency.indexed.length;\n if (short > 0) {\n for (i = 0; i < short; i++) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n // Greyscale. Corresponding to entries in the PLTE chunk.\n // Grey is two bytes, range 0 .. (2 ^ bit-depth) - 1\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n // True color with proper alpha channel.\n this.transparency.rgb = this.read(chunkSize);\n break;\n }\n break;\n case 'tEXt':\n var text = this.read(chunkSize);\n var index = text.indexOf(0);\n var key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(String, text.slice(index + 1));\n break;\n case 'IEND':\n // we've got everything we need!\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n this.colors = 1;\n break;\n case 2:\n case 6:\n this.colors = 3;\n break;\n }\n this.hasAlphaChannel = [4, 6].includes(this.colorType);\n var colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n switch (this.colors) {\n case 1:\n this.colorSpace = 'DeviceGray';\n break;\n case 3:\n this.colorSpace = 'DeviceRGB';\n break;\n }\n this.imgData = Buffer.from(this.imgData);\n return;\n default:\n // unknown (or unimportant) section, skip it\n this.pos += chunkSize;\n }\n this.pos += 4; // Skip the CRC\n\n if (this.pos > this.data.length) {\n throw new Error('Incomplete or corrupt PNG file');\n }\n }\n }\n var _proto = PNG.prototype;\n _proto.read = function read(bytes) {\n var result = new Array(bytes);\n for (var i = 0; i < bytes; i++) {\n result[i] = this.data[this.pos++];\n }\n return result;\n };\n _proto.readUInt32 = function readUInt32() {\n var b1 = this.data[this.pos++] << 24;\n var b2 = this.data[this.pos++] << 16;\n var b3 = this.data[this.pos++] << 8;\n var b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n };\n _proto.readUInt16 = function readUInt16() {\n var b1 = this.data[this.pos++] << 8;\n var b2 = this.data[this.pos++];\n return b1 | b2;\n };\n _proto.decodePixels = function decodePixels(fn) {\n var _this = this;\n return zlib.inflate(this.imgData, function (err, data) {\n if (err) throw err;\n var pos = 0;\n var width = _this.width,\n height = _this.height;\n var pixelBytes = _this.pixelBitlength / 8;\n var pixels = Buffer.alloc(width * height * pixelBytes);\n function pass(x0, y0, dx, dy, singlePass) {\n if (singlePass === void 0) {\n singlePass = false;\n }\n var w = Math.ceil((width - x0) / dx);\n var h = Math.ceil((height - y0) / dy);\n var scanlineLength = pixelBytes * w;\n var buffer = singlePass ? pixels : Buffer.alloc(scanlineLength * h);\n var row = 0;\n var c = 0;\n while (row < h && pos < data.length) {\n var byte;\n var col;\n var i;\n var left;\n var upper;\n switch (data[pos++]) {\n case 0:\n // None\n for (i = 0; i < scanlineLength; i++) {\n buffer[c++] = data[pos++];\n }\n break;\n case 1:\n // Sub\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n buffer[c++] = (byte + left) % 256;\n }\n break;\n case 2:\n // Up\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n col = (i - i % pixelBytes) / pixelBytes;\n upper = row && buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];\n buffer[c++] = (upper + byte) % 256;\n }\n break;\n case 3:\n // Average\n for (i = 0; i < scanlineLength; i++) {\n byte = data[pos++];\n col = (i - i % pixelBytes) / pixelBytes;\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n upper = row && buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];\n buffer[c++] = (byte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n case 4:\n // Paeth\n for (i = 0; i < scanlineLength; i++) {\n var paeth;\n var upperLeft;\n byte = data[pos++];\n col = (i - i % pixelBytes) / pixelBytes;\n left = i < pixelBytes ? 0 : buffer[c - pixelBytes];\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper = buffer[(row - 1) * scanlineLength + col * pixelBytes + i % pixelBytes];\n upperLeft = col && buffer[(row - 1) * scanlineLength + (col - 1) * pixelBytes + i % pixelBytes];\n }\n var p = left + upper - upperLeft;\n var pa = Math.abs(p - left);\n var pb = Math.abs(p - upper);\n var pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n buffer[c++] = (byte + paeth) % 256;\n }\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n }\n if (!singlePass) {\n var pixelsPos = ((y0 + row * dy) * width + x0) * pixelBytes;\n var bufferPos = row * scanlineLength;\n for (i = 0; i < w; i++) {\n for (var j = 0; j < pixelBytes; j++) pixels[pixelsPos++] = buffer[bufferPos++];\n pixelsPos += (dx - 1) * pixelBytes;\n }\n }\n row++;\n }\n }\n if (_this.interlaceMethod === 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1, true);\n }\n return fn(pixels);\n });\n };\n _proto.decodePalette = function decodePalette() {\n var palette = this.palette;\n var length = palette.length;\n var transparency = this.transparency.indexed || [];\n var ret = Buffer.alloc(transparency.length + length);\n var pos = 0;\n var c = 0;\n for (var i = 0; i < length; i += 3) {\n var left;\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (left = transparency[c++]) != null ? left : 255;\n }\n return ret;\n };\n _proto.copyToImageData = function copyToImageData(imageData, pixels) {\n var j;\n var k;\n var colors = this.colors;\n var palette = null;\n var alpha = this.hasAlphaChannel;\n if (this.palette.length) {\n palette = this._decodedPalette || (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n var data = imageData.data || imageData;\n var length = data.length;\n var input = palette || pixels;\n var i = j = 0;\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n var v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n };\n _proto.decode = function decode(fn) {\n var _this2 = this;\n var ret = Buffer.alloc(this.width * this.height * 4);\n return this.decodePixels(function (pixels) {\n _this2.copyToImageData(ret, pixels);\n return fn(ret);\n });\n };\n return PNG;\n}();\n\nexport { PNG as default };\n","import require$$1$2 from 'pako/lib/zlib/zstream.js';\nimport require$$2 from 'pako/lib/zlib/deflate.js';\nimport require$$3$1 from 'pako/lib/zlib/inflate.js';\nimport require$$4$1 from 'pako/lib/zlib/constants.js';\nimport MD5 from 'crypto-js/md5.js';\nimport * as fontkit from 'fontkit';\nimport _JPEG from 'jay-peg';\nimport PNG from '@react-pdf/png-js';\nimport * as CryptoJS from 'crypto-js/core.js';\n\nvar global$1 = (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray$1 = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer$2.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined\n ? global$1.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer$2.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer$2.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer$2(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer$2 (arg, encodingOrOffset, length) {\n if (!Buffer$2.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer$2)) {\n return new Buffer$2(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from$1(this, arg, encodingOrOffset, length)\n}\n\nBuffer$2.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer$2._augment = function (arr) {\n arr.__proto__ = Buffer$2.prototype;\n return arr\n};\n\nfunction from$1 (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer$2.from = function (value, encodingOrOffset, length) {\n return from$1(null, value, encodingOrOffset, length)\n};\n\nif (Buffer$2.TYPED_ARRAY_SUPPORT) {\n Buffer$2.prototype.__proto__ = Uint8Array.prototype;\n Buffer$2.__proto__ = Uint8Array;\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer$2[Symbol.species] === Buffer$2) ;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer$2.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer$2.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer$2.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer$2.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer$2.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer$2.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray$1(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer$2.alloc(+length)\n}\nBuffer$2.isBuffer = isBuffer$1;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer$2.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer$2.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer$2.concat = function concat (list, length) {\n if (!isArray$1(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer$2.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer$2.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer$2.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer$2.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer$2.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer$2.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer$2.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer$2.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer$2.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer$2.compare(this, b) === 0\n};\n\nBuffer$2.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return ''\n};\n\nBuffer$2.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer$2.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer$2.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer$2.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer$2.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer$2.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer$2.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer$2.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex$1(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer$2.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer$2.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer$2(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer$2.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer$2.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer$2.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer$2.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer$2.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer$2.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer$2.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer$2.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer$2.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer$2.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer$2.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer$2.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer$2.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer$2.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer$2.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer$2.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer$2.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer$2.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer$2.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer$2.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer$2.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer$2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer$2.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer$2.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer$2.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer$2.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer$2.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer$2.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer$2.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer$2.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer$2.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer$2.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer$2.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer$2.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer$2.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer$2.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer$2.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer$2.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer$2.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer$2.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer$2.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer$2.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer$2.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer$2(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex$1 (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer$1(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nvar _polyfillNode_buffer = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Buffer: Buffer$2,\n INSPECT_MAX_BYTES: INSPECT_MAX_BYTES,\n SlowBuffer: SlowBuffer,\n isBuffer: isBuffer$1,\n kMaxLength: _kMaxLength\n});\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction getAugmentedNamespace(n) {\n if (n.__esModule) return n;\n var f = n.default;\n\tif (typeof f == \"function\") {\n\t\tvar a = function a () {\n\t\t\tif (this instanceof a) {\n return Reflect.construct(f, arguments, this.constructor);\n\t\t\t}\n\t\t\treturn f.apply(this, arguments);\n\t\t};\n\t\ta.prototype = f.prototype;\n } else a = {};\n Object.defineProperty(a, '__esModule', {value: true});\n\tObject.keys(n).forEach(function (k) {\n\t\tvar d = Object.getOwnPropertyDescriptor(n, k);\n\t\tObject.defineProperty(a, k, d.get ? d : {\n\t\t\tenumerable: true,\n\t\t\tget: function () {\n\t\t\t\treturn n[k];\n\t\t\t}\n\t\t});\n\t});\n\treturn a;\n}\n\nvar readableBrowser = {exports: {}};\n\nvar _registry = {};\n\n// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global$1.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global$1.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nfunction nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nvar title = 'browser';\nvar platform = 'browser';\nvar browser$1 = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\nvar versions = {};\nvar release = {};\nvar config$1 = {};\n\nfunction noop$2() {}\n\nvar on = noop$2;\nvar addListener = noop$2;\nvar once$2 = noop$2;\nvar off = noop$2;\nvar removeListener = noop$2;\nvar removeAllListeners = noop$2;\nvar emit = noop$2;\n\nfunction binding$1(name) {\n throw new Error('process.binding is not supported');\n}\n\nfunction cwd () { return '/' }\nfunction chdir (dir) {\n throw new Error('process.chdir is not supported');\n}function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global$1.performance || {};\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() };\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nfunction hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3;\n var seconds = Math.floor(clocktime);\n var nanoseconds = Math.floor((clocktime%1)*1e9);\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0];\n nanoseconds = nanoseconds - previousTimestamp[1];\n if (nanoseconds<0) {\n seconds--;\n nanoseconds += 1e9;\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nfunction uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nvar browser$1$1 = {\n nextTick: nextTick,\n title: title,\n browser: browser$1,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once$2,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding$1,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config$1,\n uptime: uptime\n};\n\nvar domain;\n\n// This constructor is used to store event handlers. Instantiating this is\n// faster than explicitly calling `Object.create(null)` to get a \"clean\" empty\n// object (tested with v8 v4.9).\nfunction EventHandlers() {}\nEventHandlers.prototype = Object.create(null);\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\n// nodejs oddity\n// require('events') === require('events').EventEmitter\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.usingDomains = false;\n\nEventEmitter.prototype.domain = undefined;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\nEventEmitter.init = function() {\n this.domain = null;\n if (EventEmitter.usingDomains) {\n // if there is an active domain, then attach to it.\n if (domain.active ) ;\n }\n\n if (!this._events || this._events === Object.getPrototypeOf(this)._events) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || isNaN(n))\n throw new TypeError('\"n\" argument must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nfunction $getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return $getMaxListeners(this);\n};\n\n// These standalone emit* functions are used to optimize calling of event\n// handlers for fast cases because emit() itself often has a variable number of\n// arguments and can be deoptimized because of that. These functions always have\n// the same number of arguments and thus do not get deoptimized, so the code\n// inside them can execute faster.\nfunction emitNone(handler, isFn, self) {\n if (isFn)\n handler.call(self);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self);\n }\n}\nfunction emitOne(handler, isFn, self, arg1) {\n if (isFn)\n handler.call(self, arg1);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1);\n }\n}\nfunction emitTwo(handler, isFn, self, arg1, arg2) {\n if (isFn)\n handler.call(self, arg1, arg2);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2);\n }\n}\nfunction emitThree(handler, isFn, self, arg1, arg2, arg3) {\n if (isFn)\n handler.call(self, arg1, arg2, arg3);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].call(self, arg1, arg2, arg3);\n }\n}\n\nfunction emitMany(handler, isFn, self, args) {\n if (isFn)\n handler.apply(self, args);\n else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n listeners[i].apply(self, args);\n }\n}\n\nEventEmitter.prototype.emit = function emit(type) {\n var er, handler, len, args, i, events, domain;\n var doError = (type === 'error');\n\n events = this._events;\n if (events)\n doError = (doError && events.error == null);\n else if (!doError)\n return false;\n\n domain = this.domain;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n er = arguments[1];\n if (domain) {\n if (!er)\n er = new Error('Uncaught, unspecified \"error\" event');\n er.domainEmitter = this;\n er.domain = domain;\n er.domainThrown = false;\n domain.emit('error', er);\n } else if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n return false;\n }\n\n handler = events[type];\n\n if (!handler)\n return false;\n\n var isFn = typeof handler === 'function';\n len = arguments.length;\n switch (len) {\n // fast cases\n case 1:\n emitNone(handler, isFn, this);\n break;\n case 2:\n emitOne(handler, isFn, this, arguments[1]);\n break;\n case 3:\n emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n break;\n case 4:\n emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n break;\n // slower\n default:\n args = new Array(len - 1);\n for (i = 1; i < len; i++)\n args[i - 1] = arguments[i];\n emitMany(handler, isFn, this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = target._events;\n if (!events) {\n events = target._events = new EventHandlers();\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (!existing) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] :\n [existing, listener];\n } else {\n // If we've already got an array, just append.\n if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n }\n\n // Check for listener leak\n if (!existing.warned) {\n m = $getMaxListeners(target);\n if (m && m > 0 && existing.length > m) {\n existing.warned = true;\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + type + ' listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n emitWarning(w);\n }\n }\n }\n\n return target;\n}\nfunction emitWarning(e) {\n typeof console.warn === 'function' ? console.warn(e) : console.log(e);\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction _onceWrap(target, type, listener) {\n var fired = false;\n function g() {\n target.removeListener(type, g);\n if (!fired) {\n fired = true;\n listener.apply(target, arguments);\n }\n }\n g.listener = listener;\n return g;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n if (typeof listener !== 'function')\n throw new TypeError('\"listener\" argument must be a function');\n\n events = this._events;\n if (!events)\n return this;\n\n list = events[type];\n if (!list)\n return this;\n\n if (list === listener || (list.listener && list.listener === listener)) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list[0] = undefined;\n if (--this._eventsCount === 0) {\n this._events = new EventHandlers();\n return this;\n } else {\n delete events[type];\n }\n } else {\n spliceOne(list, position);\n }\n\n if (events.removeListener)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n \n// Alias for removeListener added in NodeJS 10.0\n// https://nodejs.org/api/events.html#events_emitter_off_eventname_listener\nEventEmitter.prototype.off = function(type, listener){\n return this.removeListener(type, listener);\n};\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events;\n\n events = this._events;\n if (!events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!events.removeListener) {\n if (arguments.length === 0) {\n this._events = new EventHandlers();\n this._eventsCount = 0;\n } else if (events[type]) {\n if (--this._eventsCount === 0)\n this._events = new EventHandlers();\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n for (var i = 0, key; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = new EventHandlers();\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n do {\n this.removeListener(type, listeners[listeners.length - 1]);\n } while (listeners[0]);\n }\n\n return this;\n };\n\nEventEmitter.prototype.listeners = function listeners(type) {\n var evlistener;\n var ret;\n var events = this._events;\n\n if (!events)\n ret = [];\n else {\n evlistener = events[type];\n if (!evlistener)\n ret = [];\n else if (typeof evlistener === 'function')\n ret = [evlistener.listener || evlistener];\n else\n ret = unwrapListeners(evlistener);\n }\n\n return ret;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n};\n\n// About 1.5x faster than the two-arg version of Array#splice().\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n list[i] = list[k];\n list.pop();\n}\n\nfunction arrayClone(arr, i) {\n var copy = new Array(i);\n while (i--)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nvar _polyfillNode_events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n EventEmitter: EventEmitter,\n default: EventEmitter\n});\n\nvar require$$1$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_events);\n\nvar streamBrowser = require$$1$1.EventEmitter;\n\nvar require$$0 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_buffer);\n\nvar inherits$2;\nif (typeof Object.create === 'function'){\n inherits$2 = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits$2 = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$3 = inherits$2;\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nfunction format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect$1(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect$1(x);\n }\n }\n return str;\n}\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nfunction deprecate$1(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global$1.process)) {\n return function() {\n return deprecate$1(fn, msg).apply(this, arguments);\n };\n }\n\n if (browser$1$1.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (browser$1$1.throwDeprecation) {\n throw new Error(msg);\n } else if (browser$1$1.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\nvar debugs = {};\nvar debugEnviron;\nfunction debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = browser$1$1.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n}\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect$1(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect$1.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect$1.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect$1.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect$1.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect$1.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect$1 &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var length = output.reduce(function(prev, cur) {\n if (cur.indexOf('\\n') >= 0) ;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nfunction isBuffer(maybeBuf) {\n return Buffer$2.isBuffer(maybeBuf);\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad$1(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad$1(d.getHours()),\n pad$1(d.getMinutes()),\n pad$1(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nfunction log() {\n console.log('%s - %s', timestamp(), format.apply(null, arguments));\n}\n\nfunction _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n}\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nfunction promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\npromisify.custom = kCustomPromisifiedSymbol;\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { browser$1$1.nextTick(cb.bind(null, null, ret)); },\n function(rej) { browser$1$1.nextTick(callbackifyOnRejected.bind(null, rej, cb)); });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n return callbackified;\n}\n\nvar _polyfillNode_util = {\n inherits: inherits$3,\n _extend: _extend,\n log: log,\n isBuffer: isBuffer,\n isPrimitive: isPrimitive,\n isFunction: isFunction,\n isError: isError,\n isDate: isDate,\n isObject: isObject,\n isRegExp: isRegExp,\n isUndefined: isUndefined,\n isSymbol: isSymbol,\n isString: isString,\n isNumber: isNumber,\n isNullOrUndefined: isNullOrUndefined,\n isNull: isNull,\n isBoolean: isBoolean,\n isArray: isArray,\n inspect: inspect$1,\n deprecate: deprecate$1,\n format: format,\n debuglog: debuglog,\n promisify: promisify,\n callbackify: callbackify,\n};\n\nvar _polyfillNode_util$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n _extend: _extend,\n callbackify: callbackify,\n debuglog: debuglog,\n default: _polyfillNode_util,\n deprecate: deprecate$1,\n format: format,\n inherits: inherits$3,\n inspect: inspect$1,\n isArray: isArray,\n isBoolean: isBoolean,\n isBuffer: isBuffer,\n isDate: isDate,\n isError: isError,\n isFunction: isFunction,\n isNull: isNull,\n isNullOrUndefined: isNullOrUndefined,\n isNumber: isNumber,\n isObject: isObject,\n isPrimitive: isPrimitive,\n isRegExp: isRegExp,\n isString: isString,\n isSymbol: isSymbol,\n isUndefined: isUndefined,\n log: log,\n promisify: promisify\n});\n\nvar require$$3 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_util$1);\n\nvar buffer_list;\nvar hasRequiredBuffer_list;\nfunction requireBuffer_list() {\n if (hasRequiredBuffer_list) return buffer_list;\n hasRequiredBuffer_list = 1;\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n }\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n }\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n var _require = require$$0,\n Buffer = _require.Buffer;\n var _require2 = require$$3,\n inspect = _require2.inspect;\n var custom = inspect && inspect.custom || 'inspect';\n function copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n }\n buffer_list = /*#__PURE__*/\n function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n }();\n return buffer_list;\n}\n\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n browser$1$1.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n browser$1$1.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n } // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n browser$1$1.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n browser$1$1.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n browser$1$1.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n browser$1$1.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n browser$1$1.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy$2(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nvar destroy_1 = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy$2\n};\n\nvar errorsBrowser = {};\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar codes = {};\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n return NodeError;\n }(Base);\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n var msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nerrorsBrowser.codes = codes;\n\nvar ERR_INVALID_OPT_VALUE = errorsBrowser.codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark$2(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n } // Default value\n\n return state.objectMode ? 16 : 16 * 1024;\n}\nvar state = {\n getHighWaterMark: getHighWaterMark$2\n};\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\nvar _polyfillNode_inherits = /*#__PURE__*/Object.freeze({\n __proto__: null,\n default: inherits$1\n});\n\nvar require$$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_inherits);\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar isBufferEncoding = Buffer$2.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n };\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nfunction StringDecoder$1(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer$2(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n}\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder$1.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder$1.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder$1.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n\nvar _polyfillNode_string_decoder = /*#__PURE__*/Object.freeze({\n __proto__: null,\n StringDecoder: StringDecoder$1\n});\n\nvar require$$10 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_string_decoder);\n\nvar ERR_STREAM_PREMATURE_CLOSE = errorsBrowser.codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once$1(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop$1() {}\nfunction isRequest$1(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos$1(stream, opts, callback) {\n if (typeof opts === 'function') return eos$1(stream, null, opts);\n if (!opts) opts = {};\n callback = once$1(callback || noop$1);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest$1(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nvar endOfStream = eos$1;\n\nvar async_iterator;\nvar hasRequiredAsync_iterator;\nfunction requireAsync_iterator() {\n if (hasRequiredAsync_iterator) return async_iterator;\n hasRequiredAsync_iterator = 1;\n var _Object$setPrototypeO;\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n }\n var finished = endOfStream;\n var kLastResolve = Symbol('lastResolve');\n var kLastReject = Symbol('lastReject');\n var kError = Symbol('error');\n var kEnded = Symbol('ended');\n var kLastPromise = Symbol('lastPromise');\n var kHandlePromise = Symbol('handlePromise');\n var kStream = Symbol('stream');\n function createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n }\n function readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n }\n function onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n browser$1$1.nextTick(readAndResolve, iter);\n }\n function wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n }\n var AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\n var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n browser$1$1.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n }, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n }), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n }), _Object$setPrototypeO), AsyncIteratorPrototype);\n var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n };\n async_iterator = createReadableStreamAsyncIterator;\n return async_iterator;\n}\n\nvar fromBrowser;\nvar hasRequiredFromBrowser;\nfunction requireFromBrowser() {\n if (hasRequiredFromBrowser) return fromBrowser;\n hasRequiredFromBrowser = 1;\n fromBrowser = function () {\n throw new Error('Readable.from is not available in the browser');\n };\n return fromBrowser;\n}\n\nconst Registry$4 = _registry;\nRegistry$4.Readable = Readable;\nReadable.ReadableState = ReadableState;\n/**/\n\nrequire$$1$1.EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\nvar Stream$1 = streamBrowser;\n/**/\n\nvar Buffer$1 = require$$0.Buffer;\nvar OurUint8Array$1 = commonjsGlobal.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer$1(chunk) {\n return Buffer$1.from(chunk);\n}\nfunction _isUint8Array$1(obj) {\n return Buffer$1.isBuffer(obj) || obj instanceof OurUint8Array$1;\n}\n/**/\n\nvar debugUtil = require$$3;\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = requireBuffer_list();\nvar destroyImpl$1 = destroy_1;\nvar _require$1 = state,\n getHighWaterMark$1 = _require$1.getHighWaterMark;\nvar _require$codes$3 = errorsBrowser.codes,\n ERR_INVALID_ARG_TYPE$1 = _require$codes$3.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes$3.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED$2 = _require$codes$3.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes$3.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire$$1(Readable, Stream$1);\nvar errorOrDestroy$1 = destroyImpl$1.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Registry$4.Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n\n this.highWaterMark = getHighWaterMark$1(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require$$10.StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Registry$4.Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream$1.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl$1.destroy;\nReadable.prototype._undestroy = destroyImpl$1.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n}; // Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer$1.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy$1(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer$1.prototype) {\n chunk = _uint8ArrayToBuffer$1(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy$1(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy$1(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array$1(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE$1('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require$$10.StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n } // If we're asking for more than the current hwm, then raise the hwm.\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n } // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n // if we need a readable event, then we need to do some reading.\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n state.sync = false; // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n} // Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n browser$1$1.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n} // at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n browser$1$1.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n} // abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\n\nReadable.prototype._read = function (n) {\n errorOrDestroy$1(this, new ERR_METHOD_NOT_IMPLEMENTED$2('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== browser$1$1.stdout && dest !== browser$1$1.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) browser$1$1.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n } // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true; // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy$1(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n return this;\n } // try to find the right one.\n\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream$1.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n browser$1$1.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream$1.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n browser$1$1.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream$1.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n browser$1$1.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n browser$1$1.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {\n }\n} // wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = requireAsync_iterator();\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n}); // Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n browser$1$1.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = requireFromBrowser();\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n/**\n * Module exports.\n */\n\nvar browser = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!commonjsGlobal.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = commonjsGlobal.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\nconst Registry$3 = _registry;\nRegistry$3.Writable = Writable;\n// there will be only 2 of these for each stream\n\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: browser\n};\n/**/\n\n/**/\n\nvar Stream = streamBrowser;\n/**/\n\nvar Buffer = require$$0.Buffer;\nvar OurUint8Array = commonjsGlobal.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = destroy_1;\nvar _require = state,\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes$2 = errorsBrowser.codes,\n ERR_INVALID_ARG_TYPE = _require$codes$2.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED$1 = _require$codes$2.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK$1 = _require$codes$2.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes$2.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED$1 = _require$codes$2.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes$2.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes$2.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes$2.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire$$1(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n options = options || {}; // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Registry$3.Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n\n this.sync = true; // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Registry$3.Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n browser$1$1.nextTick(cb, er);\n} // Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n browser$1$1.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n}); // if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED$1('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n browser$1$1.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n browser$1$1.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK$1();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n browser$1$1.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n} // Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED$1('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish$1(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n browser$1$1.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish$1(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) browser$1$1.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n/**/\n\nvar objectKeys$1 = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }\n return keys;\n};\n/**/\n\nconst Registry$2 = _registry;\nRegistry$2.Duplex = Duplex;\nrequire$$1(Duplex, Registry$2.Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys$1(Registry$2.Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Registry$2.Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Registry$2.Readable.call(this, options);\n Registry$2.Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n browser$1$1.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nconst Registry$1 = _registry;\nRegistry$1.Transform = Transform$1;\nvar _require$codes$1 = errorsBrowser.codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes$1.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes$1.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes$1.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes$1.ERR_TRANSFORM_WITH_LENGTH_0;\nrequire$$1(Transform$1, Registry$1.Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform$1(options) {\n if (!(this instanceof Transform$1)) return new Transform$1(options);\n Registry$1.Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform$1.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Registry$1.Duplex.prototype.push.call(this, chunk, encoding);\n}; // This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\n\nTransform$1.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform$1.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n}; // Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\n\nTransform$1.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform$1.prototype._destroy = function (err, cb) {\n Registry$1.Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\nconst Registry = _registry;\nRegistry.PassThrough = PassThrough;\nrequire$$1(PassThrough, Registry.Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = errorsBrowser.codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = endOfStream;\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nvar pipeline_1 = pipeline;\n\n(function (module, exports) {\n const Registry = _registry;\n exports = module.exports = Registry.Readable;\n exports.Stream = Registry.Readable;\n exports.Readable = Registry.Readable;\n exports.Writable = Registry.Writable;\n exports.Duplex = Registry.Duplex;\n exports.Transform = Registry.Transform;\n exports.PassThrough = Registry.PassThrough;\n exports.finished = endOfStream;\n exports.pipeline = pipeline_1;\n})(readableBrowser, readableBrowser.exports);\nvar readableBrowserExports = readableBrowser.exports;\nvar stream = /*@__PURE__*/getDefaultExportFromCjs(readableBrowserExports);\n\nvar lib = {};\n\nvar binding = {};\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\nvar pSlice = Array.prototype.slice;\nvar _functionsHaveNames;\nfunction functionsHaveNames() {\n if (typeof _functionsHaveNames !== 'undefined') {\n return _functionsHaveNames;\n }\n return _functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n }());\n}\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer$1(arrbuf)) {\n return false;\n }\n if (typeof global$1.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nfunction assert(value, message) {\n if (!value) fail(value, true, message, '==', ok);\n}\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!isFunction(func)) {\n return;\n }\n if (functionsHaveNames()) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = AssertionError;\nfunction AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n}\n\n// assert.AssertionError instanceof Error\ninherits$3(AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames() || !isFunction(something)) {\n return inspect$1(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\nassert.equal = equal;\nfunction equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', equal);\n}\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\nassert.notEqual = notEqual;\nfunction notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', notEqual);\n }\n}\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\nassert.deepEqual = deepEqual;\nfunction deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', deepEqual);\n }\n}\nassert.deepStrictEqual = deepStrictEqual;\nfunction deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', deepStrictEqual);\n }\n}\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer$1(actual) && isBuffer$1(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer$1(actual) !== isBuffer$1(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (isPrimitive(a) || isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\nassert.notDeepEqual = notDeepEqual;\nfunction notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', notDeepEqual);\n }\n}\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\nassert.strictEqual = strictEqual;\nfunction strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', strictEqual);\n }\n}\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\nassert.notStrictEqual = notStrictEqual;\nfunction notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', notStrictEqual);\n }\n}\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\nassert.throws = throws;\nfunction throws(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n}\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = doesNotThrow;\nfunction doesNotThrow(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n}\n\nassert.ifError = ifError;\nfunction ifError(err) {\n if (err) throw err;\n}\n\nvar _polyfillNode_assert = /*#__PURE__*/Object.freeze({\n __proto__: null,\n AssertionError: AssertionError,\n assert: ok,\n deepEqual: deepEqual,\n deepStrictEqual: deepStrictEqual,\n default: assert,\n doesNotThrow: doesNotThrow,\n equal: equal,\n fail: fail,\n ifError: ifError,\n notDeepEqual: notDeepEqual,\n notDeepStrictEqual: notDeepStrictEqual,\n notEqual: notEqual,\n notStrictEqual: notStrictEqual,\n ok: ok,\n strictEqual: strictEqual,\n throws: throws\n});\n\nvar require$$4 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_assert);\n\n(function (exports) {\n\n /* eslint camelcase: \"off\" */\n var assert = require$$4;\n var Zstream = require$$1$2;\n var zlib_deflate = require$$2;\n var zlib_inflate = require$$3$1;\n var constants = require$$4$1;\n for (var key in constants) {\n exports[key] = constants[key];\n }\n\n // zlib modes\n exports.NONE = 0;\n exports.DEFLATE = 1;\n exports.INFLATE = 2;\n exports.GZIP = 3;\n exports.GUNZIP = 4;\n exports.DEFLATERAW = 5;\n exports.INFLATERAW = 6;\n exports.UNZIP = 7;\n var GZIP_HEADER_ID1 = 0x1f;\n var GZIP_HEADER_ID2 = 0x8b;\n\n /**\n * Emulate Node's zlib C++ layer for use by the JS layer in index.js\n */\n function Zlib(mode) {\n if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n throw new TypeError('Bad argument');\n }\n this.dictionary = null;\n this.err = 0;\n this.flush = 0;\n this.init_done = false;\n this.level = 0;\n this.memLevel = 0;\n this.mode = mode;\n this.strategy = 0;\n this.windowBits = 0;\n this.write_in_progress = false;\n this.pending_close = false;\n this.gzip_id_bytes_read = 0;\n }\n Zlib.prototype.close = function () {\n if (this.write_in_progress) {\n this.pending_close = true;\n return;\n }\n this.pending_close = false;\n assert(this.init_done, 'close before init');\n assert(this.mode <= exports.UNZIP);\n if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n zlib_deflate.deflateEnd(this.strm);\n } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n zlib_inflate.inflateEnd(this.strm);\n }\n this.mode = exports.NONE;\n this.dictionary = null;\n };\n Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n };\n Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n };\n Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n assert.equal(arguments.length, 8);\n assert(this.init_done, 'write before init');\n assert(this.mode !== exports.NONE, 'already finalized');\n assert.equal(false, this.write_in_progress, 'write already in progress');\n assert.equal(false, this.pending_close, 'close is pending');\n this.write_in_progress = true;\n assert.equal(false, flush === undefined, 'must provide flush value');\n this.write_in_progress = true;\n if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n throw new Error('Invalid flush value');\n }\n if (input == null) {\n input = Buffer$2.alloc(0);\n in_len = 0;\n in_off = 0;\n }\n this.strm.avail_in = in_len;\n this.strm.input = input;\n this.strm.next_in = in_off;\n this.strm.avail_out = out_len;\n this.strm.output = out;\n this.strm.next_out = out_off;\n this.flush = flush;\n if (!async) {\n // sync version\n this._process();\n if (this._checkError()) {\n return this._afterSync();\n }\n return;\n }\n\n // async version\n var self = this;\n browser$1$1.nextTick(function () {\n self._process();\n self._after();\n });\n return this;\n };\n Zlib.prototype._afterSync = function () {\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n this.write_in_progress = false;\n return [avail_in, avail_out];\n };\n Zlib.prototype._process = function () {\n var next_expected_header_byte = null;\n\n // If the avail_out is left at 0, then it means that it ran out\n // of room. If there was avail_out left over, then it means\n // that all of the input was consumed.\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflate(this.strm, this.flush);\n break;\n case exports.UNZIP:\n if (this.strm.avail_in > 0) {\n next_expected_header_byte = this.strm.next_in;\n }\n switch (this.gzip_id_bytes_read) {\n case 0:\n if (next_expected_header_byte === null) {\n break;\n }\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n this.gzip_id_bytes_read = 1;\n next_expected_header_byte++;\n if (this.strm.avail_in === 1) {\n // The only available byte was already read.\n break;\n }\n } else {\n this.mode = exports.INFLATE;\n break;\n }\n\n // fallthrough\n case 1:\n if (next_expected_header_byte === null) {\n break;\n }\n if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n this.gzip_id_bytes_read = 2;\n this.mode = exports.GUNZIP;\n } else {\n // There is no actual difference between INFLATE and INFLATERAW\n // (after initialization).\n this.mode = exports.INFLATE;\n }\n break;\n default:\n throw new Error('invalid number of gzip magic number bytes read');\n }\n\n // fallthrough\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n this.err = zlib_inflate.inflate(this.strm, this.flush\n\n // If data was encoded with dictionary\n );\n if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n // Load it\n this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n if (this.err === exports.Z_OK) {\n // And try to decode again\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n } else if (this.err === exports.Z_DATA_ERROR) {\n // Both inflateSetDictionary() and inflate() return Z_DATA_ERROR.\n // Make it possible for After() to tell a bad dictionary from bad\n // input.\n this.err = exports.Z_NEED_DICT;\n }\n }\n while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n // Bytes remain in input buffer. Perhaps this is another compressed\n // member in the same archive, or just trailing garbage.\n // Trailing zero bytes are okay, though, since they are frequently\n // used for padding.\n\n this.reset();\n this.err = zlib_inflate.inflate(this.strm, this.flush);\n }\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n };\n Zlib.prototype._checkError = function () {\n // Acceptable error states depend on the type of zlib stream.\n switch (this.err) {\n case exports.Z_OK:\n case exports.Z_BUF_ERROR:\n if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n this._error('unexpected end of file');\n return false;\n }\n break;\n case exports.Z_STREAM_END:\n // normal statuses, not fatal\n break;\n case exports.Z_NEED_DICT:\n if (this.dictionary == null) {\n this._error('Missing dictionary');\n } else {\n this._error('Bad dictionary');\n }\n return false;\n default:\n // something else.\n this._error('Zlib error');\n return false;\n }\n return true;\n };\n Zlib.prototype._after = function () {\n if (!this._checkError()) {\n return;\n }\n var avail_out = this.strm.avail_out;\n var avail_in = this.strm.avail_in;\n this.write_in_progress = false;\n\n // call the write() cb\n this.callback(avail_in, avail_out);\n if (this.pending_close) {\n this.close();\n }\n };\n Zlib.prototype._error = function (message) {\n if (this.strm.msg) {\n message = this.strm.msg;\n }\n this.onerror(message, this.err\n\n // no hope of rescue.\n );\n this.write_in_progress = false;\n if (this.pending_close) {\n this.close();\n }\n };\n Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n assert(level >= -1 && level <= 9, 'invalid compression level');\n assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n this._init(level, windowBits, memLevel, strategy, dictionary);\n this._setDictionary();\n };\n Zlib.prototype.params = function () {\n throw new Error('deflateParams Not supported');\n };\n Zlib.prototype.reset = function () {\n this._reset();\n this._setDictionary();\n };\n Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n this.level = level;\n this.windowBits = windowBits;\n this.memLevel = memLevel;\n this.strategy = strategy;\n this.flush = exports.Z_NO_FLUSH;\n this.err = exports.Z_OK;\n if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n this.windowBits += 16;\n }\n if (this.mode === exports.UNZIP) {\n this.windowBits += 32;\n }\n if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n this.windowBits = -1 * this.windowBits;\n }\n this.strm = new Zstream();\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.GZIP:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n break;\n case exports.INFLATE:\n case exports.GUNZIP:\n case exports.INFLATERAW:\n case exports.UNZIP:\n this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n break;\n default:\n throw new Error('Unknown mode ' + this.mode);\n }\n if (this.err !== exports.Z_OK) {\n this._error('Init error');\n }\n this.dictionary = dictionary;\n this.write_in_progress = false;\n this.init_done = true;\n };\n Zlib.prototype._setDictionary = function () {\n if (this.dictionary == null) {\n return;\n }\n this.err = exports.Z_OK;\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n break;\n }\n if (this.err !== exports.Z_OK) {\n this._error('Failed to set dictionary');\n }\n };\n Zlib.prototype._reset = function () {\n this.err = exports.Z_OK;\n switch (this.mode) {\n case exports.DEFLATE:\n case exports.DEFLATERAW:\n case exports.GZIP:\n this.err = zlib_deflate.deflateReset(this.strm);\n break;\n case exports.INFLATE:\n case exports.INFLATERAW:\n case exports.GUNZIP:\n this.err = zlib_inflate.inflateReset(this.strm);\n break;\n }\n if (this.err !== exports.Z_OK) {\n this._error('Failed to reset stream');\n }\n };\n exports.Zlib = Zlib;\n})(binding);\n\n(function (exports) {\n\n var Buffer = require$$0.Buffer;\n var Transform = readableBrowserExports.Transform;\n var binding$1 = binding;\n var util = require$$3;\n var assert = require$$4.ok;\n var kMaxLength = require$$0.kMaxLength;\n var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n\n // zlib doesn't provide these, so kludge them in following the same\n // const naming scheme zlib uses.\n binding$1.Z_MIN_WINDOWBITS = 8;\n binding$1.Z_MAX_WINDOWBITS = 15;\n binding$1.Z_DEFAULT_WINDOWBITS = 15;\n\n // fewer than 64 bytes per chunk is stupid.\n // technically it could work with as few as 8, but even 64 bytes\n // is absurdly low. Usually a MB or more is best.\n binding$1.Z_MIN_CHUNK = 64;\n binding$1.Z_MAX_CHUNK = Infinity;\n binding$1.Z_DEFAULT_CHUNK = 16 * 1024;\n binding$1.Z_MIN_MEMLEVEL = 1;\n binding$1.Z_MAX_MEMLEVEL = 9;\n binding$1.Z_DEFAULT_MEMLEVEL = 8;\n binding$1.Z_MIN_LEVEL = -1;\n binding$1.Z_MAX_LEVEL = 9;\n binding$1.Z_DEFAULT_LEVEL = binding$1.Z_DEFAULT_COMPRESSION;\n\n // expose all the zlib constants\n var bkeys = Object.keys(binding$1);\n for (var bk = 0; bk < bkeys.length; bk++) {\n var bkey = bkeys[bk];\n if (bkey.match(/^Z/)) {\n Object.defineProperty(exports, bkey, {\n enumerable: true,\n value: binding$1[bkey],\n writable: false\n });\n }\n }\n\n // translation table for return codes.\n var codes = {\n Z_OK: binding$1.Z_OK,\n Z_STREAM_END: binding$1.Z_STREAM_END,\n Z_NEED_DICT: binding$1.Z_NEED_DICT,\n Z_ERRNO: binding$1.Z_ERRNO,\n Z_STREAM_ERROR: binding$1.Z_STREAM_ERROR,\n Z_DATA_ERROR: binding$1.Z_DATA_ERROR,\n Z_MEM_ERROR: binding$1.Z_MEM_ERROR,\n Z_BUF_ERROR: binding$1.Z_BUF_ERROR,\n Z_VERSION_ERROR: binding$1.Z_VERSION_ERROR\n };\n var ckeys = Object.keys(codes);\n for (var ck = 0; ck < ckeys.length; ck++) {\n var ckey = ckeys[ck];\n codes[codes[ckey]] = ckey;\n }\n Object.defineProperty(exports, 'codes', {\n enumerable: true,\n value: Object.freeze(codes),\n writable: false\n });\n exports.Deflate = Deflate;\n exports.Inflate = Inflate;\n exports.Gzip = Gzip;\n exports.Gunzip = Gunzip;\n exports.DeflateRaw = DeflateRaw;\n exports.InflateRaw = InflateRaw;\n exports.Unzip = Unzip;\n exports.createDeflate = function (o) {\n return new Deflate(o);\n };\n exports.createInflate = function (o) {\n return new Inflate(o);\n };\n exports.createDeflateRaw = function (o) {\n return new DeflateRaw(o);\n };\n exports.createInflateRaw = function (o) {\n return new InflateRaw(o);\n };\n exports.createGzip = function (o) {\n return new Gzip(o);\n };\n exports.createGunzip = function (o) {\n return new Gunzip(o);\n };\n exports.createUnzip = function (o) {\n return new Unzip(o);\n };\n\n // Convenience methods.\n // compress/decompress a string or buffer in one step.\n exports.deflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Deflate(opts), buffer, callback);\n };\n exports.deflateSync = function (buffer, opts) {\n return zlibBufferSync(new Deflate(opts), buffer);\n };\n exports.gzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gzip(opts), buffer, callback);\n };\n exports.gzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gzip(opts), buffer);\n };\n exports.deflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n };\n exports.deflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new DeflateRaw(opts), buffer);\n };\n exports.unzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Unzip(opts), buffer, callback);\n };\n exports.unzipSync = function (buffer, opts) {\n return zlibBufferSync(new Unzip(opts), buffer);\n };\n exports.inflate = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Inflate(opts), buffer, callback);\n };\n exports.inflateSync = function (buffer, opts) {\n return zlibBufferSync(new Inflate(opts), buffer);\n };\n exports.gunzip = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new Gunzip(opts), buffer, callback);\n };\n exports.gunzipSync = function (buffer, opts) {\n return zlibBufferSync(new Gunzip(opts), buffer);\n };\n exports.inflateRaw = function (buffer, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n return zlibBuffer(new InflateRaw(opts), buffer, callback);\n };\n exports.inflateRawSync = function (buffer, opts) {\n return zlibBufferSync(new InflateRaw(opts), buffer);\n };\n function zlibBuffer(engine, buffer, callback) {\n var buffers = [];\n var nread = 0;\n engine.on('error', onError);\n engine.on('end', onEnd);\n engine.end(buffer);\n flow();\n function flow() {\n var chunk;\n while (null !== (chunk = engine.read())) {\n buffers.push(chunk);\n nread += chunk.length;\n }\n engine.once('readable', flow);\n }\n function onError(err) {\n engine.removeListener('end', onEnd);\n engine.removeListener('readable', flow);\n callback(err);\n }\n function onEnd() {\n var buf;\n var err = null;\n if (nread >= kMaxLength) {\n err = new RangeError(kRangeErrorMessage);\n } else {\n buf = Buffer.concat(buffers, nread);\n }\n buffers = [];\n engine.close();\n callback(err, buf);\n }\n }\n function zlibBufferSync(engine, buffer) {\n if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n var flushFlag = engine._finishFlushFlag;\n return engine._processChunk(buffer, flushFlag);\n }\n\n // generic zlib\n // minimal 2-byte header\n function Deflate(opts) {\n if (!(this instanceof Deflate)) return new Deflate(opts);\n Zlib.call(this, opts, binding$1.DEFLATE);\n }\n function Inflate(opts) {\n if (!(this instanceof Inflate)) return new Inflate(opts);\n Zlib.call(this, opts, binding$1.INFLATE);\n }\n\n // gzip - bigger header, same deflate compression\n function Gzip(opts) {\n if (!(this instanceof Gzip)) return new Gzip(opts);\n Zlib.call(this, opts, binding$1.GZIP);\n }\n function Gunzip(opts) {\n if (!(this instanceof Gunzip)) return new Gunzip(opts);\n Zlib.call(this, opts, binding$1.GUNZIP);\n }\n\n // raw - no header\n function DeflateRaw(opts) {\n if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n Zlib.call(this, opts, binding$1.DEFLATERAW);\n }\n function InflateRaw(opts) {\n if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n Zlib.call(this, opts, binding$1.INFLATERAW);\n }\n\n // auto-detect header.\n function Unzip(opts) {\n if (!(this instanceof Unzip)) return new Unzip(opts);\n Zlib.call(this, opts, binding$1.UNZIP);\n }\n function isValidFlushFlag(flag) {\n return flag === binding$1.Z_NO_FLUSH || flag === binding$1.Z_PARTIAL_FLUSH || flag === binding$1.Z_SYNC_FLUSH || flag === binding$1.Z_FULL_FLUSH || flag === binding$1.Z_FINISH || flag === binding$1.Z_BLOCK;\n }\n\n // the Zlib class they all inherit from\n // This thing manages the queue of requests, and returns\n // true or false if there is anything in the queue when\n // you call the .write() method.\n\n function Zlib(opts, mode) {\n var _this = this;\n this._opts = opts = opts || {};\n this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n Transform.call(this, opts);\n if (opts.flush && !isValidFlushFlag(opts.flush)) {\n throw new Error('Invalid flush flag: ' + opts.flush);\n }\n if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n throw new Error('Invalid flush flag: ' + opts.finishFlush);\n }\n this._flushFlag = opts.flush || binding$1.Z_NO_FLUSH;\n this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding$1.Z_FINISH;\n if (opts.chunkSize) {\n if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n throw new Error('Invalid chunk size: ' + opts.chunkSize);\n }\n }\n if (opts.windowBits) {\n if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n throw new Error('Invalid windowBits: ' + opts.windowBits);\n }\n }\n if (opts.level) {\n if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n throw new Error('Invalid compression level: ' + opts.level);\n }\n }\n if (opts.memLevel) {\n if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n throw new Error('Invalid memLevel: ' + opts.memLevel);\n }\n }\n if (opts.strategy) {\n if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new Error('Invalid strategy: ' + opts.strategy);\n }\n }\n if (opts.dictionary) {\n if (!Buffer.isBuffer(opts.dictionary)) {\n throw new Error('Invalid dictionary: it should be a Buffer instance');\n }\n }\n this._handle = new binding$1.Zlib(mode);\n var self = this;\n this._hadError = false;\n this._handle.onerror = function (message, errno) {\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n _close(self);\n self._hadError = true;\n var error = new Error(message);\n error.errno = errno;\n error.code = exports.codes[errno];\n self.emit('error', error);\n };\n var level = exports.Z_DEFAULT_COMPRESSION;\n if (typeof opts.level === 'number') level = opts.level;\n var strategy = exports.Z_DEFAULT_STRATEGY;\n if (typeof opts.strategy === 'number') strategy = opts.strategy;\n this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n this._buffer = Buffer.allocUnsafe(this._chunkSize);\n this._offset = 0;\n this._level = level;\n this._strategy = strategy;\n this.once('end', this.close);\n Object.defineProperty(this, '_closed', {\n get: function () {\n return !_this._handle;\n },\n configurable: true,\n enumerable: true\n });\n }\n util.inherits(Zlib, Transform);\n Zlib.prototype.params = function (level, strategy, callback) {\n if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n throw new RangeError('Invalid compression level: ' + level);\n }\n if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n throw new TypeError('Invalid strategy: ' + strategy);\n }\n if (this._level !== level || this._strategy !== strategy) {\n var self = this;\n this.flush(binding$1.Z_SYNC_FLUSH, function () {\n assert(self._handle, 'zlib binding closed');\n self._handle.params(level, strategy);\n if (!self._hadError) {\n self._level = level;\n self._strategy = strategy;\n if (callback) callback();\n }\n });\n } else {\n browser$1$1.nextTick(callback);\n }\n };\n Zlib.prototype.reset = function () {\n assert(this._handle, 'zlib binding closed');\n return this._handle.reset();\n };\n\n // This is the _flush function called by the transform class,\n // internally, when the last chunk has been written.\n Zlib.prototype._flush = function (callback) {\n this._transform(Buffer.alloc(0), '', callback);\n };\n Zlib.prototype.flush = function (kind, callback) {\n var _this2 = this;\n var ws = this._writableState;\n if (typeof kind === 'function' || kind === undefined && !callback) {\n callback = kind;\n kind = binding$1.Z_FULL_FLUSH;\n }\n if (ws.ended) {\n if (callback) browser$1$1.nextTick(callback);\n } else if (ws.ending) {\n if (callback) this.once('end', callback);\n } else if (ws.needDrain) {\n if (callback) {\n this.once('drain', function () {\n return _this2.flush(kind, callback);\n });\n }\n } else {\n this._flushFlag = kind;\n this.write(Buffer.alloc(0), '', callback);\n }\n };\n Zlib.prototype.close = function (callback) {\n _close(this, callback);\n browser$1$1.nextTick(emitCloseNT, this);\n };\n function _close(engine, callback) {\n if (callback) browser$1$1.nextTick(callback);\n\n // Caller may invoke .close after a zlib error (which will null _handle).\n if (!engine._handle) return;\n engine._handle.close();\n engine._handle = null;\n }\n function emitCloseNT(self) {\n self.emit('close');\n }\n Zlib.prototype._transform = function (chunk, encoding, cb) {\n var flushFlag;\n var ws = this._writableState;\n var ending = ws.ending || ws.ended;\n var last = ending && (!chunk || ws.length === chunk.length);\n if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n if (!this._handle) return cb(new Error('zlib binding closed'));\n\n // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag\n // (or whatever flag was provided using opts.finishFlush).\n // If it's explicitly flushing at some other time, then we use\n // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression\n // goodness.\n if (last) flushFlag = this._finishFlushFlag;else {\n flushFlag = this._flushFlag;\n // once we've flushed the last of the queue, stop flushing and\n // go back to the normal behavior.\n if (chunk.length >= ws.length) {\n this._flushFlag = this._opts.flush || binding$1.Z_NO_FLUSH;\n }\n }\n this._processChunk(chunk, flushFlag, cb);\n };\n Zlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n var availInBefore = chunk && chunk.length;\n var availOutBefore = this._chunkSize - this._offset;\n var inOff = 0;\n var self = this;\n var async = typeof cb === 'function';\n if (!async) {\n var buffers = [];\n var nread = 0;\n var error;\n this.on('error', function (er) {\n error = er;\n });\n assert(this._handle, 'zlib binding closed');\n do {\n var res = this._handle.writeSync(flushFlag, chunk,\n // in\n inOff,\n // in_off\n availInBefore,\n // in_len\n this._buffer,\n // out\n this._offset,\n //out_off\n availOutBefore); // out_len\n } while (!this._hadError && callback(res[0], res[1]));\n if (this._hadError) {\n throw error;\n }\n if (nread >= kMaxLength) {\n _close(this);\n throw new RangeError(kRangeErrorMessage);\n }\n var buf = Buffer.concat(buffers, nread);\n _close(this);\n return buf;\n }\n assert(this._handle, 'zlib binding closed');\n var req = this._handle.write(flushFlag, chunk,\n // in\n inOff,\n // in_off\n availInBefore,\n // in_len\n this._buffer,\n // out\n this._offset,\n //out_off\n availOutBefore); // out_len\n\n req.buffer = chunk;\n req.callback = callback;\n function callback(availInAfter, availOutAfter) {\n // When the callback is used in an async write, the callback's\n // context is the `req` object that was created. The req object\n // is === this._handle, and that's why it's important to null\n // out the values after they are done being used. `this._handle`\n // can stay in memory longer than the callback and buffer are needed.\n if (this) {\n this.buffer = null;\n this.callback = null;\n }\n if (self._hadError) return;\n var have = availOutBefore - availOutAfter;\n assert(have >= 0, 'have should not go down');\n if (have > 0) {\n var out = self._buffer.slice(self._offset, self._offset + have);\n self._offset += have;\n // serve some output to the consumer.\n if (async) {\n self.push(out);\n } else {\n buffers.push(out);\n nread += out.length;\n }\n }\n\n // exhausted the output buffer, or used all the input create a new one.\n if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n availOutBefore = self._chunkSize;\n self._offset = 0;\n self._buffer = Buffer.allocUnsafe(self._chunkSize);\n }\n if (availOutAfter === 0) {\n // Not actually done. Need to reprocess.\n // Also, update the availInBefore to the availInAfter value,\n // so that if we have to hit it a third (fourth, etc.) time,\n // it'll have the correct byte counts.\n inOff += availInBefore - availInAfter;\n availInBefore = availInAfter;\n if (!async) return true;\n var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n newReq.callback = callback; // this same function\n newReq.buffer = chunk;\n return;\n }\n if (!async) return false;\n\n // finished with the chunk.\n cb();\n }\n };\n util.inherits(Deflate, Zlib);\n util.inherits(Inflate, Zlib);\n util.inherits(Gzip, Zlib);\n util.inherits(Gunzip, Zlib);\n util.inherits(DeflateRaw, Zlib);\n util.inherits(InflateRaw, Zlib);\n util.inherits(Unzip, Zlib);\n})(lib);\nvar zlib = /*@__PURE__*/getDefaultExportFromCjs(lib);\n\nclass PDFReference extends stream.Writable {\n constructor(document, id, data) {\n super({\n decodeStrings: false\n });\n this.finalize = this.finalize.bind(this);\n this.document = document;\n this.id = id;\n if (data == null) {\n data = {};\n }\n this.data = data;\n this.gen = 0;\n this.deflate = null;\n this.compress = this.document.compress && !this.data.Filter;\n this.uncompressedLength = 0;\n this.chunks = [];\n }\n initDeflate() {\n this.data.Filter = 'FlateDecode';\n this.deflate = zlib.createDeflate();\n this.deflate.on('data', chunk => {\n this.chunks.push(chunk);\n return this.data.Length += chunk.length;\n });\n return this.deflate.on('end', this.finalize);\n }\n _write(chunk, encoding, callback) {\n if (!(chunk instanceof Uint8Array)) {\n chunk = Buffer$2.from(chunk + '\\n', 'binary');\n }\n this.uncompressedLength += chunk.length;\n if (this.data.Length == null) {\n this.data.Length = 0;\n }\n if (this.compress) {\n if (!this.deflate) {\n this.initDeflate();\n }\n this.deflate.write(chunk);\n } else {\n this.chunks.push(chunk);\n this.data.Length += chunk.length;\n }\n return callback();\n }\n end() {\n super.end(...arguments);\n if (this.deflate) {\n return this.deflate.end();\n }\n return this.finalize();\n }\n finalize() {\n this.offset = this.document._offset;\n this.document._write(this.id + \" \" + this.gen + \" obj\");\n this.document._write(PDFObject$1.convert(this.data));\n if (this.chunks.length) {\n this.document._write('stream');\n for (let chunk of Array.from(this.chunks)) {\n this.document._write(chunk);\n }\n this.chunks.length = 0; // free up memory\n this.document._write('\\nendstream');\n }\n this.document._write('endobj');\n return this.document._refEnd(this);\n }\n toString() {\n return this.id + \" \" + this.gen + \" R\";\n }\n}\n\n/*\nPDFTree - abstract base class for name and number tree objects\n*/\n\nclass PDFTree {\n constructor(options) {\n if (options === void 0) {\n options = {};\n }\n this._items = {};\n // disable /Limits output for this tree\n this.limits = typeof options.limits === 'boolean' ? options.limits : true;\n }\n add(key, val) {\n return this._items[key] = val;\n }\n get(key) {\n return this._items[key];\n }\n toString() {\n // Needs to be sorted by key\n const sortedKeys = Object.keys(this._items).sort((a, b) => this._compareKeys(a, b));\n const out = ['<<'];\n if (this.limits && sortedKeys.length > 1) {\n const first = sortedKeys[0],\n last = sortedKeys[sortedKeys.length - 1];\n out.push(\" /Limits \" + PDFObject$1.convert([this._dataForKey(first), this._dataForKey(last)]));\n }\n out.push(\" /\" + this._keysName() + \" [\");\n for (let key of sortedKeys) {\n out.push(\" \" + PDFObject$1.convert(this._dataForKey(key)) + \" \" + PDFObject$1.convert(this._items[key]));\n }\n out.push(']');\n out.push('>>');\n return out.join('\\n');\n }\n _compareKeys( /*a, b*/\n ) {\n throw new Error('Must be implemented by subclasses');\n }\n _keysName() {\n throw new Error('Must be implemented by subclasses');\n }\n _dataForKey( /*k*/\n ) {\n throw new Error('Must be implemented by subclasses');\n }\n}\n\n/*\nPDFNameTree - represents a name tree object\n*/\n\nclass PDFNameTree extends PDFTree {\n _compareKeys(a, b) {\n return a.localeCompare(b);\n }\n _keysName() {\n return 'Names';\n }\n _dataForKey(k) {\n return new String(k);\n }\n}\n\nconst escapableRe = /[\\n\\r\\t\\b\\f\\(\\)\\\\]/g;\nconst escapable = {\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\\\': '\\\\\\\\',\n '(': '\\\\(',\n ')': '\\\\)'\n};\nconst pad = (str, length) => (Array(length + 1).join('0') + str).slice(-length);\n\n// Convert little endian UTF-16 to big endian\nconst swapBytes = function (buff) {\n const l = buff.length;\n if (l & 0x01) {\n throw new Error('Buffer length must be even');\n } else {\n for (let i = 0, end = l - 1; i < end; i += 2) {\n const a = buff[i];\n buff[i] = buff[i + 1];\n buff[i + 1] = a;\n }\n }\n return buff;\n};\nclass PDFObject {\n static convert(object) {\n // String literals are converted to the PDF name type\n if (typeof object === 'string') {\n return \"/\" + object;\n }\n\n // String objects are converted to PDF strings (UTF-16)\n if (object instanceof String) {\n let string = object;\n // Detect if this is a unicode string\n let isUnicode = false;\n for (let i = 0, end = string.length; i < end; i++) {\n if (string.charCodeAt(i) > 0x7f) {\n isUnicode = true;\n break;\n }\n }\n\n // If so, encode it as big endian UTF-16\n if (isUnicode) {\n string = swapBytes(Buffer$2.from(\"\\uFEFF\" + string, 'utf16le')).toString('binary');\n }\n\n // Escape characters as required by the spec\n string = string.replace(escapableRe, c => escapable[c]);\n return \"(\" + string + \")\";\n\n // Buffers are converted to PDF hex strings\n }\n if (Buffer$2.isBuffer(object)) {\n return \"<\" + object.toString('hex') + \">\";\n }\n if (object instanceof PDFReference || object instanceof PDFNameTree) {\n return object.toString();\n }\n if (object instanceof Date) {\n return \"(D:\" + pad(object.getUTCFullYear(), 4) + pad(object.getUTCMonth() + 1, 2) + pad(object.getUTCDate(), 2) + pad(object.getUTCHours(), 2) + pad(object.getUTCMinutes(), 2) + pad(object.getUTCSeconds(), 2) + 'Z)';\n }\n if (Array.isArray(object)) {\n const items = Array.from(object).map(e => PDFObject.convert(e)).join(' ');\n return \"[\" + items + \"]\";\n }\n if ({}.toString.call(object) === '[object Object]') {\n const out = ['<<'];\n for (let key in object) {\n const val = object[key];\n out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n }\n out.push('>>');\n return out.join('\\n');\n }\n if (typeof object === 'number') {\n return PDFObject.number(object);\n }\n return \"\" + object;\n }\n static number(n) {\n if (n > -1e21 && n < 1e21) {\n return Math.round(n * 1e6) / 1e6;\n }\n throw new Error(\"unsupported number: \" + n);\n }\n}\nvar PDFObject$1 = PDFObject;\n\n/*\nPDFPage - represents a single page in the PDF document\nBy Devon Govett\n*/\n\nconst DEFAULT_MARGINS = {\n top: 72,\n left: 72,\n bottom: 72,\n right: 72\n};\nconst SIZES = {\n '4A0': [4767.87, 6740.79],\n '2A0': [3370.39, 4767.87],\n A0: [2383.94, 3370.39],\n A1: [1683.78, 2383.94],\n A2: [1190.55, 1683.78],\n A3: [841.89, 1190.55],\n A4: [595.28, 841.89],\n A5: [419.53, 595.28],\n A6: [297.64, 419.53],\n A7: [209.76, 297.64],\n A8: [147.4, 209.76],\n A9: [104.88, 147.4],\n A10: [73.7, 104.88],\n B0: [2834.65, 4008.19],\n B1: [2004.09, 2834.65],\n B2: [1417.32, 2004.09],\n B3: [1000.63, 1417.32],\n B4: [708.66, 1000.63],\n B5: [498.9, 708.66],\n B6: [354.33, 498.9],\n B7: [249.45, 354.33],\n B8: [175.75, 249.45],\n B9: [124.72, 175.75],\n B10: [87.87, 124.72],\n C0: [2599.37, 3676.54],\n C1: [1836.85, 2599.37],\n C2: [1298.27, 1836.85],\n C3: [918.43, 1298.27],\n C4: [649.13, 918.43],\n C5: [459.21, 649.13],\n C6: [323.15, 459.21],\n C7: [229.61, 323.15],\n C8: [161.57, 229.61],\n C9: [113.39, 161.57],\n C10: [79.37, 113.39],\n RA0: [2437.8, 3458.27],\n RA1: [1729.13, 2437.8],\n RA2: [1218.9, 1729.13],\n RA3: [864.57, 1218.9],\n RA4: [609.45, 864.57],\n SRA0: [2551.18, 3628.35],\n SRA1: [1814.17, 2551.18],\n SRA2: [1275.59, 1814.17],\n SRA3: [907.09, 1275.59],\n SRA4: [637.8, 907.09],\n EXECUTIVE: [521.86, 756.0],\n FOLIO: [612.0, 936.0],\n LEGAL: [612.0, 1008.0],\n LETTER: [612.0, 792.0],\n TABLOID: [792.0, 1224.0]\n};\nclass PDFPage {\n constructor(document, options) {\n if (options === void 0) {\n options = {};\n }\n this.document = document;\n this.size = options.size || 'letter';\n this.layout = options.layout || 'portrait';\n this.userUnit = options.userUnit || 1.0;\n\n // process margins\n if (typeof options.margin === 'number') {\n this.margins = {\n top: options.margin,\n left: options.margin,\n bottom: options.margin,\n right: options.margin\n };\n\n // default to 1 inch margins\n } else {\n this.margins = options.margins || DEFAULT_MARGINS;\n }\n\n // calculate page dimensions\n const dimensions = Array.isArray(this.size) ? this.size : SIZES[this.size.toUpperCase()];\n this.width = dimensions[this.layout === 'portrait' ? 0 : 1];\n this.height = dimensions[this.layout === 'portrait' ? 1 : 0];\n this.content = this.document.ref();\n\n // Initialize the Font, XObject, and ExtGState dictionaries\n this.resources = this.document.ref({\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI']\n });\n\n // The page dictionary\n this.dictionary = this.document.ref({\n Type: 'Page',\n Parent: this.document._root.data.Pages,\n MediaBox: [0, 0, this.width, this.height],\n Contents: this.content,\n Resources: this.resources,\n UserUnit: this.userUnit\n });\n this.markings = [];\n }\n\n // Lazily create these objects\n get fonts() {\n const data = this.resources.data;\n return data.Font != null ? data.Font : data.Font = {};\n }\n get xobjects() {\n const data = this.resources.data;\n return data.XObject != null ? data.XObject : data.XObject = {};\n }\n get ext_gstates() {\n const data = this.resources.data;\n return data.ExtGState != null ? data.ExtGState : data.ExtGState = {};\n }\n get patterns() {\n const data = this.resources.data;\n return data.Pattern != null ? data.Pattern : data.Pattern = {};\n }\n get colorSpaces() {\n const data = this.resources.data;\n return data.ColorSpace || (data.ColorSpace = {});\n }\n get annotations() {\n const data = this.dictionary.data;\n return data.Annots != null ? data.Annots : data.Annots = [];\n }\n get structParentTreeKey() {\n const data = this.dictionary.data;\n return data.StructParents != null ? data.StructParents : data.StructParents = this.document.createStructParentTreeNextKey();\n }\n maxY() {\n return this.height - this.margins.bottom;\n }\n write(chunk) {\n return this.content.write(chunk);\n }\n end() {\n this.dictionary.end();\n this.resources.end();\n return this.content.end();\n }\n}\n\nconst wordArrayToBuffer = wordArray => {\n const byteArray = [];\n for (let i = 0; i < wordArray.sigBytes; i++) {\n byteArray.push(wordArray.words[Math.floor(i / 4)] >> 8 * (3 - i % 4) & 0xff);\n }\n return Buffer$2.from(byteArray);\n};\nclass PDFSecurity {\n static generateFileID(info) {\n if (info === void 0) {\n info = {};\n }\n let infoStr = info.CreationDate.getTime() + \"\\n\";\n for (let key in info) {\n if (!info.hasOwnProperty(key)) continue;\n infoStr += key + \": \" + info[key].valueOf() + \"\\n\";\n }\n return wordArrayToBuffer(MD5(infoStr));\n }\n}\n\nconst {\n number: number$2\n} = PDFObject$1;\nlet PDFGradient$1 = class PDFGradient {\n constructor(doc) {\n this.doc = doc;\n this.stops = [];\n this.embedded = false;\n this.transform = [1, 0, 0, 1, 0, 0];\n }\n stop(pos, color, opacity) {\n if (opacity == null) {\n opacity = 1;\n }\n color = this.doc._normalizeColor(color);\n if (this.stops.length === 0) {\n if (color.length === 3) {\n this._colorSpace = 'DeviceRGB';\n } else if (color.length === 4) {\n this._colorSpace = 'DeviceCMYK';\n } else if (color.length === 1) {\n this._colorSpace = 'DeviceGray';\n } else {\n throw new Error('Unknown color space');\n }\n } else if (this._colorSpace === 'DeviceRGB' && color.length !== 3 || this._colorSpace === 'DeviceCMYK' && color.length !== 4 || this._colorSpace === 'DeviceGray' && color.length !== 1) {\n throw new Error('All gradient stops must use the same color space');\n }\n opacity = Math.max(0, Math.min(1, opacity));\n this.stops.push([pos, color, opacity]);\n return this;\n }\n setTransform(m11, m12, m21, m22, dx, dy) {\n this.transform = [m11, m12, m21, m22, dx, dy];\n return this;\n }\n embed(m) {\n let fn;\n const stopsLength = this.stops.length;\n if (stopsLength === 0) {\n return;\n }\n this.embedded = true;\n this.matrix = m;\n\n // if the last stop comes before 100%, add a copy at 100%\n const last = this.stops[stopsLength - 1];\n if (last[0] < 1) {\n this.stops.push([1, last[1], last[2]]);\n }\n const bounds = [];\n const encode = [];\n const stops = [];\n for (let i = 0; i < stopsLength - 1; i++) {\n encode.push(0, 1);\n if (i + 2 !== stopsLength) {\n bounds.push(this.stops[i + 1][0]);\n }\n fn = this.doc.ref({\n FunctionType: 2,\n Domain: [0, 1],\n C0: this.stops[i + 0][1],\n C1: this.stops[i + 1][1],\n N: 1\n });\n stops.push(fn);\n fn.end();\n }\n\n // if there are only two stops, we don't need a stitching function\n if (stopsLength === 1) {\n fn = stops[0];\n } else {\n fn = this.doc.ref({\n FunctionType: 3,\n // stitching function\n Domain: [0, 1],\n Functions: stops,\n Bounds: bounds,\n Encode: encode\n });\n fn.end();\n }\n this.id = \"Sh\" + ++this.doc._gradCount;\n const shader = this.shader(fn);\n shader.end();\n const pattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 2,\n Shading: shader,\n Matrix: this.matrix.map(number$2)\n });\n pattern.end();\n if (this.stops.some(stop => stop[2] < 1)) {\n let grad = this.opacityGradient();\n grad._colorSpace = 'DeviceGray';\n for (let stop of this.stops) {\n grad.stop(stop[0], [stop[2]]);\n }\n grad = grad.embed(this.matrix);\n const pageBBox = [0, 0, this.doc.page.width, this.doc.page.height];\n const form = this.doc.ref({\n Type: 'XObject',\n Subtype: 'Form',\n FormType: 1,\n BBox: pageBBox,\n Group: {\n Type: 'Group',\n S: 'Transparency',\n CS: 'DeviceGray'\n },\n Resources: {\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n Pattern: {\n Sh1: grad\n }\n }\n });\n form.write('/Pattern cs /Sh1 scn');\n form.end(pageBBox.join(' ') + \" re f\");\n const gstate = this.doc.ref({\n Type: 'ExtGState',\n SMask: {\n Type: 'Mask',\n S: 'Luminosity',\n G: form\n }\n });\n gstate.end();\n const opacityPattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 1,\n PaintType: 1,\n TilingType: 2,\n BBox: pageBBox,\n XStep: pageBBox[2],\n YStep: pageBBox[3],\n Resources: {\n ProcSet: ['PDF', 'Text', 'ImageB', 'ImageC', 'ImageI'],\n Pattern: {\n Sh1: pattern\n },\n ExtGState: {\n Gs1: gstate\n }\n }\n });\n opacityPattern.write('/Gs1 gs /Pattern cs /Sh1 scn');\n opacityPattern.end(pageBBox.join(' ') + \" re f\");\n this.doc.page.patterns[this.id] = opacityPattern;\n } else {\n this.doc.page.patterns[this.id] = pattern;\n }\n return pattern;\n }\n apply(stroke) {\n // apply gradient transform to existing document ctm\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\n const [m11, m12, m21, m22, dx, dy] = this.transform;\n const m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];\n if (!this.embedded || m.join(' ') !== this.matrix.join(' ')) {\n this.embed(m);\n }\n this.doc._setColorSpace('Pattern', stroke);\n const op = stroke ? 'SCN' : 'scn';\n return this.doc.addContent(\"/\" + this.id + \" \" + op);\n }\n};\nlet PDFLinearGradient$1 = class PDFLinearGradient extends PDFGradient$1 {\n constructor(doc, x1, y1, x2, y2) {\n super(doc);\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n }\n shader(fn) {\n return this.doc.ref({\n ShadingType: 2,\n ColorSpace: this._colorSpace,\n Coords: [this.x1, this.y1, this.x2, this.y2],\n Function: fn,\n Extend: [true, true]\n });\n }\n opacityGradient() {\n return new PDFLinearGradient(this.doc, this.x1, this.y1, this.x2, this.y2);\n }\n};\nlet PDFRadialGradient$1 = class PDFRadialGradient extends PDFGradient$1 {\n constructor(doc, x1, y1, r1, x2, y2, r2) {\n super(doc);\n this.doc = doc;\n this.x1 = x1;\n this.y1 = y1;\n this.r1 = r1;\n this.x2 = x2;\n this.y2 = y2;\n this.r2 = r2;\n }\n shader(fn) {\n return this.doc.ref({\n ShadingType: 3,\n ColorSpace: this._colorSpace,\n Coords: [this.x1, this.y1, this.r1, this.x2, this.y2, this.r2],\n Function: fn,\n Extend: [true, true]\n });\n }\n opacityGradient() {\n return new PDFRadialGradient(this.doc, this.x1, this.y1, this.r1, this.x2, this.y2, this.r2);\n }\n};\nvar Gradient = {\n PDFGradient: PDFGradient$1,\n PDFLinearGradient: PDFLinearGradient$1,\n PDFRadialGradient: PDFRadialGradient$1\n};\n\n/*\nPDF tiling pattern support. Uncolored only.\n */\n\nconst underlyingColorSpaces = ['DeviceCMYK', 'DeviceRGB'];\nlet PDFTilingPattern$1 = class PDFTilingPattern {\n constructor(doc, bBox, xStep, yStep, stream) {\n this.doc = doc;\n this.bBox = bBox;\n this.xStep = xStep;\n this.yStep = yStep;\n this.stream = stream;\n }\n createPattern() {\n // no resources needed for our current usage\n // required entry\n const resources = this.doc.ref();\n resources.end();\n // apply default transform matrix (flipped in the default doc._ctm)\n // see document.js & gradient.js\n const [m0, m1, m2, m3, m4, m5] = this.doc._ctm;\n const [m11, m12, m21, m22, dx, dy] = [1, 0, 0, 1, 0, 0];\n const m = [m0 * m11 + m2 * m12, m1 * m11 + m3 * m12, m0 * m21 + m2 * m22, m1 * m21 + m3 * m22, m0 * dx + m2 * dy + m4, m1 * dx + m3 * dy + m5];\n const pattern = this.doc.ref({\n Type: 'Pattern',\n PatternType: 1,\n // tiling\n PaintType: 2,\n // 1-colored, 2-uncolored\n TilingType: 2,\n // 2-no distortion\n BBox: this.bBox,\n XStep: this.xStep,\n YStep: this.yStep,\n Matrix: m.map(v => +v.toFixed(5)),\n Resources: resources\n });\n pattern.end(this.stream);\n return pattern;\n }\n embedPatternColorSpaces() {\n // map each pattern to an underlying color space\n // and embed on each page\n underlyingColorSpaces.forEach(csName => {\n const csId = this.getPatternColorSpaceId(csName);\n if (this.doc.page.colorSpaces[csId]) return;\n const cs = this.doc.ref(['Pattern', csName]);\n cs.end();\n this.doc.page.colorSpaces[csId] = cs;\n });\n }\n getPatternColorSpaceId(underlyingColorspace) {\n return \"CsP\" + underlyingColorspace;\n }\n embed() {\n if (!this.id) {\n this.doc._patternCount = this.doc._patternCount + 1;\n this.id = 'P' + this.doc._patternCount;\n this.pattern = this.createPattern();\n }\n\n // patterns are embedded in each page\n if (!this.doc.page.patterns[this.id]) {\n this.doc.page.patterns[this.id] = this.pattern;\n }\n }\n apply(stroke, patternColor) {\n // do any embedding/creating that might be needed\n this.embedPatternColorSpaces();\n this.embed();\n const normalizedColor = this.doc._normalizeColor(patternColor);\n if (!normalizedColor) throw Error(\"invalid pattern color. (value: \" + patternColor + \")\");\n\n // select one of the pattern color spaces\n const csId = this.getPatternColorSpaceId(this.doc._getColorSpace(normalizedColor));\n this.doc._setColorSpace(csId, stroke);\n\n // stroke/fill using the pattern and color (in the above underlying color space)\n const op = stroke ? 'SCN' : 'scn';\n return this.doc.addContent(normalizedColor.join(' ') + \" /\" + this.id + \" \" + op);\n }\n};\nvar pattern = {\n PDFTilingPattern: PDFTilingPattern$1\n};\n\nconst {\n PDFGradient,\n PDFLinearGradient,\n PDFRadialGradient\n} = Gradient;\nconst {\n PDFTilingPattern\n} = pattern;\nvar ColorMixin = {\n initColor() {\n // The opacity dictionaries\n this._opacityRegistry = {};\n this._opacityCount = 0;\n this._patternCount = 0;\n return this._gradCount = 0;\n },\n _normalizeColor(color) {\n if (typeof color === 'string') {\n if (color.charAt(0) === '#') {\n if (color.length === 4) {\n color = color.replace(/#([0-9A-F])([0-9A-F])([0-9A-F])/i, '#$1$1$2$2$3$3');\n }\n const hex = parseInt(color.slice(1), 16);\n color = [hex >> 16, hex >> 8 & 0xff, hex & 0xff];\n } else if (namedColors[color]) {\n color = namedColors[color];\n }\n }\n if (Array.isArray(color)) {\n // RGB\n if (color.length === 3) {\n color = color.map(part => part / 255);\n // CMYK\n } else if (color.length === 4) {\n color = color.map(part => part / 100);\n }\n return color;\n }\n return null;\n },\n _setColor(color, stroke) {\n if (color instanceof PDFGradient) {\n color.apply(stroke);\n return true;\n // see if tiling pattern, decode & apply it it\n } else if (Array.isArray(color) && color[0] instanceof PDFTilingPattern) {\n color[0].apply(stroke, color[1]);\n return true;\n }\n // any other case should be a normal color and not a pattern\n return this._setColorCore(color, stroke);\n },\n _setColorCore(color, stroke) {\n color = this._normalizeColor(color);\n if (!color) {\n return false;\n }\n const op = stroke ? 'SCN' : 'scn';\n const space = this._getColorSpace(color);\n this._setColorSpace(space, stroke);\n color = color.join(' ');\n this.addContent(color + \" \" + op);\n return true;\n },\n _setColorSpace(space, stroke) {\n const op = stroke ? 'CS' : 'cs';\n return this.addContent(\"/\" + space + \" \" + op);\n },\n _getColorSpace(color) {\n return color.length === 4 ? 'DeviceCMYK' : 'DeviceRGB';\n },\n fillColor(color, opacity) {\n const set = this._setColor(color, false);\n if (set) {\n this.fillOpacity(opacity);\n }\n\n // save this for text wrapper, which needs to reset\n // the fill color on new pages\n this._fillColor = [color, opacity];\n return this;\n },\n strokeColor(color, opacity) {\n const set = this._setColor(color, true);\n if (set) {\n this.strokeOpacity(opacity);\n }\n return this;\n },\n opacity(opacity) {\n this._doOpacity(opacity, opacity);\n return this;\n },\n fillOpacity(opacity) {\n this._doOpacity(opacity, null);\n return this;\n },\n strokeOpacity(opacity) {\n this._doOpacity(null, opacity);\n return this;\n },\n _doOpacity(fillOpacity, strokeOpacity) {\n let dictionary, name;\n if (fillOpacity == null && strokeOpacity == null) {\n return;\n }\n if (fillOpacity != null) {\n fillOpacity = Math.max(0, Math.min(1, fillOpacity));\n }\n if (strokeOpacity != null) {\n strokeOpacity = Math.max(0, Math.min(1, strokeOpacity));\n }\n const key = fillOpacity + \"_\" + strokeOpacity;\n if (this._opacityRegistry[key]) {\n [dictionary, name] = this._opacityRegistry[key];\n } else {\n dictionary = {\n Type: 'ExtGState'\n };\n if (fillOpacity != null) {\n dictionary.ca = fillOpacity;\n }\n if (strokeOpacity != null) {\n dictionary.CA = strokeOpacity;\n }\n dictionary = this.ref(dictionary);\n dictionary.end();\n const id = ++this._opacityCount;\n name = \"Gs\" + id;\n this._opacityRegistry[key] = [dictionary, name];\n }\n this.page.ext_gstates[name] = dictionary;\n return this.addContent(\"/\" + name + \" gs\");\n },\n linearGradient(x1, y1, x2, y2) {\n return new PDFLinearGradient(this, x1, y1, x2, y2);\n },\n radialGradient(x1, y1, r1, x2, y2, r2) {\n return new PDFRadialGradient(this, x1, y1, r1, x2, y2, r2);\n },\n pattern(bbox, xStep, yStep, stream) {\n return new PDFTilingPattern(this, bbox, xStep, yStep, stream);\n }\n};\nvar namedColors = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n grey: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50]\n};\n\n/* eslint-disable no-lonely-if */\nlet cx;\nlet cy;\nlet px;\nlet py;\nlet sx;\nlet sy;\ncx = cy = px = py = sx = sy = 0;\n\n// parseDataPath copy pasted from svgo\n// https://github.com/svg/svgo/blob/e4918ccdd1a2b5831defe0f00c1286744b479448/lib/path.js\n\n/**\n * @typedef {'M' | 'm' | 'Z' | 'z' | 'L' | 'l' | 'H' | 'h' | 'V' | 'v' | 'C' | 'c' | 'S' | 's' | 'Q' | 'q' | 'T' | 't' | 'A' | 'a'} PathDataCommand\n */\n\n/**\n * @typedef {Object} PathDataItem\n * @property {PathDataCommand} command\n * @property {number[]} args\n */\n\nconst argsCountPerCommand = {\n M: 2,\n m: 2,\n Z: 0,\n z: 0,\n L: 2,\n l: 2,\n H: 1,\n h: 1,\n V: 1,\n v: 1,\n C: 6,\n c: 6,\n S: 4,\n s: 4,\n Q: 4,\n q: 4,\n T: 2,\n t: 2,\n A: 7,\n a: 7\n};\n\n/**\n * @type {(c: string) => c is PathDataCommand}\n */\nconst isCommand = c => {\n return c in argsCountPerCommand;\n};\n\n/**\n * @type {(c: string) => boolean}\n */\nconst isWsp = c => {\n const codePoint = c.codePointAt(0);\n return codePoint === 0x20 || codePoint === 0x9 || codePoint === 0xd || codePoint === 0xa;\n};\n\n/**\n * @type {(c: string) => boolean}\n */\nconst isDigit = c => {\n const codePoint = c.codePointAt(0);\n if (codePoint == null) {\n return false;\n }\n return 48 <= codePoint && codePoint <= 57;\n};\n\n/**\n * @typedef {'none' | 'sign' | 'whole' | 'decimal_point' | 'decimal' | 'e' | 'exponent_sign' | 'exponent'} ReadNumberState\n */\n\n/**\n * @type {(string: string, cursor: number) => [number, number | null]}\n */\nconst readNumber = (string, cursor) => {\n let i = cursor;\n let value = '';\n let state = /** @type {ReadNumberState} */'none';\n for (; i < string.length; i += 1) {\n const c = string[i];\n if (c === '+' || c === '-') {\n if (state === 'none') {\n state = 'sign';\n value += c;\n continue;\n }\n if (state === 'e') {\n state = 'exponent_sign';\n value += c;\n continue;\n }\n }\n if (isDigit(c)) {\n if (state === 'none' || state === 'sign' || state === 'whole') {\n state = 'whole';\n value += c;\n continue;\n }\n if (state === 'decimal_point' || state === 'decimal') {\n state = 'decimal';\n value += c;\n continue;\n }\n if (state === 'e' || state === 'exponent_sign' || state === 'exponent') {\n state = 'exponent';\n value += c;\n continue;\n }\n }\n if (c === '.') {\n if (state === 'none' || state === 'sign' || state === 'whole') {\n state = 'decimal_point';\n value += c;\n continue;\n }\n }\n if (c === 'E' || c === 'e') {\n if (state === 'whole' || state === 'decimal_point' || state === 'decimal') {\n state = 'e';\n value += c;\n continue;\n }\n }\n break;\n }\n const number = Number.parseFloat(value);\n if (Number.isNaN(number)) {\n return [cursor, null];\n }\n // step back to delegate iteration to parent loop\n return [i - 1, number];\n};\n\n/**\n * @type {(string: string) => Array}\n */\nconst parsePathData = string => {\n /**\n * @type {Array}\n */\n const pathData = [];\n /**\n * @type {null | PathDataCommand}\n */\n let command = null;\n let args = /** @type {number[]} */[];\n let argsCount = 0;\n let canHaveComma = false;\n let hadComma = false;\n for (let i = 0; i < string.length; i += 1) {\n const c = string.charAt(i);\n if (isWsp(c)) {\n continue;\n }\n // allow comma only between arguments\n if (canHaveComma && c === ',') {\n if (hadComma) {\n break;\n }\n hadComma = true;\n continue;\n }\n if (isCommand(c)) {\n if (hadComma) {\n return pathData;\n }\n if (command == null) {\n // moveto should be leading command\n if (c !== 'M' && c !== 'm') {\n return pathData;\n }\n } else {\n // stop if previous command arguments are not flushed\n if (args.length !== 0) {\n return pathData;\n }\n }\n command = c;\n args = [];\n argsCount = argsCountPerCommand[command];\n canHaveComma = false;\n // flush command without arguments\n if (argsCount === 0) {\n pathData.push({\n command,\n args\n });\n }\n continue;\n }\n // avoid parsing arguments if no command detected\n if (command == null) {\n return pathData;\n }\n // read next argument\n let newCursor = i;\n let number = null;\n if (command === 'A' || command === 'a') {\n const position = args.length;\n if (position === 0 || position === 1) {\n // allow only positive number without sign as first two arguments\n if (c !== '+' && c !== '-') {\n [newCursor, number] = readNumber(string, i);\n }\n }\n if (position === 2 || position === 5 || position === 6) {\n [newCursor, number] = readNumber(string, i);\n }\n if (position === 3 || position === 4) {\n // read flags\n if (c === '0') {\n number = 0;\n }\n if (c === '1') {\n number = 1;\n }\n }\n } else {\n [newCursor, number] = readNumber(string, i);\n }\n if (number == null) {\n return pathData;\n }\n args.push(number);\n canHaveComma = true;\n hadComma = false;\n i = newCursor;\n // flush arguments when necessary count is reached\n if (args.length === argsCount) {\n pathData.push({\n command,\n args\n });\n // subsequent moveto coordinates are threated as implicit lineto commands\n if (command === 'M') {\n command = 'L';\n }\n if (command === 'm') {\n command = 'l';\n }\n args = [];\n }\n }\n return pathData;\n};\nconst apply = function (commands, doc) {\n // current point, control point, and subpath starting point\n cx = cy = px = py = sx = sy = 0;\n\n // run the commands\n for (let i = 0; i < commands.length; i++) {\n const {\n command,\n args\n } = commands[i];\n if (typeof runners[command] === 'function') {\n runners[command](doc, args);\n }\n }\n};\nconst runners = {\n M(doc, a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return doc.moveTo(cx, cy);\n },\n m(doc, a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return doc.moveTo(cx, cy);\n },\n C(doc, a) {\n cx = a[4];\n cy = a[5];\n px = a[2];\n py = a[3];\n return doc.bezierCurveTo(...a);\n },\n c(doc, a) {\n doc.bezierCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy);\n px = cx + a[2];\n py = cy + a[3];\n cx += a[4];\n return cy += a[5];\n },\n S(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n }\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\n px = a[0];\n py = a[1];\n cx = a[2];\n return cy = a[3];\n },\n s(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n }\n doc.bezierCurveTo(cx - (px - cx), cy - (py - cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n return cy += a[3];\n },\n Q(doc, a) {\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return doc.quadraticCurveTo(a[0], a[1], cx, cy);\n },\n q(doc, a) {\n doc.quadraticCurveTo(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n return cy += a[3];\n },\n T(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n doc.quadraticCurveTo(px, py, a[0], a[1]);\n px = cx - (px - cx);\n py = cy - (py - cy);\n cx = a[0];\n return cy = a[1];\n },\n t(doc, a) {\n if (px === null) {\n px = cx;\n py = cy;\n } else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n doc.quadraticCurveTo(px, py, cx + a[0], cy + a[1]);\n cx += a[0];\n return cy += a[1];\n },\n A(doc, a) {\n solveArc(doc, cx, cy, a);\n cx = a[5];\n return cy = a[6];\n },\n a(doc, a) {\n a[5] += cx;\n a[6] += cy;\n solveArc(doc, cx, cy, a);\n cx = a[5];\n return cy = a[6];\n },\n L(doc, a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n l(doc, a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n H(doc, a) {\n cx = a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n h(doc, a) {\n cx += a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n V(doc, a) {\n cy = a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n v(doc, a) {\n cy += a[0];\n px = py = null;\n return doc.lineTo(cx, cy);\n },\n Z(doc) {\n doc.closePath();\n cx = sx;\n return cy = sy;\n },\n z(doc) {\n doc.closePath();\n cx = sx;\n return cy = sy;\n }\n};\nconst solveArc = function (doc, x, y, coords) {\n const [rx, ry, rot, large, sweep, ex, ey] = coords;\n const segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\n for (let seg of segs) {\n const bez = segmentToBezier(...seg);\n doc.bezierCurveTo(...bez);\n }\n};\n\n// from Inkscape svgtopdf, thanks!\nconst arcToSegments = function (x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n const th = rotateX * (Math.PI / 180);\n const sin_th = Math.sin(th);\n const cos_th = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n px = cos_th * (ox - x) * 0.5 + sin_th * (oy - y) * 0.5;\n py = cos_th * (oy - y) * 0.5 - sin_th * (ox - x) * 0.5;\n let pl = px * px / (rx * rx) + py * py / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n const a00 = cos_th / rx;\n const a01 = sin_th / rx;\n const a10 = -sin_th / ry;\n const a11 = cos_th / ry;\n const x0 = a00 * ox + a01 * oy;\n const y0 = a10 * ox + a11 * oy;\n const x1 = a00 * x + a01 * y;\n const y1 = a10 * x + a11 * y;\n const d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n let sfactor_sq = 1 / d - 0.25;\n if (sfactor_sq < 0) {\n sfactor_sq = 0;\n }\n let sfactor = Math.sqrt(sfactor_sq);\n if (sweep === large) {\n sfactor = -sfactor;\n }\n const xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n const yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n const th0 = Math.atan2(y0 - yc, x0 - xc);\n const th1 = Math.atan2(y1 - yc, x1 - xc);\n let th_arc = th1 - th0;\n if (th_arc < 0 && sweep === 1) {\n th_arc += 2 * Math.PI;\n } else if (th_arc > 0 && sweep === 0) {\n th_arc -= 2 * Math.PI;\n }\n const segments = Math.ceil(Math.abs(th_arc / (Math.PI * 0.5 + 0.001)));\n const result = [];\n for (let i = 0; i < segments; i++) {\n const th2 = th0 + i * th_arc / segments;\n const th3 = th0 + (i + 1) * th_arc / segments;\n result[i] = [xc, yc, th2, th3, rx, ry, sin_th, cos_th];\n }\n return result;\n};\nconst segmentToBezier = function (cx, cy, th0, th1, rx, ry, sin_th, cos_th) {\n const a00 = cos_th * rx;\n const a01 = -sin_th * ry;\n const a10 = sin_th * rx;\n const a11 = cos_th * ry;\n const th_half = 0.5 * (th1 - th0);\n const t = 8 / 3 * Math.sin(th_half * 0.5) * Math.sin(th_half * 0.5) / Math.sin(th_half);\n const x1 = cx + Math.cos(th0) - t * Math.sin(th0);\n const y1 = cy + Math.sin(th0) + t * Math.cos(th0);\n const x3 = cx + Math.cos(th1);\n const y3 = cy + Math.sin(th1);\n const x2 = x3 + t * Math.sin(th1);\n const y2 = y3 - t * Math.cos(th1);\n return [a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, a00 * x3 + a01 * y3, a10 * x3 + a11 * y3];\n};\nclass SVGPath {\n static apply(doc, path) {\n const commands = parsePathData(path);\n apply(commands, doc);\n }\n}\n\nconst {\n number: number$1\n} = PDFObject$1;\n\n// This constant is used to approximate a symmetrical arc using a cubic\n// Bezier curve.\nconst KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\nvar VectorMixin = {\n initVector() {\n this._ctm = [1, 0, 0, 1, 0, 0]; // current transformation matrix\n return this._ctmStack = [];\n },\n save() {\n this._ctmStack.push(this._ctm.slice());\n // TODO: save/restore colorspace and styles so not setting it unnessesarily all the time?\n return this.addContent('q');\n },\n restore() {\n this._ctm = this._ctmStack.pop() || [1, 0, 0, 1, 0, 0];\n return this.addContent('Q');\n },\n closePath() {\n return this.addContent('h');\n },\n lineWidth(w) {\n return this.addContent(number$1(w) + \" w\");\n },\n _CAP_STYLES: {\n BUTT: 0,\n ROUND: 1,\n SQUARE: 2\n },\n lineCap(c) {\n if (typeof c === 'string') {\n c = this._CAP_STYLES[c.toUpperCase()];\n }\n return this.addContent(c + \" J\");\n },\n _JOIN_STYLES: {\n MITER: 0,\n ROUND: 1,\n BEVEL: 2\n },\n lineJoin(j) {\n if (typeof j === 'string') {\n j = this._JOIN_STYLES[j.toUpperCase()];\n }\n return this.addContent(j + \" j\");\n },\n miterLimit(m) {\n return this.addContent(number$1(m) + \" M\");\n },\n dash(length, options) {\n if (options === void 0) {\n options = {};\n }\n const originalLength = length;\n if (!Array.isArray(length)) {\n length = [length, options.space || length];\n }\n const valid = length.every(x => Number.isFinite(x) && x >= 0);\n if (!valid) {\n throw new Error(\"dash(\" + JSON.stringify(originalLength) + \", \" + JSON.stringify(options) + \") invalid, lengths must be numeric and greater than or equal to zero\");\n }\n length = length.map(number$1).join(' ');\n return this.addContent(\"[\" + length + \"] \" + number$1(options.phase || 0) + \" d\");\n },\n undash() {\n return this.addContent('[] 0 d');\n },\n moveTo(x, y) {\n return this.addContent(number$1(x) + \" \" + number$1(y) + \" m\");\n },\n lineTo(x, y) {\n return this.addContent(number$1(x) + \" \" + number$1(y) + \" l\");\n },\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n return this.addContent(number$1(cp1x) + \" \" + number$1(cp1y) + \" \" + number$1(cp2x) + \" \" + number$1(cp2y) + \" \" + number$1(x) + \" \" + number$1(y) + \" c\");\n },\n quadraticCurveTo(cpx, cpy, x, y) {\n return this.addContent(number$1(cpx) + \" \" + number$1(cpy) + \" \" + number$1(x) + \" \" + number$1(y) + \" v\");\n },\n rect(x, y, w, h) {\n return this.addContent(number$1(x) + \" \" + number$1(y) + \" \" + number$1(w) + \" \" + number$1(h) + \" re\");\n },\n roundedRect(x, y, w, h, r) {\n if (r == null) {\n r = 0;\n }\n r = Math.min(r, 0.5 * w, 0.5 * h);\n\n // amount to inset control points from corners (see `ellipse`)\n const c = r * (1.0 - KAPPA);\n this.moveTo(x + r, y);\n this.lineTo(x + w - r, y);\n this.bezierCurveTo(x + w - c, y, x + w, y + c, x + w, y + r);\n this.lineTo(x + w, y + h - r);\n this.bezierCurveTo(x + w, y + h - c, x + w - c, y + h, x + w - r, y + h);\n this.lineTo(x + r, y + h);\n this.bezierCurveTo(x + c, y + h, x, y + h - c, x, y + h - r);\n this.lineTo(x, y + r);\n this.bezierCurveTo(x, y + c, x + c, y, x + r, y);\n return this.closePath();\n },\n ellipse(x, y, r1, r2) {\n // based on http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas/2173084#2173084\n if (r2 == null) {\n r2 = r1;\n }\n x -= r1;\n y -= r2;\n const ox = r1 * KAPPA;\n const oy = r2 * KAPPA;\n const xe = x + r1 * 2;\n const ye = y + r2 * 2;\n const xm = x + r1;\n const ym = y + r2;\n this.moveTo(x, ym);\n this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);\n this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);\n this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);\n this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);\n return this.closePath();\n },\n circle(x, y, radius) {\n return this.ellipse(x, y, radius);\n },\n arc(x, y, radius, startAngle, endAngle, anticlockwise) {\n if (anticlockwise == null) {\n anticlockwise = false;\n }\n const TWO_PI = 2.0 * Math.PI;\n const HALF_PI = 0.5 * Math.PI;\n let deltaAng = endAngle - startAngle;\n if (Math.abs(deltaAng) > TWO_PI) {\n // draw only full circle if more than that is specified\n deltaAng = TWO_PI;\n } else if (deltaAng !== 0 && anticlockwise !== deltaAng < 0) {\n // necessary to flip direction of rendering\n const dir = anticlockwise ? -1 : 1;\n deltaAng = dir * TWO_PI + deltaAng;\n }\n const numSegs = Math.ceil(Math.abs(deltaAng) / HALF_PI);\n const segAng = deltaAng / numSegs;\n const handleLen = segAng / HALF_PI * KAPPA * radius;\n let curAng = startAngle;\n\n // component distances between anchor point and control point\n let deltaCx = -Math.sin(curAng) * handleLen;\n let deltaCy = Math.cos(curAng) * handleLen;\n\n // anchor point\n let ax = x + Math.cos(curAng) * radius;\n let ay = y + Math.sin(curAng) * radius;\n\n // calculate and render segments\n this.moveTo(ax, ay);\n for (let segIdx = 0; segIdx < numSegs; segIdx++) {\n // starting control point\n const cp1x = ax + deltaCx;\n const cp1y = ay + deltaCy;\n\n // step angle\n curAng += segAng;\n\n // next anchor point\n ax = x + Math.cos(curAng) * radius;\n ay = y + Math.sin(curAng) * radius;\n\n // next control point delta\n deltaCx = -Math.sin(curAng) * handleLen;\n deltaCy = Math.cos(curAng) * handleLen;\n\n // ending control point\n const cp2x = ax - deltaCx;\n const cp2y = ay - deltaCy;\n\n // render segment\n this.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, ax, ay);\n }\n return this;\n },\n polygon() {\n for (var _len = arguments.length, points = new Array(_len), _key = 0; _key < _len; _key++) {\n points[_key] = arguments[_key];\n }\n this.moveTo(...(points.shift() || []));\n for (let point of points) {\n this.lineTo(...(point || []));\n }\n return this.closePath();\n },\n path(path) {\n SVGPath.apply(this, path);\n return this;\n },\n _windingRule(rule) {\n if (/even-?odd/.test(rule)) {\n return '*';\n }\n return '';\n },\n fill(color, rule) {\n if (/(even-?odd)|(non-?zero)/.test(color)) {\n rule = color;\n color = null;\n }\n if (color) {\n this.fillColor(color);\n }\n return this.addContent(\"f\" + this._windingRule(rule));\n },\n stroke(color) {\n if (color) {\n this.strokeColor(color);\n }\n return this.addContent('S');\n },\n fillAndStroke(fillColor, strokeColor, rule) {\n if (strokeColor == null) {\n strokeColor = fillColor;\n }\n const isFillRule = /(even-?odd)|(non-?zero)/;\n if (isFillRule.test(fillColor)) {\n rule = fillColor;\n fillColor = null;\n }\n if (isFillRule.test(strokeColor)) {\n rule = strokeColor;\n strokeColor = fillColor;\n }\n if (fillColor) {\n this.fillColor(fillColor);\n this.strokeColor(strokeColor);\n }\n return this.addContent(\"B\" + this._windingRule(rule));\n },\n clip(rule) {\n return this.addContent(\"W\" + this._windingRule(rule) + \" n\");\n },\n transform(m11, m12, m21, m22, dx, dy) {\n // keep track of the current transformation matrix\n if (m11 === 1 && m12 === 0 && m21 === 0 && m22 === 1 && dx === 0 && dy === 0) {\n // Ignore identity transforms\n return this;\n }\n const m = this._ctm;\n const [m0, m1, m2, m3, m4, m5] = m;\n m[0] = m0 * m11 + m2 * m12;\n m[1] = m1 * m11 + m3 * m12;\n m[2] = m0 * m21 + m2 * m22;\n m[3] = m1 * m21 + m3 * m22;\n m[4] = m0 * dx + m2 * dy + m4;\n m[5] = m1 * dx + m3 * dy + m5;\n const values = [m11, m12, m21, m22, dx, dy].map(v => number$1(v)).join(' ');\n return this.addContent(values + \" cm\");\n },\n translate(x, y) {\n return this.transform(1, 0, 0, 1, x, y);\n },\n rotate(angle, options) {\n if (options === void 0) {\n options = {};\n }\n let y;\n const rad = angle * Math.PI / 180;\n const cos = Math.cos(rad);\n const sin = Math.sin(rad);\n let x = y = 0;\n if (options.origin != null) {\n [x, y] = options.origin;\n const x1 = x * cos - y * sin;\n const y1 = x * sin + y * cos;\n x -= x1;\n y -= y1;\n }\n return this.transform(cos, sin, -sin, cos, x, y);\n },\n scale(xFactor, yFactor, options) {\n if (options === void 0) {\n options = {};\n }\n let y;\n if (yFactor == null) {\n yFactor = xFactor;\n }\n if (typeof yFactor === 'object') {\n options = yFactor;\n yFactor = xFactor;\n }\n let x = y = 0;\n if (options.origin != null) {\n [x, y] = options.origin;\n x -= xFactor * x;\n y -= yFactor * y;\n }\n return this.transform(xFactor, 0, 0, yFactor, x, y);\n }\n};\n\nvar fs = {};\n\nconst range = (left, right, inclusive) => {\n let range = [];\n let ascending = left < right;\n let end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n};\n\n/* eslint-disable no-var */\n/* eslint-disable no-cond-assign */\n\nconst WIN_ANSI_MAP = {\n 402: 131,\n 8211: 150,\n 8212: 151,\n 8216: 145,\n 8217: 146,\n 8218: 130,\n 8220: 147,\n 8221: 148,\n 8222: 132,\n 8224: 134,\n 8225: 135,\n 8226: 149,\n 8230: 133,\n 8364: 128,\n 8240: 137,\n 8249: 139,\n 8250: 155,\n 710: 136,\n 8482: 153,\n 338: 140,\n 339: 156,\n 732: 152,\n 352: 138,\n 353: 154,\n 376: 159,\n 381: 142,\n 382: 158\n};\nconst characters = \".notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n.notdef .notdef .notdef .notdef\\n\\nspace exclam quotedbl numbersign\\ndollar percent ampersand quotesingle\\nparenleft parenright asterisk plus\\ncomma hyphen period slash\\nzero one two three\\nfour five six seven\\neight nine colon semicolon\\nless equal greater question\\n\\nat A B C\\nD E F G\\nH I J K\\nL M N O\\nP Q R S\\nT U V W\\nX Y Z bracketleft\\nbackslash bracketright asciicircum underscore\\n\\ngrave a b c\\nd e f g\\nh i j k\\nl m n o\\np q r s\\nt u v w\\nx y z braceleft\\nbar braceright asciitilde .notdef\\n\\nEuro .notdef quotesinglbase florin\\nquotedblbase ellipsis dagger daggerdbl\\ncircumflex perthousand Scaron guilsinglleft\\nOE .notdef Zcaron .notdef\\n.notdef quoteleft quoteright quotedblleft\\nquotedblright bullet endash emdash\\ntilde trademark scaron guilsinglright\\noe .notdef zcaron ydieresis\\n\\nspace exclamdown cent sterling\\ncurrency yen brokenbar section\\ndieresis copyright ordfeminine guillemotleft\\nlogicalnot hyphen registered macron\\ndegree plusminus twosuperior threesuperior\\nacute mu paragraph periodcentered\\ncedilla onesuperior ordmasculine guillemotright\\nonequarter onehalf threequarters questiondown\\n\\nAgrave Aacute Acircumflex Atilde\\nAdieresis Aring AE Ccedilla\\nEgrave Eacute Ecircumflex Edieresis\\nIgrave Iacute Icircumflex Idieresis\\nEth Ntilde Ograve Oacute\\nOcircumflex Otilde Odieresis multiply\\nOslash Ugrave Uacute Ucircumflex\\nUdieresis Yacute Thorn germandbls\\n\\nagrave aacute acircumflex atilde\\nadieresis aring ae ccedilla\\negrave eacute ecircumflex edieresis\\nigrave iacute icircumflex idieresis\\neth ntilde ograve oacute\\nocircumflex otilde odieresis divide\\noslash ugrave uacute ucircumflex\\nudieresis yacute thorn ydieresis\".split(/\\s+/);\nfunction parse(contents) {\n const obj = {\n attributes: {},\n glyphWidths: {},\n kernPairs: {}\n };\n let section = '';\n for (let line of contents.split('\\n')) {\n var match;\n var a;\n if (match = line.match(/^Start(\\w+)/)) {\n section = match[1];\n continue;\n } else if (match = line.match(/^End(\\w+)/)) {\n section = '';\n continue;\n }\n switch (section) {\n case 'FontMetrics':\n match = line.match(/(^\\w+)\\s+(.*)/);\n var key = match[1];\n var value = match[2];\n if (a = obj.attributes[key]) {\n if (!Array.isArray(a)) {\n a = obj.attributes[key] = [a];\n }\n a.push(value);\n } else {\n obj.attributes[key] = value;\n }\n break;\n case 'CharMetrics':\n if (!/^CH?\\s/.test(line)) {\n continue;\n }\n var name = line.match(/\\bN\\s+(\\.?\\w+)\\s*;/)[1];\n obj.glyphWidths[name] = +line.match(/\\bWX\\s+(\\d+)\\s*;/)[1];\n break;\n case 'KernPairs':\n match = line.match(/^KPX\\s+(\\.?\\w+)\\s+(\\.?\\w+)\\s+(-?\\d+)/);\n if (match) {\n obj.kernPairs[match[1] + match[2]] = parseInt(match[3]);\n }\n break;\n }\n }\n return obj;\n}\nclass AFMFont {\n static open(filename) {\n {\n throw new Error('AFMFont.open not available on browser build');\n }\n }\n static fromJson(json) {\n return new AFMFont(json);\n }\n constructor(contents) {\n if (typeof contents === 'string') {\n this.contents = contents;\n this.parse();\n } else {\n this.attributes = contents.attributes;\n this.glyphWidths = contents.glyphWidths;\n this.kernPairs = contents.kernPairs;\n }\n this.charWidths = range(0, 255, true).map(i => this.glyphWidths[characters[i]]);\n this.bbox = Array.from(this.attributes.FontBBox.split(/\\s+/)).map(e => +e);\n this.ascender = +(this.attributes.Ascender || 0);\n this.descender = +(this.attributes.Descender || 0);\n this.xHeight = +(this.attributes.XHeight || 0);\n this.capHeight = +(this.attributes.CapHeight || 0);\n this.lineGap = this.bbox[3] - this.bbox[1] - (this.ascender - this.descender);\n }\n parse() {\n const parsed = parse(this.contents);\n this.attributes = parsed.attributes;\n this.glyphWidths = parsed.glyphWidths;\n this.kernPairs = parsed.kernPairs;\n }\n encodeText(text) {\n const res = [];\n for (let i = 0, end = text.length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n let char = text.charCodeAt(i);\n char = WIN_ANSI_MAP[char] || char;\n res.push(char.toString(16));\n }\n return res;\n }\n glyphsForString(string) {\n const glyphs = [];\n for (let i = 0, end = string.length, asc = 0 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n const charCode = string.charCodeAt(i);\n glyphs.push(this.characterToGlyph(charCode));\n }\n return glyphs;\n }\n characterToGlyph(character) {\n return characters[WIN_ANSI_MAP[character] || character] || '.notdef';\n }\n widthOfGlyph(glyph) {\n return this.glyphWidths[glyph] || 0;\n }\n getKernPair(left, right) {\n return this.kernPairs[left + right] || 0;\n }\n advancesForGlyphs(glyphs) {\n const advances = [];\n for (let index = 0; index < glyphs.length; index++) {\n const left = glyphs[index];\n const right = glyphs[index + 1];\n advances.push(this.widthOfGlyph(left) + this.getKernPair(left, right));\n }\n return advances;\n }\n}\n\nvar attributes = [\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 12:43:52 1997\",\n\t\t\t\"UniqueID 43052\",\n\t\t\t\"VMusage 37169 48194\"\n\t\t],\n\t\tFontName: \"Helvetica-Bold\",\n\t\tFullName: \"Helvetica Bold\",\n\t\tFamilyName: \"Helvetica\",\n\t\tWeight: \"Bold\",\n\t\tItalicAngle: \"0\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-170 -228 1003 962 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"718\",\n\t\tXHeight: \"532\",\n\t\tAscender: \"718\",\n\t\tDescender: \"-207\",\n\t\tStdHW: \"118\",\n\t\tStdVW: \"140\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 12:45:12 1997\",\n\t\t\t\"UniqueID 43053\",\n\t\t\t\"VMusage 14482 68586\"\n\t\t],\n\t\tFontName: \"Helvetica-BoldOblique\",\n\t\tFullName: \"Helvetica Bold Oblique\",\n\t\tFamilyName: \"Helvetica\",\n\t\tWeight: \"Bold\",\n\t\tItalicAngle: \"-12\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-174 -228 1114 962\",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"718\",\n\t\tXHeight: \"532\",\n\t\tAscender: \"718\",\n\t\tDescender: \"-207\",\n\t\tStdHW: \"118\",\n\t\tStdVW: \"140\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 12:44:31 1997\",\n\t\t\t\"UniqueID 43055\",\n\t\t\t\"VMusage 14960 69346\"\n\t\t],\n\t\tFontName: \"Helvetica-Oblique\",\n\t\tFullName: \"Helvetica Oblique\",\n\t\tFamilyName: \"Helvetica\",\n\t\tWeight: \"Medium\",\n\t\tItalicAngle: \"-12\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-170 -225 1116 931 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"718\",\n\t\tXHeight: \"523\",\n\t\tAscender: \"718\",\n\t\tDescender: \"-207\",\n\t\tStdHW: \"76\",\n\t\tStdVW: \"88\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 12:38:23 1997\",\n\t\t\t\"UniqueID 43054\",\n\t\t\t\"VMusage 37069 48094\"\n\t\t],\n\t\tFontName: \"Helvetica\",\n\t\tFullName: \"Helvetica\",\n\t\tFamilyName: \"Helvetica\",\n\t\tWeight: \"Medium\",\n\t\tItalicAngle: \"0\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-166 -225 1000 931 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All Rights Reserved.Helvetica is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"718\",\n\t\tXHeight: \"523\",\n\t\tAscender: \"718\",\n\t\tDescender: \"-207\",\n\t\tStdHW: \"76\",\n\t\tStdVW: \"88\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 12:52:56 1997\",\n\t\t\t\"UniqueID 43065\",\n\t\t\t\"VMusage 41636 52661\"\n\t\t],\n\t\tFontName: \"Times-Bold\",\n\t\tFullName: \"Times Bold\",\n\t\tFamilyName: \"Times\",\n\t\tWeight: \"Bold\",\n\t\tItalicAngle: \"0\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-168 -218 1000 935 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"676\",\n\t\tXHeight: \"461\",\n\t\tAscender: \"683\",\n\t\tDescender: \"-217\",\n\t\tStdHW: \"44\",\n\t\tStdVW: \"139\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 13:04:06 1997\",\n\t\t\t\"UniqueID 43066\",\n\t\t\t\"VMusage 45874 56899\"\n\t\t],\n\t\tFontName: \"Times-BoldItalic\",\n\t\tFullName: \"Times Bold Italic\",\n\t\tFamilyName: \"Times\",\n\t\tWeight: \"Bold\",\n\t\tItalicAngle: \"-15\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-200 -218 996 921\",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"669\",\n\t\tXHeight: \"462\",\n\t\tAscender: \"683\",\n\t\tDescender: \"-217\",\n\t\tStdHW: \"42\",\n\t\tStdVW: \"121\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 12:56:55 1997\",\n\t\t\t\"UniqueID 43067\",\n\t\t\t\"VMusage 47727 58752\"\n\t\t],\n\t\tFontName: \"Times-Italic\",\n\t\tFullName: \"Times Italic\",\n\t\tFamilyName: \"Times\",\n\t\tWeight: \"Medium\",\n\t\tItalicAngle: \"-15.5\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-169 -217 1010 883 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"653\",\n\t\tXHeight: \"441\",\n\t\tAscender: \"683\",\n\t\tDescender: \"-217\",\n\t\tStdHW: \"32\",\n\t\tStdVW: \"76\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 12:49:17 1997\",\n\t\t\t\"UniqueID 43068\",\n\t\t\t\"VMusage 43909 54934\"\n\t\t],\n\t\tFontName: \"Times-Roman\",\n\t\tFullName: \"Times Roman\",\n\t\tFamilyName: \"Times\",\n\t\tWeight: \"Roman\",\n\t\tItalicAngle: \"0\",\n\t\tIsFixedPitch: \"false\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-168 -218 1000 898 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"002.000\",\n\t\tNotice: \"Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"662\",\n\t\tXHeight: \"450\",\n\t\tAscender: \"683\",\n\t\tDescender: \"-217\",\n\t\tStdHW: \"28\",\n\t\tStdVW: \"84\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Mon Jun 23 16:28:00 1997\",\n\t\t\t\"UniqueID 43048\",\n\t\t\t\"VMusage 41139 52164\"\n\t\t],\n\t\tFontName: \"Courier-Bold\",\n\t\tFullName: \"Courier Bold\",\n\t\tFamilyName: \"Courier\",\n\t\tWeight: \"Bold\",\n\t\tItalicAngle: \"0\",\n\t\tIsFixedPitch: \"true\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-113 -250 749 801 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"003.000\",\n\t\tNotice: \"Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"562\",\n\t\tXHeight: \"439\",\n\t\tAscender: \"629\",\n\t\tDescender: \"-157\",\n\t\tStdHW: \"84\",\n\t\tStdVW: \"106\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Mon Jun 23 16:28:46 1997\",\n\t\t\t\"UniqueID 43049\",\n\t\t\t\"VMusage 17529 79244\"\n\t\t],\n\t\tFontName: \"Courier-BoldOblique\",\n\t\tFullName: \"Courier Bold Oblique\",\n\t\tFamilyName: \"Courier\",\n\t\tWeight: \"Bold\",\n\t\tItalicAngle: \"-12\",\n\t\tIsFixedPitch: \"true\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-57 -250 869 801\",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"003.000\",\n\t\tNotice: \"Copyright (c) 1989, 1990, 1991, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"562\",\n\t\tXHeight: \"439\",\n\t\tAscender: \"629\",\n\t\tDescender: \"-157\",\n\t\tStdHW: \"84\",\n\t\tStdVW: \"106\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 17:37:52 1997\",\n\t\t\t\"UniqueID 43051\",\n\t\t\t\"VMusage 16248 75829\"\n\t\t],\n\t\tFontName: \"Courier-Oblique\",\n\t\tFullName: \"Courier Oblique\",\n\t\tFamilyName: \"Courier\",\n\t\tWeight: \"Medium\",\n\t\tItalicAngle: \"-12\",\n\t\tIsFixedPitch: \"true\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-27 -250 849 805 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"003.000\",\n\t\tNotice: \"Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"562\",\n\t\tXHeight: \"426\",\n\t\tAscender: \"629\",\n\t\tDescender: \"-157\",\n\t\tStdHW: \"51\",\n\t\tStdVW: \"51\"\n\t},\n\t{\n\t\tComment: [\n\t\t\t\"Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\t\t\"Creation Date: Thu May 1 17:27:09 1997\",\n\t\t\t\"UniqueID 43050\",\n\t\t\t\"VMusage 39754 50779\"\n\t\t],\n\t\tFontName: \"Courier\",\n\t\tFullName: \"Courier\",\n\t\tFamilyName: \"Courier\",\n\t\tWeight: \"Medium\",\n\t\tItalicAngle: \"0\",\n\t\tIsFixedPitch: \"true\",\n\t\tCharacterSet: \"ExtendedRoman\",\n\t\tFontBBox: \"-23 -250 715 805 \",\n\t\tUnderlinePosition: \"-100\",\n\t\tUnderlineThickness: \"50\",\n\t\tVersion: \"003.000\",\n\t\tNotice: \"Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\",\n\t\tEncodingScheme: \"AdobeStandardEncoding\",\n\t\tCapHeight: \"562\",\n\t\tXHeight: \"426\",\n\t\tAscender: \"629\",\n\t\tDescender: \"-157\",\n\t\tStdHW: \"51\",\n\t\tStdVW: \"51\"\n\t}\n];\nvar glyphWidths = {\n\tspace: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\texclam: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquotedbl: [\n\t\t474,\n\t\t474,\n\t\t355,\n\t\t355,\n\t\t555,\n\t\t555,\n\t\t420,\n\t\t408,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tnumbersign: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdollar: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tpercent: [\n\t\t889,\n\t\t889,\n\t\t889,\n\t\t889,\n\t\t1000,\n\t\t833,\n\t\t833,\n\t\t833,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tampersand: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t833,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquoteright: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tparenleft: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tparenright: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tasterisk: [\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tplus: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t570,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcomma: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\thyphen: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tperiod: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tslash: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tzero: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tone: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ttwo: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tthree: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tfour: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tfive: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tsix: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tseven: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\teight: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tnine: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcolon: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tsemicolon: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tless: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t570,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tequal: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t570,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tgreater: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t570,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquestion: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tat: [\n\t\t975,\n\t\t975,\n\t\t1015,\n\t\t1015,\n\t\t930,\n\t\t832,\n\t\t920,\n\t\t921,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tA: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tB: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tC: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tD: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tE: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tF: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tG: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tH: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tI: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tJ: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t389,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tK: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t778,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tL: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tM: [\n\t\t833,\n\t\t833,\n\t\t833,\n\t\t833,\n\t\t944,\n\t\t889,\n\t\t833,\n\t\t889,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tN: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tO: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tP: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tQ: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tR: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tS: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tT: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tU: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tV: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tW: [\n\t\t944,\n\t\t944,\n\t\t944,\n\t\t944,\n\t\t1000,\n\t\t889,\n\t\t833,\n\t\t944,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tX: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tY: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t611,\n\t\t556,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tZ: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbracketleft: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t333,\n\t\t389,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbackslash: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbracketright: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t333,\n\t\t389,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tasciicircum: [\n\t\t584,\n\t\t584,\n\t\t469,\n\t\t469,\n\t\t581,\n\t\t570,\n\t\t422,\n\t\t469,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tunderscore: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquoteleft: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ta: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tb: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tc: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\td: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\te: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tf: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tg: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\th: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ti: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tj: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tk: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t556,\n\t\t500,\n\t\t444,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tl: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tm: [\n\t\t889,\n\t\t889,\n\t\t833,\n\t\t833,\n\t\t833,\n\t\t778,\n\t\t722,\n\t\t778,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tn: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\to: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tp: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tq: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tr: [\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ts: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tt: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tu: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tv: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tw: [\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tx: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ty: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tz: [\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbraceleft: [\n\t\t389,\n\t\t389,\n\t\t334,\n\t\t334,\n\t\t394,\n\t\t348,\n\t\t400,\n\t\t480,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbar: [\n\t\t280,\n\t\t280,\n\t\t260,\n\t\t260,\n\t\t220,\n\t\t220,\n\t\t275,\n\t\t200,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbraceright: [\n\t\t389,\n\t\t389,\n\t\t334,\n\t\t334,\n\t\t394,\n\t\t348,\n\t\t400,\n\t\t480,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tasciitilde: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t520,\n\t\t570,\n\t\t541,\n\t\t541,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\texclamdown: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcent: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tsterling: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tfraction: [\n\t\t167,\n\t\t167,\n\t\t167,\n\t\t167,\n\t\t167,\n\t\t167,\n\t\t167,\n\t\t167,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tyen: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tflorin: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tsection: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcurrency: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquotesingle: [\n\t\t238,\n\t\t238,\n\t\t191,\n\t\t191,\n\t\t278,\n\t\t278,\n\t\t214,\n\t\t180,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquotedblleft: [\n\t\t500,\n\t\t500,\n\t\t333,\n\t\t333,\n\t\t500,\n\t\t500,\n\t\t556,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tguillemotleft: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tguilsinglleft: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tguilsinglright: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tfi: [\n\t\t611,\n\t\t611,\n\t\t500,\n\t\t500,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tfl: [\n\t\t611,\n\t\t611,\n\t\t500,\n\t\t500,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tendash: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdagger: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdaggerdbl: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tperiodcentered: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tparagraph: [\n\t\t556,\n\t\t556,\n\t\t537,\n\t\t537,\n\t\t540,\n\t\t500,\n\t\t523,\n\t\t453,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbullet: [\n\t\t350,\n\t\t350,\n\t\t350,\n\t\t350,\n\t\t350,\n\t\t350,\n\t\t350,\n\t\t350,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquotesinglbase: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquotedblbase: [\n\t\t500,\n\t\t500,\n\t\t333,\n\t\t333,\n\t\t500,\n\t\t500,\n\t\t556,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquotedblright: [\n\t\t500,\n\t\t500,\n\t\t333,\n\t\t333,\n\t\t500,\n\t\t500,\n\t\t556,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tguillemotright: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tellipsis: [\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t889,\n\t\t1000,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tperthousand: [\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tquestiondown: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tgrave: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tacute: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcircumflex: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ttilde: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tmacron: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbreve: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdotaccent: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdieresis: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tring: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcedilla: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\thungarumlaut: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\togonek: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcaron: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\temdash: [\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t889,\n\t\t1000,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAE: [\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t944,\n\t\t889,\n\t\t889,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tordfeminine: [\n\t\t370,\n\t\t370,\n\t\t370,\n\t\t370,\n\t\t300,\n\t\t266,\n\t\t276,\n\t\t276,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tLslash: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOslash: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOE: [\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t944,\n\t\t944,\n\t\t889,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tordmasculine: [\n\t\t365,\n\t\t365,\n\t\t365,\n\t\t365,\n\t\t330,\n\t\t300,\n\t\t310,\n\t\t310,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tae: [\n\t\t889,\n\t\t889,\n\t\t889,\n\t\t889,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdotlessi: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tlslash: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\toslash: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\toe: [\n\t\t944,\n\t\t944,\n\t\t944,\n\t\t944,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tgermandbls: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tIdieresis: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\teacute: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tabreve: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tuhungarumlaut: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tecaron: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tYdieresis: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t611,\n\t\t556,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdivide: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t570,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tYacute: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t611,\n\t\t556,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAcircumflex: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\taacute: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUcircumflex: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tyacute: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tscommaaccent: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tecircumflex: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUring: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUdieresis: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\taogonek: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUacute: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tuogonek: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEdieresis: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tDcroat: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcommaaccent: [\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t250,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcopyright: [\n\t\t737,\n\t\t737,\n\t\t737,\n\t\t737,\n\t\t747,\n\t\t747,\n\t\t760,\n\t\t760,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEmacron: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tccaron: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\taring: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tNcommaaccent: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tlacute: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tagrave: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tTcommaaccent: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tCacute: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tatilde: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEdotaccent: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tscaron: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tscedilla: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tiacute: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tlozenge: [\n\t\t494,\n\t\t494,\n\t\t471,\n\t\t471,\n\t\t494,\n\t\t494,\n\t\t471,\n\t\t471,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tRcaron: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tGcommaaccent: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tucircumflex: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tacircumflex: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAmacron: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\trcaron: [\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tccedilla: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tZdotaccent: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tThorn: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOmacron: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tRacute: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tSacute: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdcaron: [\n\t\t743,\n\t\t743,\n\t\t643,\n\t\t643,\n\t\t672,\n\t\t608,\n\t\t544,\n\t\t588,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUmacron: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\turing: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tthreesuperior: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t300,\n\t\t300,\n\t\t300,\n\t\t300,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOgrave: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAgrave: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAbreve: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tmultiply: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t570,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tuacute: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tTcaron: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tpartialdiff: [\n\t\t494,\n\t\t494,\n\t\t476,\n\t\t476,\n\t\t494,\n\t\t494,\n\t\t476,\n\t\t476,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tydieresis: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tNacute: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ticircumflex: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEcircumflex: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tadieresis: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tedieresis: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tcacute: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tnacute: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tumacron: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tNcaron: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tIacute: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tplusminus: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t570,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tbrokenbar: [\n\t\t280,\n\t\t280,\n\t\t260,\n\t\t260,\n\t\t220,\n\t\t220,\n\t\t275,\n\t\t200,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tregistered: [\n\t\t737,\n\t\t737,\n\t\t737,\n\t\t737,\n\t\t747,\n\t\t747,\n\t\t760,\n\t\t760,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tGbreve: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tIdotaccent: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tsummation: [\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEgrave: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tracute: [\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tomacron: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tZacute: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tZcaron: [\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tgreaterequal: [\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEth: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tCcedilla: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tlcommaaccent: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ttcaron: [\n\t\t389,\n\t\t389,\n\t\t317,\n\t\t317,\n\t\t416,\n\t\t366,\n\t\t300,\n\t\t326,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\teogonek: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUogonek: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAacute: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAdieresis: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tegrave: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tzacute: [\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tiogonek: [\n\t\t278,\n\t\t278,\n\t\t222,\n\t\t222,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOacute: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\toacute: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tamacron: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tsacute: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t389,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tidieresis: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOcircumflex: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUgrave: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tDelta: [\n\t\t612,\n\t\t612,\n\t\t612,\n\t\t612,\n\t\t612,\n\t\t612,\n\t\t612,\n\t\t612,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tthorn: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ttwosuperior: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t300,\n\t\t300,\n\t\t300,\n\t\t300,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOdieresis: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tmu: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t576,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tigrave: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tohungarumlaut: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEogonek: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdcroat: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tthreequarters: [\n\t\t834,\n\t\t834,\n\t\t834,\n\t\t834,\n\t\t750,\n\t\t750,\n\t\t750,\n\t\t750,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tScedilla: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tlcaron: [\n\t\t400,\n\t\t400,\n\t\t299,\n\t\t299,\n\t\t394,\n\t\t382,\n\t\t300,\n\t\t344,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tKcommaaccent: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t778,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tLacute: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ttrademark: [\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t1000,\n\t\t980,\n\t\t980,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tedotaccent: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tIgrave: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tImacron: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tLcaron: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tonehalf: [\n\t\t834,\n\t\t834,\n\t\t834,\n\t\t834,\n\t\t750,\n\t\t750,\n\t\t750,\n\t\t750,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tlessequal: [\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tocircumflex: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tntilde: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tUhungarumlaut: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEacute: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\temacron: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tgbreve: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tonequarter: [\n\t\t834,\n\t\t834,\n\t\t834,\n\t\t834,\n\t\t750,\n\t\t750,\n\t\t750,\n\t\t750,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tScaron: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tScommaaccent: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t556,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOhungarumlaut: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tdegree: [\n\t\t400,\n\t\t400,\n\t\t400,\n\t\t400,\n\t\t400,\n\t\t400,\n\t\t400,\n\t\t400,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tograve: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tCcaron: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tugrave: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tradical: [\n\t\t549,\n\t\t549,\n\t\t453,\n\t\t453,\n\t\t549,\n\t\t549,\n\t\t453,\n\t\t453,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tDcaron: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\trcommaaccent: [\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tNtilde: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\totilde: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tRcommaaccent: [\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t667,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tLcommaaccent: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t667,\n\t\t611,\n\t\t556,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAtilde: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAogonek: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tAring: [\n\t\t722,\n\t\t722,\n\t\t667,\n\t\t667,\n\t\t722,\n\t\t667,\n\t\t611,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tOtilde: [\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t778,\n\t\t722,\n\t\t722,\n\t\t722,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tzdotaccent: [\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEcaron: [\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t667,\n\t\t611,\n\t\t611,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tIogonek: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tkcommaaccent: [\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t556,\n\t\t500,\n\t\t444,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tminus: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t606,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tIcircumflex: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t389,\n\t\t389,\n\t\t333,\n\t\t333,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tncaron: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\ttcommaaccent: [\n\t\t333,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t333,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tlogicalnot: [\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t584,\n\t\t570,\n\t\t606,\n\t\t675,\n\t\t564,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\todieresis: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tudieresis: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tnotequal: [\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t549,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tgcommaaccent: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\teth: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tzcaron: [\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t444,\n\t\t389,\n\t\t389,\n\t\t444,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tncommaaccent: [\n\t\t611,\n\t\t611,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tonesuperior: [\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t333,\n\t\t300,\n\t\t300,\n\t\t300,\n\t\t300,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\timacron: [\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t278,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t],\n\tEuro: [\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t556,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t500,\n\t\t600,\n\t\t600,\n\t\t600,\n\t\t600\n\t]\n};\nvar kernPairs = {\n\tAC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tACacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tACcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tACcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tATcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tATcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAv: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAw: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAy: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAacuteC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAacuteCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAacuteCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAacuteCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAacuteG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAacuteGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAacuteGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAacuteO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAacuteT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAacuteTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAacuteTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAacuteU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAacuteV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAacuteW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAacuteY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAacuteYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAacuteYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAacuteu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacuteuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAacutev: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAacutew: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAacutey: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAacuteyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAacuteydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAbreveC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAbreveCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAbreveCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAbreveCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAbreveG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAbreveGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAbreveGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAbreveO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAbreveT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAbreveTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAbreveTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAbreveU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAbreveV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAbreveW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAbreveY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAbreveYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAbreveYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAbreveu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbreveuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAbrevev: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAbrevew: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAbrevey: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAbreveyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAbreveydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAcircumflexC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAcircumflexCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAcircumflexCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAcircumflexCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAcircumflexG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAcircumflexGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAcircumflexGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAcircumflexO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAcircumflexT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAcircumflexTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAcircumflexTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAcircumflexU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAcircumflexV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAcircumflexW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAcircumflexY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAcircumflexYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAcircumflexYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAcircumflexu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAcircumflexv: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAcircumflexw: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAcircumflexy: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAcircumflexyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAcircumflexydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAdieresisC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAdieresisCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAdieresisCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAdieresisCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAdieresisG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAdieresisGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAdieresisGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAdieresisO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAdieresisT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAdieresisTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAdieresisTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAdieresisU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAdieresisV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAdieresisW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAdieresisY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAdieresisYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAdieresisYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAdieresisu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAdieresisv: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAdieresisw: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAdieresisy: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAdieresisyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAdieresisydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAgraveC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAgraveCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAgraveCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAgraveCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAgraveG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAgraveGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAgraveGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAgraveO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAgraveT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAgraveTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAgraveTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAgraveU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAgraveV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAgraveW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAgraveY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAgraveYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAgraveYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAgraveu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgraveuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAgravev: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAgravew: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAgravey: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAgraveyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAgraveydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAmacronC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAmacronCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAmacronCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAmacronCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAmacronG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAmacronGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAmacronGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAmacronO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAmacronT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAmacronTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAmacronTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAmacronU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAmacronV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAmacronW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAmacronY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAmacronYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAmacronYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAmacronu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAmacronv: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAmacronw: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAmacrony: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAmacronyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAmacronydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAogonekC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAogonekCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAogonekCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAogonekCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAogonekG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAogonekGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAogonekGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAogonekO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAogonekT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAogonekTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAogonekTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAogonekU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAogonekV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAogonekW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAogonekY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAogonekYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAogonekYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAogoneku: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAogonekv: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAogonekw: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-52\n\t],\n\tAogoneky: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-34,\n\t\t-34,\n\t\t-55,\n\t\t-52\n\t],\n\tAogonekyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-34,\n\t\t-34,\n\t\t-55,\n\t\t-52\n\t],\n\tAogonekydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-34,\n\t\t-34,\n\t\t-55,\n\t\t-52\n\t],\n\tAringC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAringCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAringCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAringCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAringG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAringGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAringGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAringO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAringQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAringT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAringTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAringTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAringU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAringV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAringW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAringY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAringYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAringYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAringu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAringv: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAringw: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAringy: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAringyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAringydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAtildeC: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAtildeCacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAtildeCcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAtildeCcedilla: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-65,\n\t\t-30,\n\t\t-40\n\t],\n\tAtildeG: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAtildeGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAtildeGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-60,\n\t\t-35,\n\t\t-40\n\t],\n\tAtildeO: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeQ: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-45,\n\t\t-55,\n\t\t-40,\n\t\t-55\n\t],\n\tAtildeT: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAtildeTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAtildeTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-95,\n\t\t-55,\n\t\t-37,\n\t\t-111\n\t],\n\tAtildeU: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeUring: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55\n\t],\n\tAtildeV: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-145,\n\t\t-95,\n\t\t-105,\n\t\t-135\n\t],\n\tAtildeW: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-130,\n\t\t-100,\n\t\t-95,\n\t\t-90\n\t],\n\tAtildeY: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAtildeYacute: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAtildeYdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-100,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-55,\n\t\t-105\n\t],\n\tAtildeu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildeuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30,\n\t\t-20\n\t],\n\tAtildev: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-100,\n\t\t-74,\n\t\t-55,\n\t\t-74\n\t],\n\tAtildew: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-90,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAtildey: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAtildeyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tAtildeydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-92\n\t],\n\tBA: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAacute: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAbreve: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAcircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAdieresis: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAgrave: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAmacron: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAogonek: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAring: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBAtilde: [\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-35\n\t],\n\tBU: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUacute: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUcircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUdieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUgrave: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUhungarumlaut: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUmacron: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tBUring: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tDA: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAacute: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAbreve: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAogonek: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAring: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDAtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDV: [\n\t\t-40,\n\t\t-40,\n\t\t-70,\n\t\t-70,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-40\n\t],\n\tDW: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-30\n\t],\n\tDY: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDcomma: [\n\t\t-30,\n\t\t-30,\n\t\t-70,\n\t\t-70\n\t],\n\tDperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-70,\n\t\t-70,\n\t\t-20\n\t],\n\tDcaronA: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAacute: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAbreve: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAogonek: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAring: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronAtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcaronV: [\n\t\t-40,\n\t\t-40,\n\t\t-70,\n\t\t-70,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-40\n\t],\n\tDcaronW: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-30\n\t],\n\tDcaronY: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDcaronYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDcaronYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDcaroncomma: [\n\t\t-30,\n\t\t-30,\n\t\t-70,\n\t\t-70\n\t],\n\tDcaronperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-70,\n\t\t-70,\n\t\t-20\n\t],\n\tDcroatA: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAacute: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAbreve: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAogonek: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAring: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatAtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-35,\n\t\t-25,\n\t\t-35,\n\t\t-40\n\t],\n\tDcroatV: [\n\t\t-40,\n\t\t-40,\n\t\t-70,\n\t\t-70,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-40\n\t],\n\tDcroatW: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-30\n\t],\n\tDcroatY: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDcroatYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDcroatYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-90,\n\t\t-90,\n\t\t-40,\n\t\t-50,\n\t\t-40,\n\t\t-55\n\t],\n\tDcroatcomma: [\n\t\t-30,\n\t\t-30,\n\t\t-70,\n\t\t-70\n\t],\n\tDcroatperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-70,\n\t\t-70,\n\t\t-20\n\t],\n\tFA: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAacute: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAbreve: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAcircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAdieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAgrave: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAmacron: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAring: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFAtilde: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-90,\n\t\t-100,\n\t\t-115,\n\t\t-74\n\t],\n\tFa: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFaacute: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFabreve: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFacircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFadieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFagrave: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFamacron: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFaogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFaring: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFatilde: [\n\t\t-20,\n\t\t-20,\n\t\t-50,\n\t\t-50,\n\t\t-25,\n\t\t-95,\n\t\t-75,\n\t\t-15\n\t],\n\tFcomma: [\n\t\t-100,\n\t\t-100,\n\t\t-150,\n\t\t-150,\n\t\t-92,\n\t\t-129,\n\t\t-135,\n\t\t-80\n\t],\n\tFperiod: [\n\t\t-100,\n\t\t-100,\n\t\t-150,\n\t\t-150,\n\t\t-110,\n\t\t-129,\n\t\t-135,\n\t\t-80\n\t],\n\tJA: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAbreve: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAring: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJAtilde: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-25,\n\t\t-40,\n\t\t-60\n\t],\n\tJcomma: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t-25\n\t],\n\tJperiod: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-10,\n\t\t-25\n\t],\n\tJu: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJuacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJucircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJudieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJugrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJuhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJumacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJuogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJuring: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tKO: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOacute: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOcircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOdieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOgrave: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOmacron: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOslash: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKOtilde: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKe: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKeacute: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKecaron: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKecircumflex: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKedieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKedotaccent: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKegrave: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKemacron: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKeogonek: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKo: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKoacute: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKocircumflex: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKodieresis: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKograve: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKohungarumlaut: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKomacron: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKoslash: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKotilde: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKuring: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKy: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-45,\n\t\t-20,\n\t\t-40,\n\t\t-25\n\t],\n\tKyacute: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-45,\n\t\t-20,\n\t\t-40,\n\t\t-25\n\t],\n\tKydieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-45,\n\t\t-20,\n\t\t-40,\n\t\t-25\n\t],\n\tKcommaaccentO: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOacute: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOcircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOdieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOgrave: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOmacron: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOslash: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccentOtilde: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-30\n\t],\n\tKcommaaccente: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccenteacute: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccentecaron: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccentecircumflex: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccentedieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccentedotaccent: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccentegrave: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccentemacron: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccenteogonek: [\n\t\t-15,\n\t\t-15,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-35,\n\t\t-25\n\t],\n\tKcommaaccento: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentoacute: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentocircumflex: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentodieresis: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentograve: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentohungarumlaut: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentomacron: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentoslash: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentotilde: [\n\t\t-35,\n\t\t-35,\n\t\t-40,\n\t\t-40,\n\t\t-25,\n\t\t-25,\n\t\t-40,\n\t\t-35\n\t],\n\tKcommaaccentu: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccentuacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccentucircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccentudieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccentugrave: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccentuhungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccentumacron: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccentuogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccenturing: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-20,\n\t\t-40,\n\t\t-15\n\t],\n\tKcommaaccenty: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-45,\n\t\t-20,\n\t\t-40,\n\t\t-25\n\t],\n\tKcommaaccentyacute: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-45,\n\t\t-20,\n\t\t-40,\n\t\t-25\n\t],\n\tKcommaaccentydieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-45,\n\t\t-20,\n\t\t-40,\n\t\t-25\n\t],\n\tLT: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLV: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-100\n\t],\n\tLW: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-74\n\t],\n\tLY: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLYacute: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLYdieresis: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLquotedblright: [\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-20\n\t],\n\tLquoteright: [\n\t\t-140,\n\t\t-140,\n\t\t-160,\n\t\t-160,\n\t\t-110,\n\t\t-55,\n\t\t-37,\n\t\t-92\n\t],\n\tLy: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLacuteT: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLacuteTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLacuteTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLacuteV: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-100\n\t],\n\tLacuteW: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-74\n\t],\n\tLacuteY: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLacuteYacute: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLacuteYdieresis: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLacutequotedblright: [\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-20\n\t],\n\tLacutequoteright: [\n\t\t-140,\n\t\t-140,\n\t\t-160,\n\t\t-160,\n\t\t-110,\n\t\t-55,\n\t\t-37,\n\t\t-92\n\t],\n\tLacutey: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLacuteyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLacuteydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLcommaaccentT: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLcommaaccentTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLcommaaccentTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLcommaaccentV: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-100\n\t],\n\tLcommaaccentW: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-74\n\t],\n\tLcommaaccentY: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLcommaaccentYacute: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLcommaaccentYdieresis: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLcommaaccentquotedblright: [\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-20\n\t],\n\tLcommaaccentquoteright: [\n\t\t-140,\n\t\t-140,\n\t\t-160,\n\t\t-160,\n\t\t-110,\n\t\t-55,\n\t\t-37,\n\t\t-92\n\t],\n\tLcommaaccenty: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLcommaaccentyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLcommaaccentydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLslashT: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLslashTcaron: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLslashTcommaaccent: [\n\t\t-90,\n\t\t-90,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-18,\n\t\t-20,\n\t\t-92\n\t],\n\tLslashV: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-100\n\t],\n\tLslashW: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-74\n\t],\n\tLslashY: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLslashYacute: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLslashYdieresis: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-37,\n\t\t-20,\n\t\t-100\n\t],\n\tLslashquotedblright: [\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-140,\n\t\t-20\n\t],\n\tLslashquoteright: [\n\t\t-140,\n\t\t-140,\n\t\t-160,\n\t\t-160,\n\t\t-110,\n\t\t-55,\n\t\t-37,\n\t\t-92\n\t],\n\tLslashy: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLslashyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tLslashydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-55,\n\t\t-37,\n\t\t-30,\n\t\t-55\n\t],\n\tOA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOcomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOacuteA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOacuteT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOacuteTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOacuteTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOacuteV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOacuteW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOacuteX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOacuteY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOacuteYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOacuteYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOacutecomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOacuteperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOcircumflexA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOcircumflexT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOcircumflexTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOcircumflexTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOcircumflexV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOcircumflexW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOcircumflexX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOcircumflexY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOcircumflexYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOcircumflexYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOcircumflexcomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOcircumflexperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOdieresisA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOdieresisT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOdieresisTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOdieresisTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOdieresisV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOdieresisW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOdieresisX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOdieresisY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOdieresisYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOdieresisYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOdieresiscomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOdieresisperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOgraveA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOgraveT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOgraveTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOgraveTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOgraveV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOgraveW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOgraveX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOgraveY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOgraveYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOgraveYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOgravecomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOgraveperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOhungarumlautA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOhungarumlautT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOhungarumlautTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOhungarumlautTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOhungarumlautV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOhungarumlautW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOhungarumlautX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOhungarumlautY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOhungarumlautYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOhungarumlautYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOhungarumlautcomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOhungarumlautperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOmacronA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOmacronT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOmacronTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOmacronTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOmacronV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOmacronW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOmacronX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOmacronY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOmacronYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOmacronYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOmacroncomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOmacronperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOslashA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOslashT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOslashTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOslashTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOslashV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOslashW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOslashX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOslashY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOslashYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOslashYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOslashcomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOslashperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOtildeA: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAring: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-55,\n\t\t-35\n\t],\n\tOtildeT: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOtildeTcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOtildeTcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOtildeV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOtildeW: [\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35\n\t],\n\tOtildeX: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOtildeY: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOtildeYacute: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOtildeYdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-70,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50\n\t],\n\tOtildecomma: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tOtildeperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tPA: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAacute: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAbreve: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAcircumflex: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAdieresis: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAgrave: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAmacron: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAogonek: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAring: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPAtilde: [\n\t\t-100,\n\t\t-100,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-85,\n\t\t-90,\n\t\t-92\n\t],\n\tPa: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPaacute: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPabreve: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPacircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPadieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPagrave: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPamacron: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPaogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tParing: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPatilde: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-10,\n\t\t-40,\n\t\t-80,\n\t\t-15\n\t],\n\tPcomma: [\n\t\t-120,\n\t\t-120,\n\t\t-180,\n\t\t-180,\n\t\t-92,\n\t\t-129,\n\t\t-135,\n\t\t-111\n\t],\n\tPe: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPeacute: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPecaron: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPecircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPedieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPedotaccent: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPegrave: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPemacron: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPeogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-50,\n\t\t-80\n\t],\n\tPo: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPoacute: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPocircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPodieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPograve: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPohungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPomacron: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPoslash: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPotilde: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-55,\n\t\t-80\n\t],\n\tPperiod: [\n\t\t-120,\n\t\t-120,\n\t\t-180,\n\t\t-180,\n\t\t-110,\n\t\t-129,\n\t\t-135,\n\t\t-111\n\t],\n\tQU: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUacute: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUcircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUdieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUgrave: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUhungarumlaut: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUmacron: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQUring: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tQcomma: [\n\t\t20,\n\t\t20\n\t],\n\tQperiod: [\n\t\t20,\n\t\t20,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tRO: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROslash: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tROtilde: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRT: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRTcaron: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRTcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRU: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUacute: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRUring: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55,\n\t\t-18,\n\t\t-18,\n\t\t-80\n\t],\n\tRW: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-55\n\t],\n\tRY: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRYacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRYdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRacuteO: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOslash: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteOtilde: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteT: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRacuteTcaron: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRacuteTcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRacuteU: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUacute: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteUring: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRacuteV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55,\n\t\t-18,\n\t\t-18,\n\t\t-80\n\t],\n\tRacuteW: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-55\n\t],\n\tRacuteY: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRacuteYacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRacuteYdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRcaronO: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOslash: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronOtilde: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronT: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRcaronTcaron: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRcaronTcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRcaronU: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUacute: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronUring: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcaronV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55,\n\t\t-18,\n\t\t-18,\n\t\t-80\n\t],\n\tRcaronW: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-55\n\t],\n\tRcaronY: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRcaronYacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRcaronYdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRcommaaccentO: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOslash: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentOtilde: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentT: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRcommaaccentTcaron: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRcommaaccentTcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-30,\n\t\t0,\n\t\t-60\n\t],\n\tRcommaaccentU: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUacute: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentUring: [\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tRcommaaccentV: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-55,\n\t\t-18,\n\t\t-18,\n\t\t-80\n\t],\n\tRcommaaccentW: [\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-30,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-55\n\t],\n\tRcommaaccentY: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRcommaaccentYacute: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tRcommaaccentYdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-50,\n\t\t-35,\n\t\t-18,\n\t\t-18,\n\t\t-65\n\t],\n\tTA: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAacute: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAbreve: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAcircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAdieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAgrave: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAmacron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAring: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTAtilde: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTO: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTa: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTaacute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTabreve: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTacircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTadieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTagrave: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTamacron: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTaogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTaring: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTatilde: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcolon: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-50\n\t],\n\tTcomma: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-92,\n\t\t-74,\n\t\t-74\n\t],\n\tTe: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTeacute: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTecaron: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTecircumflex: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-52,\n\t\t-70\n\t],\n\tTedieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-30\n\t],\n\tTedotaccent: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTegrave: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-70\n\t],\n\tTemacron: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-30\n\t],\n\tTeogonek: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tThyphen: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-74,\n\t\t-92\n\t],\n\tTo: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tToacute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTocircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTodieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTograve: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTohungarumlaut: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTomacron: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tToslash: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTotilde: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTperiod: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-92,\n\t\t-74,\n\t\t-74\n\t],\n\tTr: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTracute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTrcommaaccent: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTsemicolon: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-74,\n\t\t-74,\n\t\t-65,\n\t\t-55\n\t],\n\tTu: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTuacute: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTucircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTudieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTugrave: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTuhungarumlaut: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTumacron: [\n\t\t-90,\n\t\t-90,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTuogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTuring: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTw: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTy: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-34,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTyacute: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-34,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTydieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-34,\n\t\t-37,\n\t\t-34,\n\t\t-80\n\t],\n\tTcaronA: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAacute: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAbreve: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAcircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAdieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAgrave: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAmacron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAring: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronAtilde: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcaronO: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcaronOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcarona: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronaacute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronabreve: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronacircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronadieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcaronagrave: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcaronamacron: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcaronaogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronaring: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronatilde: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcaroncolon: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-50\n\t],\n\tTcaroncomma: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-92,\n\t\t-74,\n\t\t-74\n\t],\n\tTcarone: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcaroneacute: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcaronecaron: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcaronecircumflex: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-52,\n\t\t-30\n\t],\n\tTcaronedieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-30\n\t],\n\tTcaronedotaccent: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcaronegrave: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-70\n\t],\n\tTcaronemacron: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-30\n\t],\n\tTcaroneogonek: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcaronhyphen: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-74,\n\t\t-92\n\t],\n\tTcarono: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronoacute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronocircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronodieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronograve: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronohungarumlaut: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronomacron: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronoslash: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronotilde: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcaronperiod: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-92,\n\t\t-74,\n\t\t-74\n\t],\n\tTcaronr: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcaronracute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcaronrcommaaccent: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcaronsemicolon: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-74,\n\t\t-74,\n\t\t-65,\n\t\t-55\n\t],\n\tTcaronu: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronuacute: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronucircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronudieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronugrave: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronuhungarumlaut: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronumacron: [\n\t\t-90,\n\t\t-90,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronuogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronuring: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcaronw: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTcarony: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-34,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTcaronyacute: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-34,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTcaronydieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-34,\n\t\t-37,\n\t\t-34,\n\t\t-80\n\t],\n\tTcommaaccentA: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAacute: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAbreve: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAcircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAdieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAgrave: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAmacron: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAring: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentAtilde: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-55,\n\t\t-50,\n\t\t-93\n\t],\n\tTcommaaccentO: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOacute: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOcircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOdieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOgrave: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOhungarumlaut: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOmacron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOslash: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccentOtilde: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-18,\n\t\t-18,\n\t\t-18,\n\t\t-18\n\t],\n\tTcommaaccenta: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentaacute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentabreve: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentacircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentadieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcommaaccentagrave: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcommaaccentamacron: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcommaaccentaogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentaring: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentatilde: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-92,\n\t\t-92,\n\t\t-40\n\t],\n\tTcommaaccentcolon: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-74,\n\t\t-74,\n\t\t-55,\n\t\t-50\n\t],\n\tTcommaaccentcomma: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-92,\n\t\t-74,\n\t\t-74\n\t],\n\tTcommaaccente: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcommaaccenteacute: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcommaaccentecaron: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcommaaccentecircumflex: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-52,\n\t\t-30\n\t],\n\tTcommaaccentedieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-30\n\t],\n\tTcommaaccentedotaccent: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcommaaccentegrave: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-30\n\t],\n\tTcommaaccentemacron: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-52,\n\t\t-52,\n\t\t-52,\n\t\t-70\n\t],\n\tTcommaaccenteogonek: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-70\n\t],\n\tTcommaaccenthyphen: [\n\t\t-120,\n\t\t-120,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-74,\n\t\t-92\n\t],\n\tTcommaaccento: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentoacute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentocircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentodieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentograve: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentohungarumlaut: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentomacron: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentoslash: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentotilde: [\n\t\t-80,\n\t\t-80,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-95,\n\t\t-92,\n\t\t-80\n\t],\n\tTcommaaccentperiod: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-92,\n\t\t-74,\n\t\t-74\n\t],\n\tTcommaaccentr: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcommaaccentracute: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcommaaccentrcommaaccent: [\n\t\t-80,\n\t\t-80,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcommaaccentsemicolon: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-74,\n\t\t-74,\n\t\t-65,\n\t\t-55\n\t],\n\tTcommaaccentu: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentuacute: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentucircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentudieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentugrave: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentuhungarumlaut: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentumacron: [\n\t\t-90,\n\t\t-90,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentuogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccenturing: [\n\t\t-90,\n\t\t-90,\n\t\t-120,\n\t\t-120,\n\t\t-92,\n\t\t-37,\n\t\t-55,\n\t\t-45\n\t],\n\tTcommaaccentw: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTcommaaccenty: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-34,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTcommaaccentyacute: [\n\t\t-60,\n\t\t-60,\n\t\t-120,\n\t\t-120,\n\t\t-34,\n\t\t-37,\n\t\t-74,\n\t\t-80\n\t],\n\tTcommaaccentydieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-34,\n\t\t-37,\n\t\t-34,\n\t\t-80\n\t],\n\tUA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUacuteA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacuteAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUacutecomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUacuteperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUcircumflexA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUcircumflexcomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUcircumflexperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUdieresisA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresisAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUdieresiscomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUdieresisperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUgraveA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgraveAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUgravecomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUgraveperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUhungarumlautA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUhungarumlautcomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUhungarumlautperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUmacronA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacronAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUmacroncomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUmacronperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUogonekA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUogonekcomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUogonekperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUringA: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAring: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringAtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-45,\n\t\t-40,\n\t\t-40\n\t],\n\tUringcomma: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tUringperiod: [\n\t\t-30,\n\t\t-30,\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t0,\n\t\t-25\n\t],\n\tVA: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAacute: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAbreve: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAcircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAdieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAgrave: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAmacron: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAring: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVAtilde: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-135,\n\t\t-85,\n\t\t-60,\n\t\t-135\n\t],\n\tVG: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\tVGbreve: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\tVGcommaaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\tVO: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOacute: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOcircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOdieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOgrave: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOhungarumlaut: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOmacron: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOslash: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVOtilde: [\n\t\t-50,\n\t\t-50,\n\t\t-40,\n\t\t-40,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-40\n\t],\n\tVa: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVaacute: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVabreve: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVacircumflex: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-71\n\t],\n\tVadieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-71\n\t],\n\tVagrave: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-71\n\t],\n\tVamacron: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-71\n\t],\n\tVaogonek: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVaring: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVatilde: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-111,\n\t\t-111,\n\t\t-71\n\t],\n\tVcolon: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-92,\n\t\t-74,\n\t\t-65,\n\t\t-74\n\t],\n\tVcomma: [\n\t\t-120,\n\t\t-120,\n\t\t-125,\n\t\t-125,\n\t\t-129,\n\t\t-129,\n\t\t-129,\n\t\t-129\n\t],\n\tVe: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVeacute: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVecaron: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-71\n\t],\n\tVecircumflex: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-71\n\t],\n\tVedieresis: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-71,\n\t\t-71,\n\t\t-71\n\t],\n\tVedotaccent: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVegrave: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-71,\n\t\t-71,\n\t\t-71\n\t],\n\tVemacron: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-71,\n\t\t-71,\n\t\t-71\n\t],\n\tVeogonek: [\n\t\t-50,\n\t\t-50,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-111\n\t],\n\tVhyphen: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-74,\n\t\t-70,\n\t\t-55,\n\t\t-100\n\t],\n\tVo: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-129\n\t],\n\tVoacute: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-129\n\t],\n\tVocircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-129\n\t],\n\tVodieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-89\n\t],\n\tVograve: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-89\n\t],\n\tVohungarumlaut: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-129\n\t],\n\tVomacron: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-89\n\t],\n\tVoslash: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-129\n\t],\n\tVotilde: [\n\t\t-90,\n\t\t-90,\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-111,\n\t\t-111,\n\t\t-89\n\t],\n\tVperiod: [\n\t\t-120,\n\t\t-120,\n\t\t-125,\n\t\t-125,\n\t\t-145,\n\t\t-129,\n\t\t-129,\n\t\t-129\n\t],\n\tVsemicolon: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-92,\n\t\t-74,\n\t\t-74,\n\t\t-74\n\t],\n\tVu: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVuacute: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVucircumflex: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVudieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVugrave: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVuhungarumlaut: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVumacron: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVuogonek: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tVuring: [\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-70,\n\t\t-92,\n\t\t-55,\n\t\t-74,\n\t\t-75\n\t],\n\tWA: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAacute: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAbreve: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAcircumflex: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAdieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAgrave: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAmacron: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAogonek: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAring: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWAtilde: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-120,\n\t\t-74,\n\t\t-60,\n\t\t-120\n\t],\n\tWO: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOcircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOdieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOgrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOmacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOslash: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWOtilde: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-15,\n\t\t-25,\n\t\t-10\n\t],\n\tWa: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWaacute: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWabreve: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWacircumflex: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWadieresis: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWagrave: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWamacron: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWaogonek: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWaring: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWatilde: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-65,\n\t\t-85,\n\t\t-92,\n\t\t-80\n\t],\n\tWcolon: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55,\n\t\t-65,\n\t\t-37\n\t],\n\tWcomma: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-92,\n\t\t-74,\n\t\t-92,\n\t\t-92\n\t],\n\tWe: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-90,\n\t\t-92,\n\t\t-80\n\t],\n\tWeacute: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-90,\n\t\t-92,\n\t\t-80\n\t],\n\tWecaron: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-90,\n\t\t-92,\n\t\t-80\n\t],\n\tWecircumflex: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-90,\n\t\t-92,\n\t\t-80\n\t],\n\tWedieresis: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-50,\n\t\t-52,\n\t\t-40\n\t],\n\tWedotaccent: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-90,\n\t\t-92,\n\t\t-80\n\t],\n\tWegrave: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-50,\n\t\t-52,\n\t\t-40\n\t],\n\tWemacron: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-50,\n\t\t-52,\n\t\t-40\n\t],\n\tWeogonek: [\n\t\t-35,\n\t\t-35,\n\t\t-30,\n\t\t-30,\n\t\t-65,\n\t\t-90,\n\t\t-92,\n\t\t-80\n\t],\n\tWhyphen: [\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-37,\n\t\t-50,\n\t\t-37,\n\t\t-65\n\t],\n\tWo: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWoacute: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWocircumflex: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWodieresis: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWograve: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWohungarumlaut: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWomacron: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWoslash: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWotilde: [\n\t\t-60,\n\t\t-60,\n\t\t-30,\n\t\t-30,\n\t\t-75,\n\t\t-80,\n\t\t-92,\n\t\t-80\n\t],\n\tWperiod: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-92,\n\t\t-74,\n\t\t-92,\n\t\t-92\n\t],\n\tWsemicolon: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55,\n\t\t-65,\n\t\t-37\n\t],\n\tWu: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWuacute: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWucircumflex: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWudieresis: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWugrave: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWuhungarumlaut: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWumacron: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWuogonek: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWuring: [\n\t\t-45,\n\t\t-45,\n\t\t-30,\n\t\t-30,\n\t\t-50,\n\t\t-55,\n\t\t-55,\n\t\t-50\n\t],\n\tWy: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-60,\n\t\t-55,\n\t\t-70,\n\t\t-73\n\t],\n\tWyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-60,\n\t\t-55,\n\t\t-70,\n\t\t-73\n\t],\n\tWydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-60,\n\t\t-55,\n\t\t-70,\n\t\t-73\n\t],\n\tYA: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAacute: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAbreve: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAcircumflex: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAgrave: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAmacron: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAogonek: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAring: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYAtilde: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYO: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOacute: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOcircumflex: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOgrave: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOhungarumlaut: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOmacron: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOslash: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYOtilde: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYa: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYaacute: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYabreve: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYacircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYadieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYagrave: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYamacron: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYaogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYaring: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYatilde: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYcolon: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-92,\n\t\t-65,\n\t\t-92\n\t],\n\tYcomma: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-129\n\t],\n\tYe: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYeacute: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYecaron: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYecircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-71,\n\t\t-92,\n\t\t-100\n\t],\n\tYedieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYedotaccent: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYegrave: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYemacron: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYeogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYo: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYoacute: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYocircumflex: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYodieresis: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYograve: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYohungarumlaut: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYomacron: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYoslash: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYotilde: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYperiod: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-74,\n\t\t-92,\n\t\t-129\n\t],\n\tYsemicolon: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-92,\n\t\t-65,\n\t\t-92\n\t],\n\tYu: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYuacute: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYucircumflex: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYudieresis: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYugrave: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYuhungarumlaut: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYumacron: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYuogonek: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYuring: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYacuteA: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAacute: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAbreve: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAcircumflex: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAgrave: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAmacron: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAogonek: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAring: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteAtilde: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYacuteO: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOacute: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOcircumflex: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOgrave: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOhungarumlaut: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOmacron: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOslash: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacuteOtilde: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYacutea: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteaacute: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteabreve: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteacircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteadieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYacuteagrave: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYacuteamacron: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYacuteaogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYacutearing: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteatilde: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYacutecolon: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-92,\n\t\t-65,\n\t\t-92\n\t],\n\tYacutecomma: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-129\n\t],\n\tYacutee: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteeacute: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteecaron: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteecircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-71,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteedieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYacuteedotaccent: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteegrave: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYacuteemacron: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYacuteeogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYacuteo: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYacuteoacute: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYacuteocircumflex: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYacuteodieresis: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYacuteograve: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYacuteohungarumlaut: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYacuteomacron: [\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-70,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYacuteoslash: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYacuteotilde: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYacuteperiod: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-74,\n\t\t-92,\n\t\t-129\n\t],\n\tYacutesemicolon: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-92,\n\t\t-65,\n\t\t-92\n\t],\n\tYacuteu: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYacuteuacute: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYacuteucircumflex: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYacuteudieresis: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYacuteugrave: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYacuteuhungarumlaut: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYacuteumacron: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYacuteuogonek: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYacuteuring: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYdieresisA: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAacute: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAbreve: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAcircumflex: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAdieresis: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAgrave: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAmacron: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAogonek: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAring: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisAtilde: [\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-110,\n\t\t-74,\n\t\t-50,\n\t\t-120\n\t],\n\tYdieresisO: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOacute: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOcircumflex: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOdieresis: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOgrave: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOhungarumlaut: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOmacron: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOslash: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisOtilde: [\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-85,\n\t\t-35,\n\t\t-25,\n\t\t-15,\n\t\t-30\n\t],\n\tYdieresisa: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisaacute: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisabreve: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisacircumflex: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisadieresis: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYdieresisagrave: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYdieresisamacron: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-60\n\t],\n\tYdieresisaogonek: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisaring: [\n\t\t-90,\n\t\t-90,\n\t\t-140,\n\t\t-140,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisatilde: [\n\t\t-90,\n\t\t-90,\n\t\t-70,\n\t\t-70,\n\t\t-85,\n\t\t-92,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresiscolon: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-92,\n\t\t-65,\n\t\t-92\n\t],\n\tYdieresiscomma: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-129\n\t],\n\tYdieresise: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresiseacute: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisecaron: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisecircumflex: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-71,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisedieresis: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYdieresisedotaccent: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresisegrave: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYdieresisemacron: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-71,\n\t\t-71,\n\t\t-52,\n\t\t-60\n\t],\n\tYdieresiseogonek: [\n\t\t-80,\n\t\t-80,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-100\n\t],\n\tYdieresiso: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYdieresisoacute: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYdieresisocircumflex: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYdieresisodieresis: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYdieresisograve: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYdieresisohungarumlaut: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYdieresisomacron: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYdieresisoslash: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-110\n\t],\n\tYdieresisotilde: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-111,\n\t\t-111,\n\t\t-92,\n\t\t-70\n\t],\n\tYdieresisperiod: [\n\t\t-100,\n\t\t-100,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-74,\n\t\t-92,\n\t\t-129\n\t],\n\tYdieresissemicolon: [\n\t\t-50,\n\t\t-50,\n\t\t-60,\n\t\t-60,\n\t\t-92,\n\t\t-92,\n\t\t-65,\n\t\t-92\n\t],\n\tYdieresisu: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYdieresisuacute: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYdieresisucircumflex: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYdieresisudieresis: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYdieresisugrave: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYdieresisuhungarumlaut: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYdieresisumacron: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-71\n\t],\n\tYdieresisuogonek: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tYdieresisuring: [\n\t\t-100,\n\t\t-100,\n\t\t-110,\n\t\t-110,\n\t\t-92,\n\t\t-92,\n\t\t-92,\n\t\t-111\n\t],\n\tag: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tagbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tagcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tav: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\taw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tay: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tayacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taacuteg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taacutegbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taacutegcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taacutev: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\taacutew: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\taacutey: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taacuteyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taacuteydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tabreveg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tabrevegbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tabrevegcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tabrevev: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tabrevew: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tabrevey: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tabreveyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tabreveydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tacircumflexg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tacircumflexgbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tacircumflexgcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tacircumflexv: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tacircumflexw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tacircumflexy: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tacircumflexyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tacircumflexydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tadieresisg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tadieresisgbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tadieresisgcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tadieresisv: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tadieresisw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tadieresisy: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tadieresisyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tadieresisydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tagraveg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tagravegbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tagravegcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tagravev: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tagravew: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tagravey: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tagraveyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tagraveydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tamacrong: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tamacrongbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tamacrongcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tamacronv: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tamacronw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tamacrony: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tamacronyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tamacronydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taogonekg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taogonekgbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taogonekgcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taogonekv: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\taogonekw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\taogoneky: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taogonekyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taogonekydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taringg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taringgbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taringgcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\taringv: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\taringw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\taringy: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taringyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\taringydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tatildeg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tatildegbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tatildegcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tatildev: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tatildew: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tatildey: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tatildeyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tatildeydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30\n\t],\n\tbl: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20\n\t],\n\tblacute: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20\n\t],\n\tblcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20\n\t],\n\tblslash: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20\n\t],\n\tbu: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbuacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbucircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbudieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbugrave: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbuhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbumacron: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbuogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tburing: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbv: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tby: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tbydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20\n\t],\n\tch: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tck: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tckcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tcl: [\n\t\t-20,\n\t\t-20\n\t],\n\tclacute: [\n\t\t-20,\n\t\t-20\n\t],\n\tclcommaaccent: [\n\t\t-20,\n\t\t-20\n\t],\n\tclslash: [\n\t\t-20,\n\t\t-20\n\t],\n\tcy: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tcyacute: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tcydieresis: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tcacuteh: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tcacutek: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tcacutekcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tcacutel: [\n\t\t-20,\n\t\t-20\n\t],\n\tcacutelacute: [\n\t\t-20,\n\t\t-20\n\t],\n\tcacutelcommaaccent: [\n\t\t-20,\n\t\t-20\n\t],\n\tcacutelslash: [\n\t\t-20,\n\t\t-20\n\t],\n\tcacutey: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tcacuteyacute: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tcacuteydieresis: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tccaronh: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tccaronk: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tccaronkcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tccaronl: [\n\t\t-20,\n\t\t-20\n\t],\n\tccaronlacute: [\n\t\t-20,\n\t\t-20\n\t],\n\tccaronlcommaaccent: [\n\t\t-20,\n\t\t-20\n\t],\n\tccaronlslash: [\n\t\t-20,\n\t\t-20\n\t],\n\tccarony: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tccaronyacute: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tccaronydieresis: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tccedillah: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tccedillak: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tccedillakcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t-10,\n\t\t-20\n\t],\n\tccedillal: [\n\t\t-20,\n\t\t-20\n\t],\n\tccedillalacute: [\n\t\t-20,\n\t\t-20\n\t],\n\tccedillalcommaaccent: [\n\t\t-20,\n\t\t-20\n\t],\n\tccedillalslash: [\n\t\t-20,\n\t\t-20\n\t],\n\tccedillay: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tccedillayacute: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tccedillaydieresis: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tcolonspace: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50\n\t],\n\tcommaquotedblright: [\n\t\t-120,\n\t\t-120,\n\t\t-100,\n\t\t-100,\n\t\t-45,\n\t\t-95,\n\t\t-140,\n\t\t-70\n\t],\n\tcommaquoteright: [\n\t\t-120,\n\t\t-120,\n\t\t-100,\n\t\t-100,\n\t\t-55,\n\t\t-95,\n\t\t-140,\n\t\t-70\n\t],\n\tcommaspace: [\n\t\t-40,\n\t\t-40\n\t],\n\tdd: [\n\t\t-10,\n\t\t-10\n\t],\n\tddcroat: [\n\t\t-10,\n\t\t-10\n\t],\n\tdv: [\n\t\t-15,\n\t\t-15\n\t],\n\tdw: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tdy: [\n\t\t-15,\n\t\t-15\n\t],\n\tdyacute: [\n\t\t-15,\n\t\t-15\n\t],\n\tdydieresis: [\n\t\t-15,\n\t\t-15\n\t],\n\tdcroatd: [\n\t\t-10,\n\t\t-10\n\t],\n\tdcroatdcroat: [\n\t\t-10,\n\t\t-10\n\t],\n\tdcroatv: [\n\t\t-15,\n\t\t-15\n\t],\n\tdcroatw: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tdcroaty: [\n\t\t-15,\n\t\t-15\n\t],\n\tdcroatyacute: [\n\t\t-15,\n\t\t-15\n\t],\n\tdcroatydieresis: [\n\t\t-15,\n\t\t-15\n\t],\n\tecomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\teperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tev: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tew: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tex: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\tey: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teacutecomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\teacuteperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\teacutev: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\teacutew: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\teacutex: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\teacutey: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teacuteyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teacuteydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tecaroncomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tecaronperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tecaronv: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tecaronw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tecaronx: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\tecarony: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tecaronyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tecaronydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tecircumflexcomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tecircumflexperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tecircumflexv: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tecircumflexw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tecircumflexx: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\tecircumflexy: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tecircumflexyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tecircumflexydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tedieresiscomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tedieresisperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tedieresisv: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tedieresisw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tedieresisx: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\tedieresisy: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tedieresisyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tedieresisydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tedotaccentcomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tedotaccentperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tedotaccentv: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tedotaccentw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tedotaccentx: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\tedotaccenty: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tedotaccentyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tedotaccentydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tegravecomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tegraveperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tegravev: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tegravew: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\tegravex: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\tegravey: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tegraveyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tegraveydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\temacroncomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\temacronperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\temacronv: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\temacronw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\temacronx: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\temacrony: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\temacronyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\temacronydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teogonekcomma: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\teogonekperiod: [\n\t\t20,\n\t\t20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\teogonekv: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\teogonekw: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-25\n\t],\n\teogonekx: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15\n\t],\n\teogoneky: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teogonekyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\teogonekydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-15\n\t],\n\tfcomma: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-10,\n\t\t-10\n\t],\n\tfe: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\tfeacute: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\tfecaron: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30\n\t],\n\tfecircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30\n\t],\n\tfedieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30\n\t],\n\tfedotaccent: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\tfegrave: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30\n\t],\n\tfemacron: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30\n\t],\n\tfeogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\tfo: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-10\n\t],\n\tfoacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-10\n\t],\n\tfocircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-10\n\t],\n\tfodieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25\n\t],\n\tfograve: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-10\n\t],\n\tfohungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-10\n\t],\n\tfomacron: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25\n\t],\n\tfoslash: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-10\n\t],\n\tfotilde: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-10\n\t],\n\tfperiod: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\tfquotedblright: [\n\t\t30,\n\t\t30,\n\t\t60,\n\t\t60,\n\t\t50\n\t],\n\tfquoteright: [\n\t\t30,\n\t\t30,\n\t\t50,\n\t\t50,\n\t\t55,\n\t\t55,\n\t\t92,\n\t\t55\n\t],\n\tge: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgeacute: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgecaron: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgecircumflex: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgedieresis: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgedotaccent: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgegrave: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgemacron: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgeogonek: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tggbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tggcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbrevee: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveeacute: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveecaron: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveecircumflex: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveedieresis: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveedotaccent: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveegrave: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveemacron: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveeogonek: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbreveg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbrevegbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbrevegcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccente: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccenteacute: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentecaron: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentecircumflex: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentedieresis: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentedotaccent: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentegrave: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentemacron: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccenteogonek: [\n\t\t10,\n\t\t10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentg: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentgbreve: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentgcommaaccent: [\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\thy: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\thyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\thydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tko: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkoacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkocircumflex: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkodieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkograve: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkohungarumlaut: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkomacron: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkoslash: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkotilde: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccento: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentoacute: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentocircumflex: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentodieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentograve: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentohungarumlaut: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentomacron: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentoslash: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentotilde: [\n\t\t-15,\n\t\t-15,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tlw: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tly: [\n\t\t-15,\n\t\t-15\n\t],\n\tlyacute: [\n\t\t-15,\n\t\t-15\n\t],\n\tlydieresis: [\n\t\t-15,\n\t\t-15\n\t],\n\tlacutew: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tlacutey: [\n\t\t-15,\n\t\t-15\n\t],\n\tlacuteyacute: [\n\t\t-15,\n\t\t-15\n\t],\n\tlacuteydieresis: [\n\t\t-15,\n\t\t-15\n\t],\n\tlcommaaccentw: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tlcommaaccenty: [\n\t\t-15,\n\t\t-15\n\t],\n\tlcommaaccentyacute: [\n\t\t-15,\n\t\t-15\n\t],\n\tlcommaaccentydieresis: [\n\t\t-15,\n\t\t-15\n\t],\n\tlslashw: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tlslashy: [\n\t\t-15,\n\t\t-15\n\t],\n\tlslashyacute: [\n\t\t-15,\n\t\t-15\n\t],\n\tlslashydieresis: [\n\t\t-15,\n\t\t-15\n\t],\n\tmu: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmuacute: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmucircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmudieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmugrave: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmuhungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmumacron: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmuogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmuring: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10\n\t],\n\tmy: [\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-15\n\t],\n\tmyacute: [\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-15\n\t],\n\tmydieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-15,\n\t\t-15\n\t],\n\tnu: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnuacute: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnucircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnudieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnugrave: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnuhungarumlaut: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnumacron: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnuogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnuring: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnv: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tny: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tnyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tnydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tnacuteu: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteuacute: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteucircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteudieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteugrave: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteuhungarumlaut: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteumacron: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteuogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacuteuring: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tnacutev: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tnacutey: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tnacuteyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tnacuteydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tncaronu: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronuacute: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronucircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronudieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronugrave: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronuhungarumlaut: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronumacron: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronuogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronuring: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncaronv: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tncarony: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tncaronyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tncaronydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tncommaaccentu: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentuacute: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentucircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentudieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentugrave: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentuhungarumlaut: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentumacron: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentuogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccenturing: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tncommaaccentv: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tncommaaccenty: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tncommaaccentyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tncommaaccentydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tntildeu: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeuacute: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeucircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeudieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeugrave: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeuhungarumlaut: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeumacron: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeuogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildeuring: [\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tntildev: [\n\t\t-40,\n\t\t-40,\n\t\t-20,\n\t\t-20,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tntildey: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tntildeyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tntildeydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tov: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\tow: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\tox: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\toy: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toacutev: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\toacutew: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\toacutex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\toacutey: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toacuteyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toacuteydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tocircumflexv: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\tocircumflexw: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\tocircumflexx: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\tocircumflexy: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tocircumflexyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tocircumflexydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\todieresisv: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\todieresisw: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\todieresisx: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\todieresisy: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\todieresisyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\todieresisydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\togravev: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\togravew: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\togravex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\togravey: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tograveyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tograveydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tohungarumlautv: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\tohungarumlautw: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\tohungarumlautx: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\tohungarumlauty: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tohungarumlautyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tohungarumlautydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tomacronv: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\tomacronw: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\tomacronx: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\tomacrony: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tomacronyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tomacronydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toslashv: [\n\t\t-20,\n\t\t-20,\n\t\t-70,\n\t\t-70,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\toslashw: [\n\t\t-15,\n\t\t-15,\n\t\t-70,\n\t\t-70,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\toslashx: [\n\t\t-30,\n\t\t-30,\n\t\t-85,\n\t\t-85,\n\t\t0,\n\t\t-10\n\t],\n\toslashy: [\n\t\t-20,\n\t\t-20,\n\t\t-70,\n\t\t-70,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toslashyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-70,\n\t\t-70,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\toslashydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-70,\n\t\t-70,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\totildev: [\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-15,\n\t\t-10,\n\t\t-15\n\t],\n\totildew: [\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-15,\n\t\t-10,\n\t\t-25,\n\t\t0,\n\t\t-25\n\t],\n\totildex: [\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10\n\t],\n\totildey: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\totildeyacute: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\totildeydieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tpy: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tpyacute: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tpydieresis: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tperiodquotedblright: [\n\t\t-120,\n\t\t-120,\n\t\t-100,\n\t\t-100,\n\t\t-55,\n\t\t-95,\n\t\t-140,\n\t\t-70\n\t],\n\tperiodquoteright: [\n\t\t-120,\n\t\t-120,\n\t\t-100,\n\t\t-100,\n\t\t-55,\n\t\t-95,\n\t\t-140,\n\t\t-70\n\t],\n\tperiodspace: [\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-60\n\t],\n\tquotedblrightspace: [\n\t\t-80,\n\t\t-80,\n\t\t-40,\n\t\t-40\n\t],\n\tquoteleftquoteleft: [\n\t\t-46,\n\t\t-46,\n\t\t-57,\n\t\t-57,\n\t\t-63,\n\t\t-74,\n\t\t-111,\n\t\t-74\n\t],\n\tquoterightd: [\n\t\t-80,\n\t\t-80,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-15,\n\t\t-25,\n\t\t-50\n\t],\n\tquoterightdcroat: [\n\t\t-80,\n\t\t-80,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-15,\n\t\t-25,\n\t\t-50\n\t],\n\tquoterightl: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tquoterightlacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tquoterightlcommaaccent: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tquoterightlslash: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tquoterightquoteright: [\n\t\t-46,\n\t\t-46,\n\t\t-57,\n\t\t-57,\n\t\t-63,\n\t\t-74,\n\t\t-111,\n\t\t-74\n\t],\n\tquoterightr: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-15,\n\t\t-25,\n\t\t-50\n\t],\n\tquoterightracute: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-15,\n\t\t-25,\n\t\t-50\n\t],\n\tquoterightrcaron: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-15,\n\t\t-25,\n\t\t-50\n\t],\n\tquoterightrcommaaccent: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50,\n\t\t-20,\n\t\t-15,\n\t\t-25,\n\t\t-50\n\t],\n\tquoterights: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-37,\n\t\t-74,\n\t\t-40,\n\t\t-55\n\t],\n\tquoterightsacute: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-37,\n\t\t-74,\n\t\t-40,\n\t\t-55\n\t],\n\tquoterightscaron: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-37,\n\t\t-74,\n\t\t-40,\n\t\t-55\n\t],\n\tquoterightscedilla: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-37,\n\t\t-74,\n\t\t-40,\n\t\t-55\n\t],\n\tquoterightscommaaccent: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-37,\n\t\t-74,\n\t\t-40,\n\t\t-55\n\t],\n\tquoterightspace: [\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-70,\n\t\t-74,\n\t\t-74,\n\t\t-111,\n\t\t-74\n\t],\n\tquoterightv: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-15,\n\t\t-10,\n\t\t-50\n\t],\n\trc: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trccaron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trccedilla: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcomma: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-92,\n\t\t-65,\n\t\t-111,\n\t\t-40\n\t],\n\trd: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\trdcroat: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\trg: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trgbreve: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trgcommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trhyphen: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tro: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\troacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trocircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trodieresis: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trograve: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trohungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tromacron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\troslash: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trotilde: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trperiod: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-100,\n\t\t-65,\n\t\t-111,\n\t\t-55\n\t],\n\trq: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trs: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trsacute: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trscaron: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trscedilla: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trscommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trt: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\trtcommaaccent: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\trv: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\try: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\tryacute: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\trydieresis: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\tracutec: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracutecacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteccaron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteccedilla: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracutecomma: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-92,\n\t\t-65,\n\t\t-111,\n\t\t-40\n\t],\n\tracuted: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\tracutedcroat: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\tracuteg: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\tracutegbreve: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\tracutegcommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\tracutehyphen: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tracuteo: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteoacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteocircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteodieresis: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteograve: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteohungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteomacron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteoslash: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteotilde: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\tracuteperiod: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-100,\n\t\t-65,\n\t\t-111,\n\t\t-55\n\t],\n\tracuteq: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracutes: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tracutesacute: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tracutescaron: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tracutescedilla: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tracutescommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tracutet: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\tracutetcommaaccent: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\tracutev: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\tracutey: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\tracuteyacute: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\tracuteydieresis: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\trcaronc: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaroncacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronccaron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronccedilla: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaroncomma: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-92,\n\t\t-65,\n\t\t-111,\n\t\t-40\n\t],\n\trcarond: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\trcarondcroat: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\trcarong: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trcarongbreve: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trcarongcommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trcaronhyphen: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\trcarono: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronoacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronocircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronodieresis: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronograve: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronohungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronomacron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronoslash: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronotilde: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcaronperiod: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-100,\n\t\t-65,\n\t\t-111,\n\t\t-55\n\t],\n\trcaronq: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcarons: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcaronsacute: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcaronscaron: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcaronscedilla: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcaronscommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcaront: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\trcarontcommaaccent: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\trcaronv: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\trcarony: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\trcaronyacute: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\trcaronydieresis: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\trcommaaccentc: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentcacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentccaron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentccedilla: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentcomma: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-92,\n\t\t-65,\n\t\t-111,\n\t\t-40\n\t],\n\trcommaaccentd: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentdcroat: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentg: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trcommaaccentgbreve: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trcommaaccentgcommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-37,\n\t\t-18\n\t],\n\trcommaaccenthyphen: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\trcommaaccento: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentoacute: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentocircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentodieresis: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentograve: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentohungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentomacron: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentoslash: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentotilde: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-45\n\t],\n\trcommaaccentperiod: [\n\t\t-60,\n\t\t-60,\n\t\t-50,\n\t\t-50,\n\t\t-100,\n\t\t-65,\n\t\t-111,\n\t\t-55\n\t],\n\trcommaaccentq: [\n\t\t-20,\n\t\t-20,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccents: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcommaaccentsacute: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcommaaccentscaron: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcommaaccentscedilla: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcommaaccentscommaaccent: [\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\trcommaaccentt: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\trcommaaccenttcommaaccent: [\n\t\t20,\n\t\t20,\n\t\t40,\n\t\t40\n\t],\n\trcommaaccentv: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\trcommaaccenty: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\trcommaaccentyacute: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\trcommaaccentydieresis: [\n\t\t10,\n\t\t10,\n\t\t30,\n\t\t30\n\t],\n\tsw: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30\n\t],\n\tsacutew: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30\n\t],\n\tscaronw: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30\n\t],\n\tscedillaw: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30\n\t],\n\tscommaaccentw: [\n\t\t-15,\n\t\t-15,\n\t\t-30,\n\t\t-30\n\t],\n\tsemicolonspace: [\n\t\t-40,\n\t\t-40,\n\t\t-50,\n\t\t-50\n\t],\n\tspaceT: [\n\t\t-100,\n\t\t-100,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t0,\n\t\t-18,\n\t\t-18\n\t],\n\tspaceTcaron: [\n\t\t-100,\n\t\t-100,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t0,\n\t\t-18,\n\t\t-18\n\t],\n\tspaceTcommaaccent: [\n\t\t-100,\n\t\t-100,\n\t\t-50,\n\t\t-50,\n\t\t-30,\n\t\t0,\n\t\t-18,\n\t\t-18\n\t],\n\tspaceV: [\n\t\t-80,\n\t\t-80,\n\t\t-50,\n\t\t-50,\n\t\t-45,\n\t\t-70,\n\t\t-35,\n\t\t-50\n\t],\n\tspaceW: [\n\t\t-80,\n\t\t-80,\n\t\t-40,\n\t\t-40,\n\t\t-30,\n\t\t-70,\n\t\t-40,\n\t\t-30\n\t],\n\tspaceY: [\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-90,\n\t\t-55,\n\t\t-70,\n\t\t-75,\n\t\t-90\n\t],\n\tspaceYacute: [\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-90,\n\t\t-55,\n\t\t-70,\n\t\t-75,\n\t\t-90\n\t],\n\tspaceYdieresis: [\n\t\t-120,\n\t\t-120,\n\t\t-90,\n\t\t-90,\n\t\t-55,\n\t\t-70,\n\t\t-75,\n\t\t-90\n\t],\n\tspacequotedblleft: [\n\t\t-80,\n\t\t-80,\n\t\t-30,\n\t\t-30\n\t],\n\tspacequoteleft: [\n\t\t-60,\n\t\t-60,\n\t\t-60,\n\t\t-60\n\t],\n\tva: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvaacute: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvabreve: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvacircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvadieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvagrave: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvamacron: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvaogonek: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvaring: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvatilde: [\n\t\t-20,\n\t\t-20,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tvcomma: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-55,\n\t\t-37,\n\t\t-74,\n\t\t-65\n\t],\n\tvo: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvoacute: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvocircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvodieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvograve: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvohungarumlaut: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvomacron: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvoslash: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvotilde: [\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-20\n\t],\n\tvperiod: [\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-80,\n\t\t-70,\n\t\t-37,\n\t\t-74,\n\t\t-65\n\t],\n\twcomma: [\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-60,\n\t\t-55,\n\t\t-37,\n\t\t-74,\n\t\t-65\n\t],\n\two: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twoacute: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twocircumflex: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twodieresis: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twograve: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twohungarumlaut: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twomacron: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twoslash: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twotilde: [\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-10\n\t],\n\twperiod: [\n\t\t-40,\n\t\t-40,\n\t\t-60,\n\t\t-60,\n\t\t-70,\n\t\t-37,\n\t\t-74,\n\t\t-65\n\t],\n\txe: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txeacute: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txecaron: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txecircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txedieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txedotaccent: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txegrave: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txemacron: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\txeogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-15\n\t],\n\tya: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyaacute: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyabreve: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyadieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyagrave: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyamacron: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyaogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyaring: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyatilde: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tycomma: [\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-100,\n\t\t-55,\n\t\t-37,\n\t\t-55,\n\t\t-65\n\t],\n\tye: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyeacute: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyecaron: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyecircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyedieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyedotaccent: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyegrave: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyemacron: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyeogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyo: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyoacute: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyocircumflex: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyodieresis: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyograve: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyohungarumlaut: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyomacron: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyoslash: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyotilde: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\typeriod: [\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-37,\n\t\t-55,\n\t\t-65\n\t],\n\tyacutea: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteaacute: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteabreve: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteacircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteadieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteagrave: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteamacron: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteaogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacutearing: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacuteatilde: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tyacutecomma: [\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-100,\n\t\t-55,\n\t\t-37,\n\t\t-55,\n\t\t-65\n\t],\n\tyacutee: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteeacute: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteecaron: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteecircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteedieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteedotaccent: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteegrave: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteemacron: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteeogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tyacuteo: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteoacute: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteocircumflex: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteodieresis: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteograve: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteohungarumlaut: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteomacron: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteoslash: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteotilde: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tyacuteperiod: [\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-37,\n\t\t-55,\n\t\t-65\n\t],\n\tydieresisa: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisaacute: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisabreve: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisacircumflex: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisadieresis: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisagrave: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisamacron: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisaogonek: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisaring: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresisatilde: [\n\t\t-30,\n\t\t-30,\n\t\t-20,\n\t\t-20\n\t],\n\tydieresiscomma: [\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-100,\n\t\t-55,\n\t\t-37,\n\t\t-55,\n\t\t-65\n\t],\n\tydieresise: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresiseacute: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresisecaron: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresisecircumflex: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresisedieresis: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresisedotaccent: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresisegrave: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresisemacron: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresiseogonek: [\n\t\t-10,\n\t\t-10,\n\t\t-20,\n\t\t-20,\n\t\t-10\n\t],\n\tydieresiso: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisoacute: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisocircumflex: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisodieresis: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisograve: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisohungarumlaut: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisomacron: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisoslash: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisotilde: [\n\t\t-25,\n\t\t-25,\n\t\t-20,\n\t\t-20,\n\t\t-25\n\t],\n\tydieresisperiod: [\n\t\t-80,\n\t\t-80,\n\t\t-100,\n\t\t-100,\n\t\t-70,\n\t\t-37,\n\t\t-55,\n\t\t-65\n\t],\n\tze: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzeacute: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzecaron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzecircumflex: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzedieresis: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzedotaccent: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzegrave: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzemacron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzeogonek: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacutee: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteeacute: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteecaron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteecircumflex: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteedieresis: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteedotaccent: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteegrave: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteemacron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteeogonek: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcarone: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaroneacute: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronecaron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronecircumflex: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronedieresis: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronedotaccent: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronegrave: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronemacron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaroneogonek: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccente: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccenteacute: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentecaron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentecircumflex: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentedieresis: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentedotaccent: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentegrave: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentemacron: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccenteogonek: [\n\t\t10,\n\t\t10,\n\t\t-15,\n\t\t-15\n\t],\n\tBcomma: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tBperiod: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tCcomma: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tCperiod: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tCacutecomma: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tCacuteperiod: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tCcaroncomma: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tCcaronperiod: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tCcedillacomma: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tCcedillaperiod: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30\n\t],\n\tFe: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFeacute: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFecaron: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFecircumflex: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFedieresis: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFedotaccent: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFegrave: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFemacron: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFeogonek: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-100,\n\t\t-75\n\t],\n\tFo: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFoacute: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFocircumflex: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFodieresis: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFograve: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFohungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFomacron: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFoslash: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFotilde: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t-25,\n\t\t-70,\n\t\t-105,\n\t\t-15\n\t],\n\tFr: [\n\t\t0,\n\t\t0,\n\t\t-45,\n\t\t-45,\n\t\t0,\n\t\t-50,\n\t\t-55\n\t],\n\tFracute: [\n\t\t0,\n\t\t0,\n\t\t-45,\n\t\t-45,\n\t\t0,\n\t\t-50,\n\t\t-55\n\t],\n\tFrcaron: [\n\t\t0,\n\t\t0,\n\t\t-45,\n\t\t-45,\n\t\t0,\n\t\t-50,\n\t\t-55\n\t],\n\tFrcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-45,\n\t\t-45,\n\t\t0,\n\t\t-50,\n\t\t-55\n\t],\n\tJa: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJaacute: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJabreve: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJacircumflex: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJadieresis: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJagrave: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJamacron: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJaogonek: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJaring: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tJatilde: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-15,\n\t\t-40,\n\t\t-35\n\t],\n\tLcaronT: [\n\t\t0,\n\t\t0,\n\t\t-110,\n\t\t-110\n\t],\n\tLcaronTcaron: [\n\t\t0,\n\t\t0,\n\t\t-110,\n\t\t-110\n\t],\n\tLcaronTcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-110,\n\t\t-110\n\t],\n\tLcaronV: [\n\t\t0,\n\t\t0,\n\t\t-110,\n\t\t-110\n\t],\n\tLcaronW: [\n\t\t0,\n\t\t0,\n\t\t-70,\n\t\t-70\n\t],\n\tLcaronY: [\n\t\t0,\n\t\t0,\n\t\t-140,\n\t\t-140\n\t],\n\tLcaronYacute: [\n\t\t0,\n\t\t0,\n\t\t-140,\n\t\t-140\n\t],\n\tLcaronYdieresis: [\n\t\t0,\n\t\t0,\n\t\t-140,\n\t\t-140\n\t],\n\tLcaronquotedblright: [\n\t\t0,\n\t\t0,\n\t\t-140,\n\t\t-140\n\t],\n\tLcaronquoteright: [\n\t\t0,\n\t\t0,\n\t\t-160,\n\t\t-160,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-92\n\t],\n\tLcarony: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55\n\t],\n\tLcaronyacute: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55\n\t],\n\tLcaronydieresis: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55\n\t],\n\tScomma: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tSperiod: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tSacutecomma: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tSacuteperiod: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tScaroncomma: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tScaronperiod: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tScedillacomma: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tScedillaperiod: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tScommaaccentcomma: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tScommaaccentperiod: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tTrcaron: [\n\t\t0,\n\t\t0,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcaronrcaron: [\n\t\t0,\n\t\t0,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcommaaccentrcaron: [\n\t\t0,\n\t\t0,\n\t\t-120,\n\t\t-120,\n\t\t-74,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tYhyphen: [\n\t\t0,\n\t\t0,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-74,\n\t\t-111\n\t],\n\tYi: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYiacute: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYiogonek: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYacutehyphen: [\n\t\t0,\n\t\t0,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-74,\n\t\t-111\n\t],\n\tYacutei: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYacuteiacute: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYacuteiogonek: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYdieresishyphen: [\n\t\t0,\n\t\t0,\n\t\t-140,\n\t\t-140,\n\t\t-92,\n\t\t-92,\n\t\t-74,\n\t\t-111\n\t],\n\tYdieresisi: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYdieresisiacute: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tYdieresisiogonek: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-55\n\t],\n\tbb: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t-10,\n\t\t-10\n\t],\n\tbcomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tbperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40,\n\t\t-40\n\t],\n\tccomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tcacutecomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tccaroncomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tccedillacomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tfa: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfaacute: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfabreve: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfacircumflex: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfadieresis: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfagrave: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfamacron: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfaogonek: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfaring: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfatilde: [\n\t\t0,\n\t\t0,\n\t\t-30,\n\t\t-30,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfdotlessi: [\n\t\t0,\n\t\t0,\n\t\t-28,\n\t\t-28,\n\t\t-35,\n\t\t-30,\n\t\t-60,\n\t\t-50\n\t],\n\tgr: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgracute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgrcaron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgrcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgbrever: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgbreveracute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgbrevercaron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgbrevercommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgcommaaccentr: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgcommaaccentracute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgcommaaccentrcaron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tgcommaaccentrcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10\n\t],\n\tke: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkeacute: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkecaron: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkecircumflex: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkedieresis: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkedotaccent: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkegrave: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkemacron: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkeogonek: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccente: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccenteacute: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentecaron: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentecircumflex: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentedieresis: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentedotaccent: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentegrave: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccentemacron: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tkcommaaccenteogonek: [\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-20,\n\t\t-10,\n\t\t-30,\n\t\t-10,\n\t\t-10\n\t],\n\tocomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\toperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\toacutecomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\toacuteperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tocircumflexcomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tocircumflexperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\todieresiscomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\todieresisperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\togravecomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tograveperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tohungarumlautcomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tohungarumlautperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tomacroncomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tomacronperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\toslasha: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashaacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashabreve: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashacircumflex: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashadieresis: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashagrave: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashamacron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashaogonek: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslasharing: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashatilde: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashb: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashc: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashcacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashccaron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashccedilla: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashcomma: [\n\t\t0,\n\t\t0,\n\t\t-95,\n\t\t-95\n\t],\n\toslashd: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashdcroat: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashe: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslasheacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashecaron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashecircumflex: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashedieresis: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashedotaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashegrave: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashemacron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslasheogonek: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashf: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashg: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\toslashgbreve: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\toslashgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\toslashh: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashi: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashiacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashicircumflex: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashidieresis: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashigrave: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashimacron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashiogonek: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashj: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashk: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashkcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashl: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashlacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashlcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashlslash: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashm: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashn: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashnacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashncaron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashncommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashntilde: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslasho: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashoacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashocircumflex: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashodieresis: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashograve: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashohungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashomacron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashoslash: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashotilde: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashp: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashperiod: [\n\t\t0,\n\t\t0,\n\t\t-95,\n\t\t-95\n\t],\n\toslashq: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashr: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashracute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashrcaron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashrcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashs: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashsacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashscaron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashscedilla: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashscommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslasht: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashtcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashu: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashuacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashucircumflex: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashudieresis: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashugrave: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashuhungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashumacron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashuogonek: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashuring: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashz: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashzacute: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashzcaron: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\toslashzdotaccent: [\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-55\n\t],\n\totildecomma: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\totildeperiod: [\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-40\n\t],\n\tpcomma: [\n\t\t0,\n\t\t0,\n\t\t-35,\n\t\t-35\n\t],\n\tpperiod: [\n\t\t0,\n\t\t0,\n\t\t-35,\n\t\t-35\n\t],\n\tra: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\traacute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trabreve: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracircumflex: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tradieresis: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tragrave: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tramacron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\traogonek: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\traring: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tratilde: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\tri: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\triacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tricircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tridieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trigrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trimacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\triogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trk: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trkcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trl: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trlacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trlcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trlslash: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trm: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25\n\t],\n\trn: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trnacute: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trncaron: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trncommaaccent: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trntilde: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trp: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\trsemicolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\tru: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\truacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trucircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trudieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trugrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\truhungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trumacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\truogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\truring: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutea: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteaacute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteabreve: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteacircumflex: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteadieresis: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteagrave: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteamacron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteaogonek: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracutearing: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracuteatilde: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\tracutecolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\tracutei: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteiacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteicircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteidieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteigrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteimacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteiogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutekcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutel: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutelacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutelcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutelslash: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracutem: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25\n\t],\n\tracuten: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\tracutenacute: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\tracutencaron: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\tracutencommaaccent: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\tracutentilde: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\tracutep: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\tracutesemicolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\tracuteu: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteuacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteucircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteudieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteugrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteuhungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteumacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteuogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tracuteuring: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcarona: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronaacute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronabreve: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronacircumflex: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronadieresis: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronagrave: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronamacron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronaogonek: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronaring: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaronatilde: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcaroncolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\trcaroni: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaroniacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronicircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronidieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronigrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronimacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaroniogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronk: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronkcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronl: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronlacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronlcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronlslash: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronm: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25\n\t],\n\trcaronn: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcaronnacute: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcaronncaron: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcaronncommaaccent: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcaronntilde: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcaronp: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\trcaronsemicolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\trcaronu: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronuacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronucircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronudieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronugrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronuhungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronumacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronuogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcaronuring: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccenta: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentaacute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentabreve: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentacircumflex: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentadieresis: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentagrave: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentamacron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentaogonek: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentaring: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentatilde: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-15\n\t],\n\trcommaaccentcolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\trcommaaccenti: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentiacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccenticircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentidieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentigrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentimacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentiogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentk: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentkcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentl: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentlacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentlcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentlslash: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentm: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25\n\t],\n\trcommaaccentn: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcommaaccentnacute: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcommaaccentncaron: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcommaaccentncommaaccent: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcommaaccentntilde: [\n\t\t0,\n\t\t0,\n\t\t25,\n\t\t25,\n\t\t-15\n\t],\n\trcommaaccentp: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30,\n\t\t-10\n\t],\n\trcommaaccentsemicolon: [\n\t\t0,\n\t\t0,\n\t\t30,\n\t\t30\n\t],\n\trcommaaccentu: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentuacute: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentucircumflex: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentudieresis: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentugrave: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentuhungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentumacron: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccentuogonek: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\trcommaaccenturing: [\n\t\t0,\n\t\t0,\n\t\t15,\n\t\t15\n\t],\n\tscomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tsperiod: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tsacutecomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tsacuteperiod: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tscaroncomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tscaronperiod: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tscedillacomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tscedillaperiod: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tscommaaccentcomma: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tscommaaccentperiod: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tve: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tveacute: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tvecaron: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tvecircumflex: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tvedieresis: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tvedotaccent: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tvegrave: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tvemacron: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tveogonek: [\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t-25,\n\t\t-10,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\twa: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twaacute: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twabreve: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twacircumflex: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twadieresis: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twagrave: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twamacron: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twaogonek: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twaring: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twatilde: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twe: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tweacute: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twecaron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twecircumflex: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twedieresis: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twedotaccent: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twegrave: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\twemacron: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tweogonek: [\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t-10,\n\t\t0,\n\t\t-10\n\t],\n\tzo: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzoacute: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzocircumflex: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzodieresis: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzograve: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzohungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzomacron: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzoslash: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzotilde: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteo: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteoacute: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteocircumflex: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteodieresis: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteograve: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteohungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteomacron: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteoslash: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzacuteotilde: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcarono: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronoacute: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronocircumflex: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronodieresis: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronograve: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronohungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronomacron: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronoslash: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzcaronotilde: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccento: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentoacute: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentocircumflex: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentodieresis: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentograve: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentohungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentomacron: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentoslash: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tzdotaccentotilde: [\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-15\n\t],\n\tAp: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAquoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAacutep: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAacutequoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAbrevep: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAbrevequoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAcircumflexp: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAcircumflexquoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAdieresisp: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAdieresisquoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAgravep: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAgravequoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAmacronp: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAmacronquoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAogonekp: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAogonekquoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAringp: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAringquoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tAtildep: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tAtildequoteright: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-74,\n\t\t-74,\n\t\t-37,\n\t\t-111\n\t],\n\tJe: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJeacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJecaron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJecircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJedieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJedotaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJegrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJemacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJeogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJo: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJoacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJocircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJodieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJograve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJohungarumlaut: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJomacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJoslash: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tJotilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t-40,\n\t\t-25\n\t],\n\tNA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNacuteAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcaronAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNcommaaccentAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tNtildeAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20,\n\t\t-30,\n\t\t-27,\n\t\t-35\n\t],\n\tTi: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTiacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTiogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcaroni: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcaroniacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcaroniogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcommaaccenti: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcommaaccentiacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tTcommaaccentiogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-35\n\t],\n\tVi: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-60\n\t],\n\tViacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-60\n\t],\n\tVicircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-34,\n\t\t-20\n\t],\n\tVidieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-34,\n\t\t-20\n\t],\n\tVigrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-34,\n\t\t-20\n\t],\n\tVimacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t0,\n\t\t-34,\n\t\t-20\n\t],\n\tViogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t-55,\n\t\t-74,\n\t\t-60\n\t],\n\tWi: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-40\n\t],\n\tWiacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-40\n\t],\n\tWiogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-37,\n\t\t-55,\n\t\t-40\n\t],\n\tfi: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-25,\n\t\t0,\n\t\t-20,\n\t\t-20\n\t],\n\tgperiod: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tgbreveperiod: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tgcommaaccentperiod: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-15\n\t],\n\tiv: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tiacutev: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\ticircumflexv: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tidieresisv: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tigravev: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\timacronv: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tiogonekv: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-25\n\t],\n\tky: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tkyacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tkydieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tkcommaaccenty: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tkcommaaccentyacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tkcommaaccentydieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-15,\n\t\t0,\n\t\t-10,\n\t\t-15\n\t],\n\tquotedblleftA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquotedblleftAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tquoteleftAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10,\n\t\t0,\n\t\t0,\n\t\t-80\n\t],\n\tre: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\treacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trecaron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trecircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tredieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tredotaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tregrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tremacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\treogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracutee: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteeacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteecaron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteecircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteedieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteedotaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteegrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteemacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tracuteeogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcarone: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaroneacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronecaron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronecircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronedieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronedotaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronegrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaronemacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcaroneogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccente: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccenteacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentecaron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentecircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentedieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentedotaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentegrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccentemacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\trcommaaccenteogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t0,\n\t\t-37\n\t],\n\tspaceA: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAcircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAdieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAgrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAmacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tspaceAtilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-55,\n\t\t-37,\n\t\t-18,\n\t\t-55\n\t],\n\tFi: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-45\n\t],\n\tFiacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-45\n\t],\n\tFicircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-45\n\t],\n\tFidieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-45\n\t],\n\tFigrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-45\n\t],\n\tFimacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-45\n\t],\n\tFiogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-45\n\t],\n\teb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\teacuteb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tecaronb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tecircumflexb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tedieresisb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tedotaccentb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tegraveb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\temacronb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\teogonekb: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tff: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-18,\n\t\t-18,\n\t\t-25\n\t],\n\tquoterightt: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t-30,\n\t\t-18\n\t],\n\tquoterighttcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-37,\n\t\t-30,\n\t\t-18\n\t],\n\tYicircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYidieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYigrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYimacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYacuteicircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYacuteidieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYacuteigrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYacuteimacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYdieresisicircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYdieresisidieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYdieresisigrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\tYdieresisimacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-34\n\t],\n\teg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tegbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tegcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\teacuteg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\teacutegbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\teacutegcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tecarong: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tecarongbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tecarongcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tecircumflexg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tecircumflexgbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tecircumflexgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tedieresisg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tedieresisgbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tedieresisgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tedotaccentg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tedotaccentgbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tedotaccentgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tegraveg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tegravegbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tegravegcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\temacrong: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\temacrongbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\temacrongcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\teogonekg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\teogonekgbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\teogonekgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-40,\n\t\t-15\n\t],\n\tfiogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tgcomma: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgbrevecomma: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tgcommaaccentcomma: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tog: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\togbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\togcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\toacuteg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\toacutegbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\toacutegcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tocircumflexg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tocircumflexgbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tocircumflexgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\todieresisg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\todieresisgbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\todieresisgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tograveg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\togravegbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\togravegcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tohungarumlautg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tohungarumlautgbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tohungarumlautgcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tomacrong: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tomacrongbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tomacrongcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\totildeg: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\totildegbreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\totildegcommaaccent: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-10\n\t],\n\tfiacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-20\n\t],\n\tga: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgaacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgabreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgacircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgadieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgagrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgamacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgaogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgaring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgatilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbrevea: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveaacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveabreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveacircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveadieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveagrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveamacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveaogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbrevearing: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgbreveatilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccenta: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentaacute: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentabreve: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentacircumflex: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentadieresis: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentagrave: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentamacron: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentaogonek: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentaring: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t],\n\tgcommaaccentatilde: [\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t-5\n\t]\n};\nvar data = {\n\tattributes: attributes,\n\tglyphWidths: glyphWidths,\n\tkernPairs: kernPairs\n};\n\nconst initFont = font => {\n return [font.FontName, {\n attributes: font,\n glyphWidths: {},\n kernPairs: {}\n }];\n};\nconst expandData = data => {\n const {\n attributes,\n glyphWidths,\n kernPairs\n } = data;\n const fonts = attributes.map(initFont);\n Object.keys(glyphWidths).forEach(key => {\n glyphWidths[key].forEach((value, index) => {\n if (value) fonts[index][1].glyphWidths[key] = value;\n });\n });\n Object.keys(kernPairs).forEach(key => {\n kernPairs[key].forEach((value, index) => {\n if (value) fonts[index][1].kernPairs[key] = value;\n });\n });\n return Object.fromEntries(fonts);\n};\n\nconst STANDARD_FONTS = expandData(data);\nconst createStandardFont = PDFFont => class StandardFont extends PDFFont {\n constructor(document, name, id) {\n super();\n this.document = document;\n this.name = name;\n this.id = id;\n this.font = AFMFont.fromJson(STANDARD_FONTS[this.name]);\n this.ascender = this.font.ascender;\n this.descender = this.font.descender;\n this.bbox = this.font.bbox;\n this.lineGap = this.font.lineGap;\n }\n embed() {\n this.dictionary.data = {\n Type: 'Font',\n BaseFont: this.name,\n Subtype: 'Type1',\n Encoding: 'WinAnsiEncoding'\n };\n return this.dictionary.end();\n }\n encode(text) {\n const encoded = this.font.encodeText(text);\n const glyphs = this.font.glyphsForString(\"\" + text);\n const advances = this.font.advancesForGlyphs(glyphs);\n const positions = [];\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n positions.push({\n xAdvance: advances[i],\n yAdvance: 0,\n xOffset: 0,\n yOffset: 0,\n advanceWidth: this.font.widthOfGlyph(glyph)\n });\n }\n return [encoded, positions];\n }\n encodeGlyphs(glyphs) {\n const res = [];\n for (let glyph of Array.from(glyphs)) {\n res.push((\"00\" + glyph.id.toString(16)).slice(-2));\n }\n return res;\n }\n widthOfString(string, size) {\n const glyphs = this.font.glyphsForString(\"\" + string);\n const advances = this.font.advancesForGlyphs(glyphs);\n let width = 0;\n for (let advance of Array.from(advances)) {\n width += advance;\n }\n const scale = size / 1000;\n return width * scale;\n }\n static isStandardFont(name) {\n return name in STANDARD_FONTS;\n }\n};\n\nconst toHex = function () {\n for (var _len = arguments.length, codePoints = new Array(_len), _key = 0; _key < _len; _key++) {\n codePoints[_key] = arguments[_key];\n }\n const codes = Array.from(codePoints).map(code => (\"0000\" + code.toString(16)).slice(-4));\n return codes.join('');\n};\nconst createEmbeddedFont = PDFFont => class EmbeddedFont extends PDFFont {\n constructor(document, font, id) {\n super();\n this.document = document;\n this.font = font;\n this.id = id;\n this.subset = this.font.createSubset();\n this.unicode = [[0]];\n this.widths = [this.font.getGlyph(0).advanceWidth];\n this.name = this.font.postscriptName;\n this.scale = 1000 / this.font.unitsPerEm;\n this.ascender = this.font.ascent * this.scale;\n this.descender = this.font.descent * this.scale;\n this.xHeight = this.font.xHeight * this.scale;\n this.capHeight = this.font.capHeight * this.scale;\n this.lineGap = this.font.lineGap * this.scale;\n this.bbox = this.font.bbox;\n this.layoutCache = Object.create(null);\n }\n layoutRun(text, features) {\n // passing LTR To force fontkit to not reverse the string\n const run = this.font.layout(text, features, undefined, undefined, 'ltr');\n\n // Normalize position values\n for (let i = 0; i < run.positions.length; i++) {\n const position = run.positions[i];\n for (let key in position) {\n position[key] *= this.scale;\n }\n position.advanceWidth = run.glyphs[i].advanceWidth * this.scale;\n }\n return run;\n }\n layoutCached(text) {\n let cached;\n if (cached = this.layoutCache[text]) {\n return cached;\n }\n const run = this.layoutRun(text);\n this.layoutCache[text] = run;\n return run;\n }\n layout(text, features, onlyWidth) {\n // Skip the cache if any user defined features are applied\n if (onlyWidth == null) {\n onlyWidth = false;\n }\n if (features) {\n return this.layoutRun(text, features);\n }\n const glyphs = onlyWidth ? null : [];\n const positions = onlyWidth ? null : [];\n let advanceWidth = 0;\n\n // Split the string by words to increase cache efficiency.\n // For this purpose, spaces and tabs are a good enough delimeter.\n let last = 0;\n let index = 0;\n while (index <= text.length) {\n let needle;\n if (index === text.length && last < index || (needle = text.charAt(index), [' ', '\\t'].includes(needle))) {\n const run = this.layoutCached(text.slice(last, ++index));\n if (!onlyWidth) {\n glyphs.push(...Array.from(run.glyphs || []));\n positions.push(...Array.from(run.positions || []));\n }\n advanceWidth += run.advanceWidth;\n last = index;\n } else {\n index++;\n }\n }\n return {\n glyphs,\n positions,\n advanceWidth\n };\n }\n encode(text, features) {\n const {\n glyphs,\n positions\n } = this.layout(text, features);\n const res = [];\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n const gid = this.subset.includeGlyph(glyph.id);\n res.push((\"0000\" + gid.toString(16)).slice(-4));\n if (this.widths[gid] == null) {\n this.widths[gid] = glyph.advanceWidth * this.scale;\n }\n if (this.unicode[gid] == null) {\n this.unicode[gid] = glyph.codePoints;\n }\n }\n return [res, positions];\n }\n encodeGlyphs(glyphs) {\n const res = [];\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n const gid = this.subset.includeGlyph(glyph.id);\n res.push((\"0000\" + gid.toString(16)).slice(-4));\n if (this.widths[gid] == null) {\n this.widths[gid] = glyph.advanceWidth * this.scale;\n }\n if (this.unicode[gid] == null) {\n this.unicode[gid] = glyph.codePoints;\n }\n }\n return res;\n }\n widthOfString(string, size, features) {\n const width = this.layout(string, features, true).advanceWidth;\n const scale = size / 1000;\n return width * scale;\n }\n embed() {\n const isCFF = this.subset.cff != null;\n const fontFile = this.document.ref();\n if (isCFF) {\n fontFile.data.Subtype = 'CIDFontType0C';\n }\n fontFile.end(this.subset.encode());\n const familyClass = ((this.font['OS/2'] != null ? this.font['OS/2'].sFamilyClass : undefined) || 0) >> 8;\n let flags = 0;\n if (this.font.post.isFixedPitch) {\n flags |= 1 << 0;\n }\n if (1 <= familyClass && familyClass <= 7) {\n flags |= 1 << 1;\n }\n flags |= 1 << 2; // assume the font uses non-latin characters\n if (familyClass === 10) {\n flags |= 1 << 3;\n }\n if (this.font.head.macStyle.italic) {\n flags |= 1 << 6;\n }\n\n // generate a random tag (6 uppercase letters. 65 is the char code for 'A')\n const tag = [0, 1, 2, 3, 4, 5].map(() => String.fromCharCode(Math.random() * 26 + 65)).join('');\n const name = tag + '+' + this.font.postscriptName;\n const {\n bbox\n } = this.font;\n const descriptor = this.document.ref({\n Type: 'FontDescriptor',\n FontName: name,\n Flags: flags,\n FontBBox: [bbox.minX * this.scale, bbox.minY * this.scale, bbox.maxX * this.scale, bbox.maxY * this.scale],\n ItalicAngle: this.font.italicAngle,\n Ascent: this.ascender,\n Descent: this.descender,\n CapHeight: (this.font.capHeight || this.font.ascent) * this.scale,\n XHeight: (this.font.xHeight || 0) * this.scale,\n StemV: 0\n }); // not sure how to calculate this\n\n if (isCFF) {\n descriptor.data.FontFile3 = fontFile;\n } else {\n descriptor.data.FontFile2 = fontFile;\n }\n descriptor.end();\n const descendantFontData = {\n Type: 'Font',\n Subtype: 'CIDFontType0',\n BaseFont: name,\n CIDSystemInfo: {\n Registry: new String('Adobe'),\n Ordering: new String('Identity'),\n Supplement: 0\n },\n FontDescriptor: descriptor,\n W: [0, this.widths]\n };\n if (!isCFF) {\n descendantFontData.Subtype = 'CIDFontType2';\n descendantFontData.CIDToGIDMap = 'Identity';\n }\n const descendantFont = this.document.ref(descendantFontData);\n descendantFont.end();\n this.dictionary.data = {\n Type: 'Font',\n Subtype: 'Type0',\n BaseFont: name,\n Encoding: 'Identity-H',\n DescendantFonts: [descendantFont],\n ToUnicode: this.toUnicodeCmap()\n };\n return this.dictionary.end();\n }\n\n // Maps the glyph ids encoded in the PDF back to unicode strings\n // Because of ligature substitutions and the like, there may be one or more\n // unicode characters represented by each glyph.\n toUnicodeCmap() {\n const cmap = this.document.ref();\n let entries = [];\n let unicodeMap = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange';\n for (let [index, codePoints] of this.unicode.entries()) {\n const encoded = [];\n if (entries.length >= 100) {\n unicodeMap += '\\n' + entries.length + ' beginbfchar\\n' + entries.join('\\n') + '\\nendbfchar';\n entries = [];\n }\n // encode codePoints to utf16\n for (let value of codePoints) {\n if (value > 0xffff) {\n value -= 0x10000;\n encoded.push(toHex(value >>> 10 & 0x3ff | 0xd800));\n value = 0xdc00 | value & 0x3ff;\n }\n encoded.push(toHex(value));\n }\n\n // eslint-disable-next-line no-useless-concat\n entries.push('<' + toHex(index) + '>' + '<' + encoded.join(' ') + '>');\n }\n if (entries.length) {\n unicodeMap += '\\n' + entries.length + ' beginbfchar\\n' + entries.join('\\n') + '\\nendbfchar\\n';\n }\n unicodeMap += 'endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend';\n cmap.end(unicodeMap);\n return cmap;\n }\n};\n\nclass PDFFont {\n static open(document, src, family, id) {\n let font;\n if (typeof src === 'string') {\n if (StandardFont.isStandardFont(src)) {\n return new StandardFont(document, src, id);\n }\n {\n throw new Error(\"Can't open \" + src + \" in browser build\");\n }\n } else if (src instanceof Uint8Array) {\n font = fontkit.create(src, family);\n } else if (src instanceof ArrayBuffer) {\n font = fontkit.create(new Uint8Array(src), family);\n } else if (typeof src === 'object') {\n font = src;\n }\n if (font == null) {\n throw new Error('Not a supported font format or standard PDF font.');\n }\n return new EmbeddedFont(document, font, id);\n }\n encode() {\n throw new Error('Must be implemented by subclasses');\n }\n widthOfString() {\n throw new Error('Must be implemented by subclasses');\n }\n ref() {\n return this.dictionary != null ? this.dictionary : this.dictionary = this.document.ref();\n }\n finalize() {\n if (this.embedded || this.dictionary == null) {\n return;\n }\n this.embed();\n return this.embedded = true;\n }\n embed() {\n throw new Error('Must be implemented by subclasses');\n }\n lineHeight(size, includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\n const gap = includeGap ? this.lineGap : 0;\n return (this.ascender + gap - this.descender) / 1000 * size;\n }\n}\nconst StandardFont = createStandardFont(PDFFont);\nconst EmbeddedFont = createEmbeddedFont(PDFFont);\n\nvar FontsMixin = {\n initFonts() {\n // Lookup table for embedded fonts\n this._fontFamilies = {};\n this._fontCount = 0;\n\n // Font state\n this._fontSize = 12;\n this._font = null;\n this._registeredFonts = {};\n\n // Set the default font\n return this.font('Helvetica');\n },\n font(src, family, size) {\n let cacheKey;\n let font;\n if (typeof family === 'number') {\n size = family;\n family = null;\n }\n\n // check registered fonts if src is a string\n if (typeof src === 'string' && this._registeredFonts[src]) {\n cacheKey = src;\n ({\n src,\n family\n } = this._registeredFonts[src]);\n } else {\n cacheKey = family || src;\n if (typeof cacheKey !== 'string') {\n cacheKey = null;\n }\n }\n if (size != null) {\n this.fontSize(size);\n }\n\n // fast path: check if the font is already in the PDF\n if (font = this._fontFamilies[cacheKey]) {\n this._font = font;\n return this;\n }\n\n // load the font\n const id = \"F\" + ++this._fontCount;\n this._font = PDFFont.open(this, src, family, id);\n\n // check for existing font familes with the same name already in the PDF\n // useful if the font was passed as a buffer\n if (font = this._fontFamilies[this._font.name]) {\n this._font = font;\n return this;\n }\n\n // save the font for reuse later\n if (cacheKey) {\n this._fontFamilies[cacheKey] = this._font;\n }\n if (this._font.name) {\n this._fontFamilies[this._font.name] = this._font;\n }\n return this;\n },\n fontSize(_fontSize) {\n this._fontSize = _fontSize;\n return this;\n },\n currentLineHeight(includeGap) {\n if (includeGap == null) {\n includeGap = false;\n }\n return this._font.lineHeight(this._fontSize, includeGap);\n },\n registerFont(name, src, family) {\n this._registeredFonts[name] = {\n src,\n family\n };\n return this;\n }\n};\n\nconst {\n number\n} = PDFObject$1;\nvar TextMixin = {\n initText() {\n this._line = this._line.bind(this);\n\n // Current coordinates\n this.x = 0;\n this.y = 0;\n return this._lineGap = 0;\n },\n _text(text, x, y, options, lineCallback) {\n options = this._initOptions(x, y, options);\n\n // Convert text to a string\n text = text == null ? '' : \"\" + text;\n\n // if the wordSpacing option is specified, remove multiple consecutive spaces\n if (options.wordSpacing) {\n text = text.replace(/\\s{2,}/g, ' ');\n }\n const addStructure = () => {\n if (options.structParent) {\n options.structParent.add(this.struct(options.structType || 'P', [this.markStructureContent(options.structType || 'P')]));\n }\n };\n for (let line of text.split('\\n')) {\n addStructure();\n lineCallback(line, options);\n }\n return this;\n },\n text(text, x, y, options) {\n return this._text(text, x, y, options, this._line);\n },\n widthOfString(string, options) {\n if (options === void 0) {\n options = {};\n }\n return this._font.widthOfString(string, this._fontSize, options.features) + (options.characterSpacing || 0) * (string.length - 1);\n },\n _initOptions(x, y, options) {\n if (x === void 0) {\n x = {};\n }\n if (options === void 0) {\n options = {};\n }\n if (typeof x === 'object') {\n options = x;\n x = null;\n }\n\n // shallow clone options object\n /**\n * @type {Object}\n */\n const result = Object.assign({}, options);\n\n // extend options with previous values for continued text\n if (this._textOptions) {\n for (let key in this._textOptions) {\n const val = this._textOptions[key];\n if (key !== 'continued') {\n if (result[key] === undefined) {\n result[key] = val;\n }\n }\n }\n }\n\n // Update the current position\n if (x != null) {\n this.x = x;\n }\n if (y != null) {\n this.y = y;\n }\n\n // wrap to margins if no x or y position passed\n if (result.lineBreak !== false) {\n if (result.width == null) {\n result.width = this.page.width - this.x - this.page.margins.right;\n }\n result.width = Math.max(result.width, 0);\n }\n if (!result.columns) {\n result.columns = 0;\n }\n if (result.columnGap == null) {\n result.columnGap = 18;\n } // 1/4 inch\n\n return result;\n },\n _line(text, options) {\n if (options === void 0) {\n options = {};\n }\n this._fragment(text, this.x, this.y, options);\n return this.x += this.widthOfString(text);\n },\n _fragment(text, x, y, options) {\n text = (\"\" + text).replace(/\\n/g, '');\n if (text.length === 0) return;\n const [encoded, positions] = this._font.encode(text, options.features);\n const dy = this._font.ascender / 1000 * this._fontSize;\n this._glyphs(encoded, positions, x, y + dy, options);\n },\n _glyphs(encoded, positions, x, y, options) {\n const commands = [];\n const scale = this._fontSize / 1000;\n let i;\n let last = 0;\n let hadOffset = false;\n this.save();\n\n // flip coordinate system\n this.transform(1, 0, 0, -1, 0, this.page.height);\n y = this.page.height - y;\n\n // add current font to page if necessary\n if (this.page.fonts[this._font.id] == null) {\n this.page.fonts[this._font.id] = this._font.ref();\n }\n\n // begin the text object\n this.addContent('BT');\n\n // text position\n this.addContent(\"1 0 0 1 \" + number(x) + \" \" + number(y) + \" Tm\");\n\n // font and font size\n this.addContent(\"/\" + this._font.id + \" \" + number(this._fontSize) + \" Tf\");\n\n // rendering mode\n const mode = options.fill && options.stroke ? 2 : options.stroke ? 1 : 0;\n if (mode) {\n this.addContent(mode + \" Tr\");\n }\n\n // Adds a segment of text to the TJ command buffer\n const addSegment = cur => {\n if (last < cur) {\n const hex = encoded.slice(last, cur).join('');\n const advance = positions[cur - 1].xAdvance - positions[cur - 1].advanceWidth;\n commands.push(\"<\" + hex + \"> \" + number(-advance));\n }\n return last = cur;\n };\n\n // Flushes the current TJ commands to the output stream\n const flush = i => {\n addSegment(i);\n if (commands.length > 0) {\n this.addContent(\"[\" + commands.join(' ') + \"] TJ\");\n return commands.length = 0;\n }\n };\n for (i = 0; i < positions.length; i++) {\n // If we have an x or y offset, we have to break out of the current TJ command\n // so we can move the text position.\n const pos = positions[i];\n if (pos.xOffset || pos.yOffset) {\n // Flush the current buffer\n flush(i);\n\n // Move the text position and flush just the current character\n this.addContent(\"1 0 0 1 \" + number(x + pos.xOffset * scale) + \" \" + number(y + pos.yOffset * scale) + \" Tm\");\n flush(i + 1);\n hadOffset = true;\n } else {\n // If the last character had an offset, reset the text position\n if (hadOffset) {\n this.addContent(\"1 0 0 1 \" + number(x) + \" \" + number(y) + \" Tm\");\n hadOffset = false;\n }\n\n // Group segments that don't have any advance adjustments\n if (pos.xAdvance - pos.advanceWidth !== 0) {\n addSegment(i + 1);\n }\n }\n x += pos.xAdvance * scale;\n }\n\n // Flush any remaining commands\n flush(i);\n\n // end the text object\n this.addContent('ET');\n\n // restore flipped coordinate system\n return this.restore();\n }\n};\n\nconst COLOR_SPACE_MAP = {\n 1: 'DeviceGray',\n 3: 'DeviceRGB',\n 4: 'DeviceCMYK'\n};\nclass JPEG {\n constructor(data, label) {\n this.data = data;\n this.label = label;\n this.orientation = 1;\n if (this.data.readUInt16BE(0) !== 0xffd8) {\n throw 'SOI not found in JPEG';\n }\n const markers = _JPEG.decode(this.data);\n for (let i = 0; i < markers.length; i += 1) {\n const marker = markers[i];\n if (marker.name === 'EXIF' && marker.entries.orientation) {\n this.orientation = marker.entries.orientation;\n }\n if (marker.name === 'SOF') {\n this.bits || (this.bits = marker.precision);\n this.width || (this.width = marker.width);\n this.height || (this.height = marker.height);\n this.colorSpace || (this.colorSpace = COLOR_SPACE_MAP[marker.numberOfComponents]);\n }\n }\n this.obj = null;\n }\n embed(document) {\n if (this.obj) {\n return;\n }\n this.obj = document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.bits,\n Width: this.width,\n Height: this.height,\n ColorSpace: this.colorSpace,\n Filter: 'DCTDecode'\n });\n\n // add extra decode params for CMYK images. By swapping the\n // min and max values from the default, we invert the colors. See\n // section 4.8.4 of the spec.\n if (this.colorSpace === 'DeviceCMYK') {\n this.obj.data['Decode'] = [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0];\n }\n this.obj.end(this.data);\n\n // free memory\n return this.data = null;\n }\n}\n\nclass PNGImage {\n constructor(data, label) {\n this.label = label;\n this.image = new PNG(data);\n this.width = this.image.width;\n this.height = this.image.height;\n this.imgData = this.image.imgData;\n this.obj = null;\n }\n embed(document) {\n let dataDecoded = false;\n this.document = document;\n if (this.obj) {\n return;\n }\n const hasAlphaChannel = this.image.hasAlphaChannel;\n const isInterlaced = this.image.interlaceMethod === 1;\n this.obj = this.document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: hasAlphaChannel ? 8 : this.image.bits,\n Width: this.width,\n Height: this.height,\n Filter: 'FlateDecode'\n });\n if (!hasAlphaChannel) {\n const params = this.document.ref({\n Predictor: isInterlaced ? 1 : 15,\n Colors: this.image.colors,\n BitsPerComponent: this.image.bits,\n Columns: this.width\n });\n this.obj.data.DecodeParms = params;\n params.end();\n }\n if (this.image.palette.length === 0) {\n this.obj.data.ColorSpace = this.image.colorSpace;\n } else {\n // embed the color palette in the PDF as an object stream\n const palette = this.document.ref();\n palette.end(Buffer$2.from(this.image.palette));\n\n // build the color space array for the image\n this.obj.data.ColorSpace = ['Indexed', 'DeviceRGB', this.image.palette.length / 3 - 1, palette];\n }\n\n // For PNG color types 0, 2 and 3, the transparency data is stored in\n // a dedicated PNG chunk.\n if (this.image.transparency.grayscale != null) {\n // Use Color Key Masking (spec section 4.8.5)\n // An array with N elements, where N is two times the number of color components.\n const val = this.image.transparency.grayscale;\n this.obj.data.Mask = [val, val];\n } else if (this.image.transparency.rgb) {\n // Use Color Key Masking (spec section 4.8.5)\n // An array with N elements, where N is two times the number of color components.\n const {\n rgb\n } = this.image.transparency;\n const mask = [];\n for (let x of rgb) {\n mask.push(x, x);\n }\n this.obj.data.Mask = mask;\n } else if (this.image.transparency.indexed) {\n // Create a transparency SMask for the image based on the data\n // in the PLTE and tRNS sections. See below for details on SMasks.\n dataDecoded = true;\n return this.loadIndexedAlphaChannel();\n } else if (hasAlphaChannel) {\n // For PNG color types 4 and 6, the transparency data is stored as a alpha\n // channel mixed in with the main image data. Separate this data out into an\n // SMask object and store it separately in the PDF.\n dataDecoded = true;\n return this.splitAlphaChannel();\n }\n if (isInterlaced && !dataDecoded) {\n return this.decodeData();\n }\n this.finalize();\n }\n finalize() {\n if (this.alphaChannel) {\n const sMask = this.document.ref({\n Type: 'XObject',\n Subtype: 'Image',\n Height: this.height,\n Width: this.width,\n BitsPerComponent: 8,\n Filter: 'FlateDecode',\n ColorSpace: 'DeviceGray',\n Decode: [0, 1]\n });\n sMask.end(this.alphaChannel);\n this.obj.data.SMask = sMask;\n }\n\n // add the actual image data\n this.obj.end(this.imgData);\n\n // free memory\n this.image = null;\n return this.imgData = null;\n }\n splitAlphaChannel() {\n return this.image.decodePixels(pixels => {\n let a;\n let p;\n const colorCount = this.image.colors;\n const pixelCount = this.width * this.height;\n const imgData = Buffer$2.alloc(pixelCount * colorCount);\n const alphaChannel = Buffer$2.alloc(pixelCount);\n let i = p = a = 0;\n const len = pixels.length;\n // For 16bit images copy only most significant byte (MSB) - PNG data is always stored in network byte order (MSB first)\n const skipByteCount = this.image.bits === 16 ? 1 : 0;\n while (i < len) {\n for (let colorIndex = 0; colorIndex < colorCount; colorIndex++) {\n imgData[p++] = pixels[i++];\n i += skipByteCount;\n }\n alphaChannel[a++] = pixels[i++];\n i += skipByteCount;\n }\n this.imgData = zlib.deflateSync(imgData);\n this.alphaChannel = zlib.deflateSync(alphaChannel);\n return this.finalize();\n });\n }\n loadIndexedAlphaChannel() {\n const transparency = this.image.transparency.indexed;\n return this.image.decodePixels(pixels => {\n const alphaChannel = Buffer$2.alloc(this.width * this.height);\n let i = 0;\n for (let j = 0, end = pixels.length; j < end; j++) {\n alphaChannel[i++] = transparency[pixels[j]];\n }\n this.alphaChannel = zlib.deflateSync(alphaChannel);\n return this.finalize();\n });\n }\n decodeData() {\n this.image.decodePixels(pixels => {\n this.imgData = zlib.deflateSync(pixels);\n this.finalize();\n });\n }\n}\n\nclass PDFImage {\n static open(src, label) {\n let data;\n if (Buffer$2.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer$2.from(new Uint8Array(src));\n } else {\n let match;\n if (match = /^data:.+?;base64,(.*)$/.exec(src)) {\n data = Buffer$2.from(match[1], 'base64');\n } else {\n data = fs.readFileSync(src);\n if (!data) {\n return;\n }\n }\n }\n if (data[0] === 0xff && data[1] === 0xd8) {\n return new JPEG(data, label);\n } else if (data[0] === 0x89 && data.toString('ascii', 1, 4) === 'PNG') {\n return new PNGImage(data, label);\n } else {\n throw new Error('Unknown image format.');\n }\n }\n}\n\nvar ImagesMixin = {\n initImages() {\n this._imageRegistry = {};\n return this._imageCount = 0;\n },\n embedImage(src) {\n let image;\n if (typeof src === 'string') {\n image = this._imageRegistry[src];\n }\n if (!image) {\n if (src.width && src.height) {\n image = src;\n } else {\n image = this.openImage(src);\n }\n }\n if (!image.obj) {\n image.embed(this);\n }\n return image;\n },\n image(src, x, y, options) {\n if (options === void 0) {\n options = {};\n }\n let bh;\n let bp;\n let bw;\n let image;\n let ip;\n let left;\n let left1;\n let rotateAngle;\n let originX;\n let originY;\n if (typeof x === 'object') {\n options = x;\n x = null;\n }\n\n // Ignore orientation based on document options or image options\n const ignoreOrientation = options.ignoreOrientation || options.ignoreOrientation !== false && this.options.ignoreOrientation;\n x = (left = x != null ? x : options.x) != null ? left : this.x;\n y = (left1 = y != null ? y : options.y) != null ? left1 : this.y;\n if (typeof src === 'string') {\n image = this._imageRegistry[src];\n }\n if (!image) {\n if (src.width && src.height) {\n image = src;\n } else {\n image = this.openImage(src);\n }\n }\n if (!image.obj) {\n image.embed(this);\n }\n if (this.page.xobjects[image.label] == null) {\n this.page.xobjects[image.label] = image.obj;\n }\n let {\n width,\n height\n } = image;\n\n // If EXIF orientation calls for it, swap width and height\n if (!ignoreOrientation && image.orientation > 4) {\n [width, height] = [height, width];\n }\n let w = options.width || width;\n let h = options.height || height;\n if (options.width && !options.height) {\n const wp = w / width;\n w = width * wp;\n h = height * wp;\n } else if (options.height && !options.width) {\n const hp = h / height;\n w = width * hp;\n h = height * hp;\n } else if (options.scale) {\n w = width * options.scale;\n h = height * options.scale;\n } else if (options.fit) {\n [bw, bh] = options.fit;\n bp = bw / bh;\n ip = width / height;\n if (ip > bp) {\n w = bw;\n h = bw / ip;\n } else {\n h = bh;\n w = bh * ip;\n }\n } else if (options.cover) {\n [bw, bh] = options.cover;\n bp = bw / bh;\n ip = width / height;\n if (ip > bp) {\n h = bh;\n w = bh * ip;\n } else {\n w = bw;\n h = bw / ip;\n }\n }\n if (options.fit || options.cover) {\n if (options.align === 'center') {\n x = x + bw / 2 - w / 2;\n } else if (options.align === 'right') {\n x = x + bw - w;\n }\n if (options.valign === 'center') {\n y = y + bh / 2 - h / 2;\n } else if (options.valign === 'bottom') {\n y = y + bh - h;\n }\n }\n if (!ignoreOrientation) {\n switch (image.orientation) {\n // No orientation (need to flip image, though, because of the default transform matrix on the document)\n default:\n case 1:\n h = -h;\n y -= h;\n rotateAngle = 0;\n break;\n // Flip Horizontal\n case 2:\n w = -w;\n h = -h;\n x -= w;\n y -= h;\n rotateAngle = 0;\n break;\n // Rotate 180 degrees\n case 3:\n originX = x;\n originY = y;\n h = -h;\n x -= w;\n rotateAngle = 180;\n break;\n // Flip vertical\n case 4:\n // Do nothing, image will be flipped\n\n break;\n // Flip horizontally and rotate 270 degrees CW\n case 5:\n originX = x;\n originY = y;\n [w, h] = [h, w];\n y -= h;\n rotateAngle = 90;\n break;\n // Rotate 90 degrees CW\n case 6:\n originX = x;\n originY = y;\n [w, h] = [h, w];\n h = -h;\n rotateAngle = 90;\n break;\n // Flip horizontally and rotate 90 degrees CW\n case 7:\n originX = x;\n originY = y;\n [w, h] = [h, w];\n h = -h;\n w = -w;\n x -= w;\n rotateAngle = 90;\n break;\n // Rotate 270 degrees CW\n case 8:\n originX = x;\n originY = y;\n [w, h] = [h, w];\n h = -h;\n x -= w;\n y -= h;\n rotateAngle = -90;\n break;\n }\n } else {\n h = -h;\n y -= h;\n rotateAngle = 0;\n }\n\n // Set the current y position to below the image if it is in the document flow\n if (this.y === y) {\n this.y += h;\n }\n this.save();\n if (rotateAngle) {\n this.rotate(rotateAngle, {\n origin: [originX, originY]\n });\n }\n this.transform(w, 0, 0, h, x, y);\n this.addContent(\"/\" + image.label + \" Do\");\n this.restore();\n return this;\n },\n openImage(src) {\n let image;\n if (typeof src === 'string') {\n image = this._imageRegistry[src];\n }\n if (!image) {\n image = PDFImage.open(src, \"I\" + ++this._imageCount);\n if (typeof src === 'string') {\n this._imageRegistry[src] = image;\n }\n }\n return image;\n }\n};\n\nvar AnnotationsMixin = {\n annotate(x, y, w, h, options) {\n options.Type = 'Annot';\n options.Rect = this._convertRect(x, y, w, h);\n options.Border = [0, 0, 0];\n if (options.Subtype === 'Link' && typeof options.F === 'undefined') {\n options.F = 1 << 2; // Print Annotation Flag\n }\n if (options.Subtype !== 'Link') {\n if (options.C == null) {\n options.C = this._normalizeColor(options.color || [0, 0, 0]);\n }\n } // convert colors\n delete options.color;\n if (typeof options.Dest === 'string') {\n options.Dest = new String(options.Dest);\n }\n\n // Capitalize keys\n for (let key in options) {\n const val = options[key];\n options[key[0].toUpperCase() + key.slice(1)] = val;\n }\n const ref = this.ref(options);\n this.page.annotations.push(ref);\n ref.end();\n return this;\n },\n note(x, y, w, h, contents, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Text';\n options.Contents = new String(contents);\n options.Name = 'Comment';\n if (options.color == null) {\n options.color = [243, 223, 92];\n }\n return this.annotate(x, y, w, h, options);\n },\n goTo(x, y, w, h, name, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Link';\n options.A = this.ref({\n S: 'GoTo',\n D: new String(name)\n });\n options.A.end();\n return this.annotate(x, y, w, h, options);\n },\n link(x, y, w, h, url, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Link';\n if (typeof url === 'number') {\n // Link to a page in the document (the page must already exist)\n const pages = this._root.data.Pages.data;\n if (url >= 0 && url < pages.Kids.length) {\n options.A = this.ref({\n S: 'GoTo',\n D: [pages.Kids[url], 'XYZ', null, null, null]\n });\n options.A.end();\n } else {\n throw new Error(\"The document has no page \" + url);\n }\n } else {\n // Link to an external url\n options.A = this.ref({\n S: 'URI',\n URI: new String(url)\n });\n options.A.end();\n }\n return this.annotate(x, y, w, h, options);\n },\n _markup(x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n const [x1, y1, x2, y2] = this._convertRect(x, y, w, h);\n options.QuadPoints = [x1, y2, x2, y2, x1, y1, x2, y1];\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n highlight(x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Highlight';\n if (options.color == null) {\n options.color = [241, 238, 148];\n }\n return this._markup(x, y, w, h, options);\n },\n underline(x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Underline';\n return this._markup(x, y, w, h, options);\n },\n strike(x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'StrikeOut';\n return this._markup(x, y, w, h, options);\n },\n lineAnnotation(x1, y1, x2, y2, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Line';\n options.Contents = new String();\n options.L = [x1, this.page.height - y1, x2, this.page.height - y2];\n return this.annotate(x1, y1, x2, y2, options);\n },\n rectAnnotation(x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Square';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n ellipseAnnotation(x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'Circle';\n options.Contents = new String();\n return this.annotate(x, y, w, h, options);\n },\n textAnnotation(x, y, w, h, text, options) {\n if (options === void 0) {\n options = {};\n }\n options.Subtype = 'FreeText';\n options.Contents = new String(text);\n options.DA = new String();\n return this.annotate(x, y, w, h, options);\n },\n fileAnnotation(x, y, w, h, file, options) {\n if (file === void 0) {\n file = {};\n }\n if (options === void 0) {\n options = {};\n }\n // create hidden file\n const filespec = this.file(file.src, Object.assign({\n hidden: true\n }, file));\n options.Subtype = 'FileAttachment';\n options.FS = filespec;\n\n // add description from filespec unless description (Contents) has already been set\n if (options.Contents) {\n options.Contents = new String(options.Contents);\n } else if (filespec.data.Desc) {\n options.Contents = filespec.data.Desc;\n }\n return this.annotate(x, y, w, h, options);\n },\n _convertRect(x1, y1, w, h) {\n // flip y1 and y2\n let y2 = y1;\n y1 += h;\n\n // make x2\n let x2 = x1 + w;\n\n // apply current transformation matrix to points\n const [m0, m1, m2, m3, m4, m5] = this._ctm;\n x1 = m0 * x1 + m2 * y1 + m4;\n y1 = m1 * x1 + m3 * y1 + m5;\n x2 = m0 * x2 + m2 * y2 + m4;\n y2 = m1 * x2 + m3 * y2 + m5;\n return [x1, y1, x2, y2];\n }\n};\n\nclass PDFOutline {\n constructor(document, parent, title, dest, options) {\n if (options === void 0) {\n options = {\n expanded: false\n };\n }\n this.document = document;\n this.options = options;\n this.outlineData = {};\n if (dest !== null) {\n this.outlineData['Dest'] = [dest.dictionary, 'Fit'];\n }\n if (parent !== null) {\n this.outlineData['Parent'] = parent;\n }\n if (title !== null) {\n this.outlineData['Title'] = new String(title);\n }\n this.dictionary = this.document.ref(this.outlineData);\n this.children = [];\n }\n addItem(title, options) {\n if (options === void 0) {\n options = {\n expanded: false\n };\n }\n const result = new PDFOutline(this.document, this.dictionary, title, this.document.page, options);\n this.children.push(result);\n return result;\n }\n endOutline() {\n if (this.children.length > 0) {\n if (this.options.expanded) {\n this.outlineData.Count = this.children.length;\n }\n const first = this.children[0],\n last = this.children[this.children.length - 1];\n this.outlineData.First = first.dictionary;\n this.outlineData.Last = last.dictionary;\n for (let i = 0, len = this.children.length; i < len; i++) {\n const child = this.children[i];\n if (i > 0) {\n child.outlineData.Prev = this.children[i - 1].dictionary;\n }\n if (i < this.children.length - 1) {\n child.outlineData.Next = this.children[i + 1].dictionary;\n }\n child.endOutline();\n }\n }\n return this.dictionary.end();\n }\n}\n\nvar OutlineMixin = {\n initOutline() {\n return this.outline = new PDFOutline(this, null, null, null);\n },\n endOutline() {\n this.outline.endOutline();\n if (this.outline.children.length > 0) {\n this._root.data.Outlines = this.outline.dictionary;\n return this._root.data.PageMode = 'UseOutlines';\n }\n }\n};\n\n/*\nPDFStructureContent - a reference to a marked structure content\nBy Ben Schmidt\n*/\n\nclass PDFStructureContent {\n constructor(pageRef, mcid) {\n this.refs = [{\n pageRef,\n mcid\n }];\n }\n push(structContent) {\n structContent.refs.forEach(ref => this.refs.push(ref));\n }\n}\n\n/*\nPDFStructureElement - represents an element in the PDF logical structure tree\nBy Ben Schmidt\n*/\n\nclass PDFStructureElement {\n constructor(document, type, options, children) {\n if (options === void 0) {\n options = {};\n }\n if (children === void 0) {\n children = null;\n }\n this.document = document;\n this._attached = false;\n this._ended = false;\n this._flushed = false;\n this.dictionary = document.ref({\n // Type: \"StructElem\",\n S: type\n });\n const data = this.dictionary.data;\n if (Array.isArray(options) || this._isValidChild(options)) {\n children = options;\n options = {};\n }\n if (typeof options.title !== 'undefined') {\n data.T = new String(options.title);\n }\n if (typeof options.lang !== 'undefined') {\n data.Lang = new String(options.lang);\n }\n if (typeof options.alt !== 'undefined') {\n data.Alt = new String(options.alt);\n }\n if (typeof options.expanded !== 'undefined') {\n data.E = new String(options.expanded);\n }\n if (typeof options.actual !== 'undefined') {\n data.ActualText = new String(options.actual);\n }\n this._children = [];\n if (children) {\n if (!Array.isArray(children)) {\n children = [children];\n }\n children.forEach(child => this.add(child));\n this.end();\n }\n }\n add(child) {\n if (this._ended) {\n throw new Error(\"Cannot add child to already-ended structure element\");\n }\n if (!this._isValidChild(child)) {\n throw new Error(\"Invalid structure element child\");\n }\n if (child instanceof PDFStructureElement) {\n child.setParent(this.dictionary);\n if (this._attached) {\n child.setAttached();\n }\n }\n if (child instanceof PDFStructureContent) {\n this._addContentToParentTree(child);\n }\n if (typeof child === 'function' && this._attached) {\n // _contentForClosure() adds the content to the parent tree\n child = this._contentForClosure(child);\n }\n this._children.push(child);\n return this;\n }\n _addContentToParentTree(content) {\n content.refs.forEach(_ref => {\n let {\n pageRef,\n mcid\n } = _ref;\n const pageStructParents = this.document.getStructParentTree().get(pageRef.data.StructParents);\n pageStructParents[mcid] = this.dictionary;\n });\n }\n setParent(parentRef) {\n if (this.dictionary.data.P) {\n throw new Error(\"Structure element added to more than one parent\");\n }\n this.dictionary.data.P = parentRef;\n this._flush();\n }\n setAttached() {\n if (this._attached) {\n return;\n }\n this._children.forEach((child, index) => {\n if (child instanceof PDFStructureElement) {\n child.setAttached();\n }\n if (typeof child === 'function') {\n this._children[index] = this._contentForClosure(child);\n }\n });\n this._attached = true;\n this._flush();\n }\n end() {\n if (this._ended) {\n return;\n }\n this._children.filter(child => child instanceof PDFStructureElement).forEach(child => child.end());\n this._ended = true;\n this._flush();\n }\n _isValidChild(child) {\n return child instanceof PDFStructureElement || child instanceof PDFStructureContent || typeof child === 'function';\n }\n _contentForClosure(closure) {\n const content = this.document.markStructureContent(this.dictionary.data.S);\n closure();\n this.document.endMarkedContent();\n this._addContentToParentTree(content);\n return content;\n }\n _isFlushable() {\n if (!this.dictionary.data.P || !this._ended) {\n return false;\n }\n return this._children.every(child => {\n if (typeof child === 'function') {\n return false;\n }\n if (child instanceof PDFStructureElement) {\n return child._isFlushable();\n }\n return true;\n });\n }\n _flush() {\n if (this._flushed || !this._isFlushable()) {\n return;\n }\n this.dictionary.data.K = [];\n this._children.forEach(child => this._flushChild(child));\n this.dictionary.end();\n\n // free memory used by children; the dictionary itself may still be\n // referenced by a parent structure element or root, but we can\n // at least trim the tree here\n this._children = [];\n this.dictionary.data.K = null;\n this._flushed = true;\n }\n _flushChild(child) {\n if (child instanceof PDFStructureElement) {\n this.dictionary.data.K.push(child.dictionary);\n }\n if (child instanceof PDFStructureContent) {\n child.refs.forEach(_ref2 => {\n let {\n pageRef,\n mcid\n } = _ref2;\n if (!this.dictionary.data.Pg) {\n this.dictionary.data.Pg = pageRef;\n }\n if (this.dictionary.data.Pg === pageRef) {\n this.dictionary.data.K.push(mcid);\n } else {\n this.dictionary.data.K.push({\n Type: 'MCR',\n Pg: pageRef,\n MCID: mcid\n });\n }\n });\n }\n }\n}\n\n/*\nPDFNumberTree - represents a number tree object\n*/\n\nclass PDFNumberTree extends PDFTree {\n _compareKeys(a, b) {\n return parseInt(a) - parseInt(b);\n }\n _keysName() {\n return 'Nums';\n }\n _dataForKey(k) {\n return parseInt(k);\n }\n}\n\n/*\nMarkings mixin - support marked content sequences in content streams\nBy Ben Schmidt\n*/\n\nvar MarkingsMixin = {\n initMarkings(options) {\n this.structChildren = [];\n if (options.tagged) {\n this.getMarkInfoDictionary().data.Marked = true;\n this.getStructTreeRoot();\n }\n },\n markContent(tag, options) {\n if (options === void 0) {\n options = null;\n }\n if (tag === 'Artifact' || options && options.mcid) {\n let toClose = 0;\n this.page.markings.forEach(marking => {\n if (toClose || marking.structContent || marking.tag === 'Artifact') {\n toClose++;\n }\n });\n while (toClose--) {\n this.endMarkedContent();\n }\n }\n if (!options) {\n this.page.markings.push({\n tag\n });\n this.addContent(\"/\" + tag + \" BMC\");\n return this;\n }\n this.page.markings.push({\n tag,\n options\n });\n const dictionary = {};\n if (typeof options.mcid !== 'undefined') {\n dictionary.MCID = options.mcid;\n }\n if (tag === 'Artifact') {\n if (typeof options.type === 'string') {\n dictionary.Type = options.type;\n }\n if (Array.isArray(options.bbox)) {\n dictionary.BBox = [options.bbox[0], this.page.height - options.bbox[3], options.bbox[2], this.page.height - options.bbox[1]];\n }\n if (Array.isArray(options.attached) && options.attached.every(val => typeof val === 'string')) {\n dictionary.Attached = options.attached;\n }\n }\n if (tag === 'Span') {\n if (options.lang) {\n dictionary.Lang = new String(options.lang);\n }\n if (options.alt) {\n dictionary.Alt = new String(options.alt);\n }\n if (options.expanded) {\n dictionary.E = new String(options.expanded);\n }\n if (options.actual) {\n dictionary.ActualText = new String(options.actual);\n }\n }\n this.addContent(\"/\" + tag + \" \" + PDFObject$1.convert(dictionary) + \" BDC\");\n return this;\n },\n markStructureContent(tag, options) {\n if (options === void 0) {\n options = {};\n }\n const pageStructParents = this.getStructParentTree().get(this.page.structParentTreeKey);\n const mcid = pageStructParents.length;\n pageStructParents.push(null);\n this.markContent(tag, {\n ...options,\n mcid\n });\n const structContent = new PDFStructureContent(this.page.dictionary, mcid);\n this.page.markings.slice(-1)[0].structContent = structContent;\n return structContent;\n },\n endMarkedContent() {\n this.page.markings.pop();\n this.addContent('EMC');\n return this;\n },\n struct(type, options, children) {\n if (options === void 0) {\n options = {};\n }\n if (children === void 0) {\n children = null;\n }\n return new PDFStructureElement(this, type, options, children);\n },\n addStructure(structElem) {\n const structTreeRoot = this.getStructTreeRoot();\n structElem.setParent(structTreeRoot);\n structElem.setAttached();\n this.structChildren.push(structElem);\n if (!structTreeRoot.data.K) {\n structTreeRoot.data.K = [];\n }\n structTreeRoot.data.K.push(structElem.dictionary);\n return this;\n },\n initPageMarkings(pageMarkings) {\n pageMarkings.forEach(marking => {\n if (marking.structContent) {\n const structContent = marking.structContent;\n const newStructContent = this.markStructureContent(marking.tag, marking.options);\n structContent.push(newStructContent);\n this.page.markings.slice(-1)[0].structContent = structContent;\n } else {\n this.markContent(marking.tag, marking.options);\n }\n });\n },\n endPageMarkings(page) {\n const pageMarkings = page.markings;\n pageMarkings.forEach(() => page.write('EMC'));\n page.markings = [];\n return pageMarkings;\n },\n getMarkInfoDictionary() {\n if (!this._root.data.MarkInfo) {\n this._root.data.MarkInfo = this.ref({});\n }\n return this._root.data.MarkInfo;\n },\n getStructTreeRoot() {\n if (!this._root.data.StructTreeRoot) {\n this._root.data.StructTreeRoot = this.ref({\n Type: 'StructTreeRoot',\n ParentTree: new PDFNumberTree(),\n ParentTreeNextKey: 0\n });\n }\n return this._root.data.StructTreeRoot;\n },\n getStructParentTree() {\n return this.getStructTreeRoot().data.ParentTree;\n },\n createStructParentTreeNextKey() {\n // initialise the MarkInfo dictionary\n this.getMarkInfoDictionary();\n const structTreeRoot = this.getStructTreeRoot();\n const key = structTreeRoot.data.ParentTreeNextKey++;\n structTreeRoot.data.ParentTree.add(key, []);\n return key;\n },\n endMarkings() {\n const structTreeRoot = this._root.data.StructTreeRoot;\n if (structTreeRoot) {\n structTreeRoot.end();\n this.structChildren.forEach(structElem => structElem.end());\n }\n if (this._root.data.MarkInfo) {\n this._root.data.MarkInfo.end();\n }\n }\n};\n\nconst FIELD_FLAGS = {\n readOnly: 1,\n required: 2,\n noExport: 4,\n multiline: 0x1000,\n password: 0x2000,\n toggleToOffButton: 0x4000,\n radioButton: 0x8000,\n pushButton: 0x10000,\n combo: 0x20000,\n edit: 0x40000,\n sort: 0x80000,\n multiSelect: 0x200000,\n noSpell: 0x400000\n};\nconst FIELD_JUSTIFY = {\n left: 0,\n center: 1,\n right: 2\n};\nconst VALUE_MAP = {\n value: 'V',\n defaultValue: 'DV'\n};\nconst FORMAT_SPECIAL = {\n zip: '0',\n zipPlus4: '1',\n zip4: '1',\n phone: '2',\n ssn: '3'\n};\nconst FORMAT_DEFAULT = {\n number: {\n nDec: 0,\n sepComma: false,\n negStyle: 'MinusBlack',\n currency: '',\n currencyPrepend: true\n },\n percent: {\n nDec: 0,\n sepComma: false\n }\n};\nvar AcroFormMixin = {\n /**\n * Must call if adding AcroForms to a document. Must also call font() before\n * this method to set the default font.\n */\n initForm() {\n if (!this._font) {\n throw new Error('Must set a font before calling initForm method');\n }\n this._acroform = {\n fonts: {},\n defaultFont: this._font.name\n };\n this._acroform.fonts[this._font.id] = this._font.ref();\n let data = {\n Fields: [],\n NeedAppearances: true,\n DA: new String(\"/\" + this._font.id + \" 0 Tf 0 g\"),\n DR: {\n Font: {}\n }\n };\n data.DR.Font[this._font.id] = this._font.ref();\n const AcroForm = this.ref(data);\n this._root.data.AcroForm = AcroForm;\n return this;\n },\n /**\n * Called automatically by document.js\n */\n endAcroForm() {\n if (this._root.data.AcroForm) {\n if (!Object.keys(this._acroform.fonts).length && !this._acroform.defaultFont) {\n throw new Error('No fonts specified for PDF form');\n }\n let fontDict = this._root.data.AcroForm.data.DR.Font;\n Object.keys(this._acroform.fonts).forEach(name => {\n fontDict[name] = this._acroform.fonts[name];\n });\n this._root.data.AcroForm.data.Fields.forEach(fieldRef => {\n this._endChild(fieldRef);\n });\n this._root.data.AcroForm.end();\n }\n return this;\n },\n _endChild(ref) {\n if (Array.isArray(ref.data.Kids)) {\n ref.data.Kids.forEach(childRef => {\n this._endChild(childRef);\n });\n ref.end();\n }\n return this;\n },\n /**\n * Creates and adds a form field to the document. Form fields are intermediate\n * nodes in a PDF form that are used to specify form name heirarchy and form\n * value defaults.\n * @param {string} name - field name (T attribute in field dictionary)\n * @param {object} options - other attributes to include in field dictionary\n */\n formField(name, options) {\n if (options === void 0) {\n options = {};\n }\n let fieldDict = this._fieldDict(name, null, options);\n let fieldRef = this.ref(fieldDict);\n this._addToParent(fieldRef);\n return fieldRef;\n },\n /**\n * Creates and adds a Form Annotation to the document. Form annotations are\n * called Widget annotations internally within a PDF file.\n * @param {string} name - form field name (T attribute of widget annotation\n * dictionary)\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {object} options\n */\n formAnnotation(name, type, x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n let fieldDict = this._fieldDict(name, type, options);\n fieldDict.Subtype = 'Widget';\n if (fieldDict.F === undefined) {\n fieldDict.F = 4; // print the annotation\n }\n\n // Add Field annot to page, and get it's ref\n this.annotate(x, y, w, h, fieldDict);\n let annotRef = this.page.annotations[this.page.annotations.length - 1];\n return this._addToParent(annotRef);\n },\n formText(name, x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n return this.formAnnotation(name, 'text', x, y, w, h, options);\n },\n formPushButton(name, x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n return this.formAnnotation(name, 'pushButton', x, y, w, h, options);\n },\n formCombo(name, x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n return this.formAnnotation(name, 'combo', x, y, w, h, options);\n },\n formList(name, x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n return this.formAnnotation(name, 'list', x, y, w, h, options);\n },\n formRadioButton(name, x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n return this.formAnnotation(name, 'radioButton', x, y, w, h, options);\n },\n formCheckbox(name, x, y, w, h, options) {\n if (options === void 0) {\n options = {};\n }\n return this.formAnnotation(name, 'checkbox', x, y, w, h, options);\n },\n _addToParent(fieldRef) {\n let parent = fieldRef.data.Parent;\n if (parent) {\n if (!parent.data.Kids) {\n parent.data.Kids = [];\n }\n parent.data.Kids.push(fieldRef);\n } else {\n this._root.data.AcroForm.data.Fields.push(fieldRef);\n }\n return this;\n },\n _fieldDict(name, type, options) {\n if (options === void 0) {\n options = {};\n }\n if (!this._acroform) {\n throw new Error('Call document.initForms() method before adding form elements to document');\n }\n let opts = Object.assign({}, options);\n if (type !== null) {\n opts = this._resolveType(type, options);\n }\n opts = this._resolveFlags(opts);\n opts = this._resolveJustify(opts);\n opts = this._resolveFont(opts);\n opts = this._resolveStrings(opts);\n opts = this._resolveColors(opts);\n opts = this._resolveFormat(opts);\n opts.T = new String(name);\n if (opts.parent) {\n opts.Parent = opts.parent;\n delete opts.parent;\n }\n return opts;\n },\n _resolveType(type, opts) {\n if (type === 'text') {\n opts.FT = 'Tx';\n } else if (type === 'pushButton') {\n opts.FT = 'Btn';\n opts.pushButton = true;\n } else if (type === 'radioButton') {\n opts.FT = 'Btn';\n opts.radioButton = true;\n } else if (type === 'checkbox') {\n opts.FT = 'Btn';\n } else if (type === 'combo') {\n opts.FT = 'Ch';\n opts.combo = true;\n } else if (type === 'list') {\n opts.FT = 'Ch';\n } else {\n throw new Error(\"Invalid form annotation type '\" + type + \"'\");\n }\n return opts;\n },\n _resolveFormat(opts) {\n const f = opts.format;\n if (f && f.type) {\n let fnKeystroke;\n let fnFormat;\n let params = '';\n if (FORMAT_SPECIAL[f.type] !== undefined) {\n fnKeystroke = \"AFSpecial_Keystroke\";\n fnFormat = \"AFSpecial_Format\";\n params = FORMAT_SPECIAL[f.type];\n } else {\n let format = f.type.charAt(0).toUpperCase() + f.type.slice(1);\n fnKeystroke = \"AF\" + format + \"_Keystroke\";\n fnFormat = \"AF\" + format + \"_Format\";\n if (f.type === 'date') {\n fnKeystroke += 'Ex';\n params = String(f.param);\n } else if (f.type === 'time') {\n params = String(f.param);\n } else if (f.type === 'number') {\n let p = Object.assign({}, FORMAT_DEFAULT.number, f);\n params = String([String(p.nDec), p.sepComma ? '0' : '1', '\"' + p.negStyle + '\"', 'null', '\"' + p.currency + '\"', String(p.currencyPrepend)].join(','));\n } else if (f.type === 'percent') {\n let p = Object.assign({}, FORMAT_DEFAULT.percent, f);\n params = String([String(p.nDec), p.sepComma ? '0' : '1'].join(','));\n }\n }\n opts.AA = opts.AA ? opts.AA : {};\n opts.AA.K = {\n S: 'JavaScript',\n JS: new String(fnKeystroke + \"(\" + params + \");\")\n };\n opts.AA.F = {\n S: 'JavaScript',\n JS: new String(fnFormat + \"(\" + params + \");\")\n };\n }\n delete opts.format;\n return opts;\n },\n _resolveColors(opts) {\n let color = this._normalizeColor(opts.backgroundColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BG = color;\n }\n color = this._normalizeColor(opts.borderColor);\n if (color) {\n if (!opts.MK) {\n opts.MK = {};\n }\n opts.MK.BC = color;\n }\n delete opts.backgroundColor;\n delete opts.borderColor;\n return opts;\n },\n _resolveFlags(options) {\n let result = 0;\n Object.keys(options).forEach(key => {\n if (FIELD_FLAGS[key]) {\n result |= FIELD_FLAGS[key];\n delete options[key];\n }\n });\n if (result !== 0) {\n options.Ff = options.Ff ? options.Ff : 0;\n options.Ff |= result;\n }\n return options;\n },\n _resolveJustify(options) {\n let result = 0;\n if (options.align !== undefined) {\n if (typeof FIELD_JUSTIFY[options.align] === 'number') {\n result = FIELD_JUSTIFY[options.align];\n }\n delete options.align;\n }\n if (result !== 0) {\n options.Q = result; // default\n }\n return options;\n },\n _resolveFont(options) {\n // add current font to document-level AcroForm dict if necessary\n if (this._acroform.fonts[this._font.id] === null) {\n this._acroform.fonts[this._font.id] = this._font.ref();\n }\n\n // add current font to field's resource dict (RD) if not the default acroform font\n if (this._acroform.defaultFont !== this._font.name) {\n options.DR = {\n Font: {}\n };\n\n // Get the fontSize option. If not set use auto sizing\n const fontSize = options.fontSize || 0;\n options.DR.Font[this._font.id] = this._font.ref();\n options.DA = new String(\"/\" + this._font.id + \" \" + fontSize + \" Tf 0 g\");\n }\n return options;\n },\n _resolveStrings(options) {\n let select = [];\n function appendChoices(a) {\n if (Array.isArray(a)) {\n for (let idx = 0; idx < a.length; idx++) {\n if (typeof a[idx] === 'string') {\n select.push(new String(a[idx]));\n } else {\n select.push(a[idx]);\n }\n }\n }\n }\n appendChoices(options.Opt);\n if (options.select) {\n appendChoices(options.select);\n delete options.select;\n }\n if (select.length) {\n options.Opt = select;\n }\n Object.keys(VALUE_MAP).forEach(key => {\n if (options[key] !== undefined) {\n options[VALUE_MAP[key]] = options[key];\n delete options[key];\n }\n });\n ['V', 'DV'].forEach(key => {\n if (typeof options[key] === 'string') {\n options[key] = new String(options[key]);\n }\n });\n if (options.MK && options.MK.CA) {\n options.MK.CA = new String(options.MK.CA);\n }\n if (options.label) {\n options.MK = options.MK ? options.MK : {};\n options.MK.CA = new String(options.label);\n delete options.label;\n }\n return options;\n }\n};\n\nvar AttachmentsMixin = {\n /**\n * Embed contents of `src` in PDF\n * @param {Buffer | ArrayBuffer | string} src input Buffer, ArrayBuffer, base64 encoded string or path to file\n * @param {object} options\n * * options.name: filename to be shown in PDF, will use `src` if none set\n * * options.type: filetype to be shown in PDF\n * * options.description: description to be shown in PDF\n * * options.hidden: if true, do not add attachment to EmbeddedFiles dictionary. Useful for file attachment annotations\n * * options.creationDate: override creation date\n * * options.modifiedDate: override modified date\n * @returns filespec reference\n */\n file(src, options) {\n if (options === void 0) {\n options = {};\n }\n options.name = options.name || src;\n const refBody = {\n Type: 'EmbeddedFile',\n Params: {}\n };\n let data;\n if (!src) {\n throw new Error('No src specified');\n }\n if (Buffer$2.isBuffer(src)) {\n data = src;\n } else if (src instanceof ArrayBuffer) {\n data = Buffer$2.from(new Uint8Array(src));\n } else {\n let match;\n if (match = /^data:(.*);base64,(.*)$/.exec(src)) {\n if (match[1]) {\n refBody.Subtype = match[1].replace('/', '#2F');\n }\n data = Buffer$2.from(match[2], 'base64');\n } else {\n throw new Error(\"Could not find file \" + src);\n }\n }\n\n // override creation date and modified date\n if (options.creationDate instanceof Date) {\n refBody.Params.CreationDate = options.creationDate;\n }\n if (options.modifiedDate instanceof Date) {\n refBody.Params.ModDate = options.modifiedDate;\n }\n // add optional subtype\n if (options.type) {\n refBody.Subtype = options.type.replace('/', '#2F');\n }\n\n // add checksum and size information\n const checksum = MD5(CryptoJS.lib.WordArray.create(new Uint8Array(data)));\n refBody.Params.CheckSum = new String(checksum);\n refBody.Params.Size = data.byteLength;\n\n // save some space when embedding the same file again\n // if a file with the same name and metadata exists, reuse its reference\n let ref;\n if (!this._fileRegistry) this._fileRegistry = {};\n let file = this._fileRegistry[options.name];\n if (file && isEqual(refBody, file)) {\n ref = file.ref;\n } else {\n ref = this.ref(refBody);\n ref.end(data);\n this._fileRegistry[options.name] = {\n ...refBody,\n ref\n };\n }\n // add filespec for embedded file\n const fileSpecBody = {\n Type: 'Filespec',\n F: new String(options.name),\n EF: {\n F: ref\n },\n UF: new String(options.name)\n };\n if (options.description) {\n fileSpecBody.Desc = new String(options.description);\n }\n const filespec = this.ref(fileSpecBody);\n filespec.end();\n if (!options.hidden) {\n this.addNamedEmbeddedFile(options.name, filespec);\n }\n return filespec;\n }\n};\n\n/** check two embedded file metadata objects for equality */\nfunction isEqual(a, b) {\n return a.Subtype === b.Subtype && a.Params.CheckSum.toString() === b.Params.CheckSum.toString() && a.Params.Size === b.Params.Size && a.Params.CreationDate === b.Params.CreationDate && a.Params.ModDate === b.Params.ModDate;\n}\n\nclass PDFMetadata {\n constructor() {\n this._metadata = \"\\n \\n \\n \\n \";\n }\n _closeTags() {\n this._metadata = this._metadata.concat(\"\\n \\n \\n \\n \");\n }\n append(xml, newline) {\n if (newline === void 0) {\n newline = true;\n }\n this._metadata = this._metadata.concat(xml);\n if (newline) this._metadata = this._metadata.concat('\\n');\n }\n getXML() {\n return this._metadata;\n }\n getLength() {\n return this._metadata.length;\n }\n end() {\n this._closeTags();\n this._metadata = this._metadata.trim();\n }\n}\n\nvar MetadataMixin = {\n initMetadata() {\n this.metadata = new PDFMetadata();\n },\n appendXML(xml, newline) {\n if (newline === void 0) {\n newline = true;\n }\n this.metadata.append(xml, newline);\n },\n _addInfo() {\n this.appendXML(\"\\n \\n \" + (this.info.CreationDate.toISOString().split('.')[0] + 'Z') + \"\\n \" + this.info.Creator + \"\\n \\n \");\n if (this.info.Title || this.info.Author || this.info.Subject) {\n this.appendXML(\"\\n \\n \");\n if (this.info.Title) {\n this.appendXML(\"\\n \\n \\n \" + this.info.Title + \"\\n \\n \\n \");\n }\n if (this.info.Author) {\n this.appendXML(\"\\n \\n \\n \" + this.info.Author + \"\\n \\n \\n \");\n }\n if (this.info.Subject) {\n this.appendXML(\"\\n \\n \\n \" + this.info.Subject + \"\\n \\n \\n \");\n }\n this.appendXML(\"\\n \\n \");\n }\n this.appendXML(\"\\n \\n \" + this.info.Creator + \"\", false);\n if (this.info.Keywords) {\n this.appendXML(\"\\n \" + this.info.Keywords + \"\", false);\n }\n this.appendXML(\"\\n \\n \");\n },\n endMetadata() {\n this._addInfo();\n this.metadata.end();\n\n /*\n Metadata was introduced in PDF 1.4, so adding it to 1.3\n will likely only take up more space.\n */\n if (this.version != 1.3) {\n this.metadataRef = this.ref({\n length: this.metadata.getLength(),\n Type: 'Metadata',\n Subtype: 'XML'\n });\n this.metadataRef.compress = false;\n this.metadataRef.write(Buffer$2.from(this.metadata.getXML(), 'utf-8'));\n this.metadataRef.end();\n this._root.data.Metadata = this.metadataRef;\n }\n }\n};\n\nconst capitalize = v => v[0].toUpperCase() + v.slice(1);\n\nclass PDFDocument extends stream.Readable {\n constructor(options) {\n if (options === void 0) {\n options = {};\n }\n super();\n this.options = options;\n\n // PDF version\n switch (options.pdfVersion) {\n case '1.4':\n this.version = 1.4;\n break;\n case '1.5':\n this.version = 1.5;\n break;\n case '1.6':\n this.version = 1.6;\n break;\n case '1.7':\n case '1.7ext3':\n this.version = 1.7;\n break;\n default:\n this.version = 1.3;\n break;\n }\n\n // Whether streams should be compressed\n this.compress = this.options.compress != null ? this.options.compress : true;\n this._pageBuffer = [];\n this._pageBufferStart = 0;\n\n // The PDF object store\n this._offsets = [];\n this._waiting = 0;\n this._ended = false;\n this._offset = 0;\n const Pages = this.ref({\n Type: 'Pages',\n Count: 0,\n Kids: []\n });\n const Names = this.ref({\n Dests: new PDFNameTree()\n });\n this._root = this.ref({\n Type: 'Catalog',\n Pages,\n Names\n });\n if (this.options.lang) {\n this._root.data.Lang = new String(this.options.lang);\n }\n if (this.options.pageLayout) {\n this._root.data.PageLayout = capitalize(this.options.pageLayout);\n }\n if (this.options.pageMode) {\n this._root.data.PageMode = capitalize(this.options.pageMode);\n }\n\n // The current page\n this.page = null;\n\n // Initialize mixins\n this.initColor();\n this.initVector();\n this.initFonts();\n this.initText();\n this.initImages();\n this.initOutline();\n // this.initMarkings(options)\n\n // Initialize the metadata\n this.info = {\n Producer: 'PDFKit',\n Creator: 'PDFKit',\n CreationDate: new Date()\n };\n if (this.options.info) {\n for (let key in this.options.info) {\n const val = this.options.info[key];\n this.info[key] = val;\n }\n }\n if (this.options.displayTitle) {\n this._root.data.ViewerPreferences = this.ref({\n DisplayDocTitle: true\n });\n }\n\n // Generate file ID\n this._id = PDFSecurity.generateFileID(this.info);\n\n // Initialize security settings\n // this._security = PDFSecurity.create(this, options);\n\n // Write the header PDF version\n this._write(\"%PDF-\" + this.version);\n\n // 4 binary chars, as recommended by the spec\n this._write('%\\xFF\\xFF\\xFF\\xFF');\n\n // Add the first page\n if (this.options.autoFirstPage !== false) {\n this.addPage();\n }\n }\n addPage(options) {\n // end the current page if needed\n if (options == null) {\n ({\n options\n } = this);\n }\n\n // end the current page if needed\n if (!this.options.bufferPages) {\n this.flushPages();\n }\n\n // create a page object\n this.page = new PDFPage(this, options);\n this._pageBuffer.push(this.page);\n\n // add the page to the object store\n const pages = this._root.data.Pages.data;\n pages.Kids.push(this.page.dictionary);\n pages.Count++;\n\n // flip PDF coordinate system so that the origin is in\n // the top left rather than the bottom left\n this._ctm = [1, 0, 0, 1, 0, 0];\n this.transform(1, 0, 0, -1, 0, this.page.height);\n\n // this.emit('pageAdded');\n\n return this;\n }\n flushPages() {\n // this local variable exists so we're future-proof against\n // reentrant calls to flushPages.\n const pages = this._pageBuffer;\n this._pageBuffer = [];\n this._pageBufferStart += pages.length;\n for (let page of Array.from(pages)) {\n // this.endPageMarkings(page);\n page.end();\n }\n }\n addNamedDestination(name) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (args.length === 0) {\n args = ['XYZ', null, null, null];\n }\n if (args[0] === 'XYZ' && args[2] !== null) {\n args[2] = this.page.height - args[2];\n }\n args.unshift(this.page.dictionary);\n this._root.data.Names.data.Dests.add(name, args);\n }\n addNamedEmbeddedFile(name, ref) {\n if (!this._root.data.Names.data.EmbeddedFiles) {\n // disabling /Limits for this tree fixes attachments not showing in Adobe Reader\n this._root.data.Names.data.EmbeddedFiles = new PDFNameTree({\n limits: false\n });\n }\n\n // add filespec to EmbeddedFiles\n this._root.data.Names.data.EmbeddedFiles.add(name, ref);\n }\n addNamedJavaScript(name, js) {\n if (!this._root.data.Names.data.JavaScript) {\n this._root.data.Names.data.JavaScript = new PDFNameTree();\n }\n let data = {\n JS: new String(js),\n S: 'JavaScript'\n };\n this._root.data.Names.data.JavaScript.add(name, data);\n }\n ref(data) {\n const ref = new PDFReference(this, this._offsets.length + 1, data);\n this._offsets.push(null); // placeholder for this object's offset once it is finalized\n this._waiting++;\n return ref;\n }\n _read() {\n // do nothing, but this method is required by node\n }\n _write(data) {\n if (!Buffer$2.isBuffer(data)) {\n data = Buffer$2.from(data + '\\n', 'binary');\n }\n this.push(data);\n return this._offset += data.length;\n }\n addContent(data) {\n this.page.write(data);\n return this;\n }\n _refEnd(ref) {\n this._offsets[ref.id - 1] = ref.offset;\n if (--this._waiting === 0 && this._ended) {\n this._finalize();\n return this._ended = false;\n }\n }\n end() {\n this.flushPages();\n this._info = this.ref();\n for (let key in this.info) {\n let val = this.info[key];\n if (typeof val === 'string') {\n val = new String(val);\n }\n let entry = this.ref(val);\n entry.end();\n this._info.data[key] = entry;\n }\n this._info.end();\n for (let name in this._fontFamilies) {\n const font = this._fontFamilies[name];\n font.finalize();\n }\n this.endOutline();\n // this.endMarkings();\n\n this._root.end();\n this._root.data.Pages.end();\n this._root.data.Names.end();\n this.endAcroForm();\n if (this._root.data.ViewerPreferences) {\n this._root.data.ViewerPreferences.end();\n }\n\n // if (this._security) {\n // this._security.end();\n // }\n\n if (this._waiting === 0) {\n return this._finalize();\n }\n this._ended = true;\n }\n _finalize() {\n // generate xref\n const xRefOffset = this._offset;\n this._write('xref');\n this._write(\"0 \" + (this._offsets.length + 1));\n this._write('0000000000 65535 f ');\n for (let offset of Array.from(this._offsets)) {\n offset = (\"0000000000\" + offset).slice(-10);\n this._write(offset + ' 00000 n ');\n }\n\n // trailer\n const trailer = {\n Size: this._offsets.length + 1,\n Root: this._root,\n Info: this._info,\n ID: [this._id, this._id]\n };\n\n // if (this._security) {\n // trailer.Encrypt = this._security.dictionary;\n // }\n\n this._write('trailer');\n this._write(PDFObject$1.convert(trailer));\n this._write('startxref');\n this._write(\"\" + xRefOffset);\n this._write('%%EOF');\n\n // end the stream\n return this.push(null);\n }\n toString() {\n return '[object PDFDocument]';\n }\n initColor() {}\n initVector() {}\n initFonts() {}\n initText() {}\n initImages() {}\n initOutline() {}\n\n /**\n * @param {number} m11\n * @param {number} m12\n * @param {number} m21\n * @param {number} m22\n * @param {number} dx\n * @param {number} dy\n */\n // eslint-disable-next-line no-unused-vars\n transform(m11, m12, m21, m22, dx, dy) {}\n endOutline() {}\n endAcroForm() {}\n}\nconst mixin = methods => {\n Object.assign(PDFDocument.prototype, methods);\n};\n\n// Load mixins\nmixin(MetadataMixin);\nmixin(ColorMixin);\nmixin(VectorMixin);\nmixin(FontsMixin);\nmixin(TextMixin);\nmixin(ImagesMixin);\nmixin(AnnotationsMixin);\nmixin(OutlineMixin);\nmixin(MarkingsMixin);\nmixin(AcroFormMixin);\nmixin(AttachmentsMixin);\n\nexport { EmbeddedFont, PDFFont, StandardFont, PDFDocument as default };\n","import { compose, castArray } from '@react-pdf/fns';\nimport parse$1 from 'postcss-value-parser/lib/parse.js';\nimport parseUnit from 'postcss-value-parser/lib/unit.js';\nimport hlsToHex from 'hsl-to-hex';\nimport colorString from 'color-string';\nimport matchMedia from 'media-engine';\n\n// https://developer.mozilla.org/en-US/docs/Web/CSS/flex#values\n\n// TODO: change flex defaults to [0, 1, 'auto'] as in spec in next major release\nconst flexDefaults = [1, 1, 0];\n/**\n * @type {(number | 'auto')[]}\n */\nconst flexAuto = [1, 1, 'auto'];\nconst expandFlex = (key, value) => {\n /**\n * @type {(number | 'auto')[]}\n */\n let defaults = flexDefaults;\n let matches = [];\n if (value === 'auto') {\n defaults = flexAuto;\n } else {\n matches = (\"\" + value).split(' ');\n }\n const flexGrow = matches[0] || defaults[0];\n const flexShrink = matches[1] || defaults[1];\n const flexBasis = matches[2] || defaults[2];\n return {\n flexGrow,\n flexShrink,\n flexBasis\n };\n};\n\n/* eslint-disable no-plusplus */\n// This file is ran directly with Node - needs to have .js extension\n// eslint-disable-next-line import/extensions\nconst BOX_MODEL_UNITS = 'px,in,mm,cm,pt,%,vw,vh';\nconst logError = (style, value) => {\n console.error(\"\\n @react-pdf/stylesheet parsing error:\\n\\n \" + style + \": \" + value + \",\\n \" + ' '.repeat(style.length + 2) + \"^\\n Unsupported \" + style + \" value format\\n \");\n};\n\n/**\n * @param {Object} options\n * @param {Function} [options.expandsTo]\n * @param {number} [options.maxValues]\n * @param {boolean} [options.autoSupported]\n */\nconst expandBoxModel = function (_temp) {\n let {\n expandsTo,\n maxValues = 1,\n autoSupported = false\n } = _temp === void 0 ? {} : _temp;\n return (model, value) => {\n const nodes = parse$1(\"\" + value);\n const parts = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n // value contains `calc`, `url` or other css function\n // `,`, `/` or strings that unsupported by margin and padding\n if (node.type === 'function' || node.type === 'string' || node.type === 'div') {\n logError(model, value);\n return {};\n }\n if (node.type === 'word') {\n if (node.value === 'auto' && autoSupported) {\n parts.push(node.value);\n } else {\n const result = parseUnit(node.value);\n\n // when unit isn't specified this condition is true\n if (result && BOX_MODEL_UNITS.includes(result.unit)) {\n parts.push(node.value);\n } else {\n logError(model, value);\n return {};\n }\n }\n }\n }\n\n // checks that we have enough parsed values\n if (parts.length > maxValues) {\n logError(model, value);\n return {};\n }\n const first = parts[0];\n if (expandsTo) {\n const second = parts[1] || parts[0];\n const third = parts[2] || parts[0];\n const fourth = parts[3] || parts[1] || parts[0];\n return expandsTo({\n first,\n second,\n third,\n fourth\n });\n }\n return {\n [model]: first\n };\n };\n};\n\nconst processMargin = expandBoxModel({\n expandsTo: _ref => {\n let {\n first,\n second,\n third,\n fourth\n } = _ref;\n return {\n marginTop: first,\n marginRight: second,\n marginBottom: third,\n marginLeft: fourth\n };\n },\n maxValues: 4,\n autoSupported: true\n});\nconst processMarginVertical = expandBoxModel({\n expandsTo: _ref2 => {\n let {\n first,\n second\n } = _ref2;\n return {\n marginTop: first,\n marginBottom: second\n };\n },\n maxValues: 2,\n autoSupported: true\n});\nconst processMarginHorizontal = expandBoxModel({\n expandsTo: _ref3 => {\n let {\n first,\n second\n } = _ref3;\n return {\n marginRight: first,\n marginLeft: second\n };\n },\n maxValues: 2,\n autoSupported: true\n});\nconst processMarginSingle = expandBoxModel({\n autoSupported: true\n});\n\nconst BORDER_SHORTHAND_REGEX = /(-?\\d+(\\.\\d+)?(px|in|mm|cm|pt|vw|vh|px)?)\\s(\\S+)\\s(.+)/;\nconst matchBorderShorthand = value => value.match(BORDER_SHORTHAND_REGEX) || [];\nconst expandBorders = (key, value) => {\n const match = matchBorderShorthand(\"\" + value);\n if (match) {\n const color = match[5] || value;\n const style = match[4] || value;\n const width = match[1] || value;\n if (key.match(/(Top|Right|Bottom|Left)$/)) {\n return {\n [key + \"Color\"]: color,\n [key + \"Style\"]: style,\n [key + \"Width\"]: width\n };\n }\n if (key.match(/Color$/)) {\n return {\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color\n };\n }\n if (key.match(/Style$/)) {\n return {\n borderTopStyle: style,\n borderRightStyle: style,\n borderBottomStyle: style,\n borderLeftStyle: style\n };\n }\n if (key.match(/Width$/)) {\n return {\n borderTopWidth: width,\n borderRightWidth: width,\n borderBottomWidth: width,\n borderLeftWidth: width\n };\n }\n if (key.match(/Radius$/)) {\n return {\n borderTopLeftRadius: value,\n borderTopRightRadius: value,\n borderBottomRightRadius: value,\n borderBottomLeftRadius: value\n };\n }\n return {\n borderTopColor: color,\n borderTopStyle: style,\n borderTopWidth: width,\n borderRightColor: color,\n borderRightStyle: style,\n borderRightWidth: width,\n borderBottomColor: color,\n borderBottomStyle: style,\n borderBottomWidth: width,\n borderLeftColor: color,\n borderLeftStyle: style,\n borderLeftWidth: width\n };\n }\n return value;\n};\n\nconst processPadding = expandBoxModel({\n expandsTo: _ref => {\n let {\n first,\n second,\n third,\n fourth\n } = _ref;\n return {\n paddingTop: first,\n paddingRight: second,\n paddingBottom: third,\n paddingLeft: fourth\n };\n },\n maxValues: 4\n});\nconst processPaddingVertical = expandBoxModel({\n expandsTo: _ref2 => {\n let {\n first,\n second\n } = _ref2;\n return {\n paddingTop: first,\n paddingBottom: second\n };\n },\n maxValues: 2\n});\nconst processPaddingHorizontal = expandBoxModel({\n expandsTo: _ref3 => {\n let {\n first,\n second\n } = _ref3;\n return {\n paddingRight: first,\n paddingLeft: second\n };\n },\n maxValues: 2\n});\nconst processPaddingSingle = expandBoxModel();\n\nconst expandObjectPosition = (key, value) => {\n const match = (\"\" + value).split(' ');\n return {\n objectPositionX: (match === null || match === void 0 ? void 0 : match[0]) || value,\n objectPositionY: (match === null || match === void 0 ? void 0 : match[1]) || value\n };\n};\n\nconst Y_AXIS_SHORTHANDS = {\n top: true,\n bottom: true\n};\nconst sortTransformOriginPair = (a, b) => {\n if (Y_AXIS_SHORTHANDS[a]) return 1;\n if (Y_AXIS_SHORTHANDS[b]) return -1;\n return 0;\n};\nconst getTransformOriginPair = values => {\n if (!values || values.length === 0) return ['center', 'center'];\n const pair = values.length === 1 ? [values[0], 'center'] : values;\n return pair.sort(sortTransformOriginPair);\n};\n\n// Transforms shorthand transformOrigin values\nconst expandTransformOrigin = (key, value) => {\n const match = (\"\" + value).split(' ');\n const pair = getTransformOriginPair(match);\n return {\n transformOriginX: pair[0],\n transformOriginY: pair[1]\n };\n};\n\nconst expandGap = (key, value) => {\n const match = (\"\" + value).split(' ');\n return {\n rowGap: (match === null || match === void 0 ? void 0 : match[0]) || value,\n columnGap: (match === null || match === void 0 ? void 0 : match[1]) || value\n };\n};\n\nconst shorthands = {\n flex: expandFlex,\n gap: expandGap,\n margin: processMargin,\n marginHorizontal: processMarginHorizontal,\n marginVertical: processMarginVertical,\n marginTop: processMarginSingle,\n marginRight: processMarginSingle,\n marginBottom: processMarginSingle,\n marginLeft: processMarginSingle,\n padding: processPadding,\n paddingHorizontal: processPaddingHorizontal,\n paddingVertical: processPaddingVertical,\n paddingTop: processPaddingSingle,\n paddingRight: processPaddingSingle,\n paddingBottom: processPaddingSingle,\n paddingLeft: processPaddingSingle,\n border: expandBorders,\n borderTop: expandBorders,\n borderRight: expandBorders,\n borderBottom: expandBorders,\n borderLeft: expandBorders,\n borderColor: expandBorders,\n borderRadius: expandBorders,\n borderStyle: expandBorders,\n borderWidth: expandBorders,\n objectPosition: expandObjectPosition,\n transformOrigin: expandTransformOrigin\n};\n\n/**\n * Transforms style key-value\n *\n * @param {string} key style key\n * @param {string} value style value\n * @returns {string | Number} transformed style values\n */\nconst expandStyle = (key, value) => {\n return shorthands[key] ? shorthands[key](key, value) : {\n [key]: value\n };\n};\n\n/**\n * Expand the shorthand properties.\n *\n * @param {Object} style object\n * @returns {Object} expanded style object\n */\nconst expand = style => {\n if (!style) return style;\n const propsArray = Object.keys(style);\n const resolvedStyle = {};\n for (let i = 0; i < propsArray.length; i += 1) {\n const key = propsArray[i];\n const value = style[key];\n const extended = expandStyle(key, value);\n const keys = Object.keys(extended);\n for (let j = 0; j < keys.length; j += 1) {\n const propName = keys[j];\n const propValue = extended[propName];\n resolvedStyle[propName] = propValue;\n }\n }\n return resolvedStyle;\n};\n\n/**\n * Remove nil values from array\n *\n * @template T\n * @param {(T | null | undefined)[]} array\n * @returns {T[]} array without nils\n */\nconst compact = array => array.filter(Boolean);\n\n/**\n * Merges style objects array\n *\n * @param {Object[]} styles style objects array\n * @returns {Object} merged style object\n */\nconst mergeStyles = styles => styles.reduce((acc, style) => {\n const s = Array.isArray(style) ? flatten(style) : style;\n Object.keys(s).forEach(key => {\n if (s[key] !== null && s[key] !== undefined) {\n acc[key] = s[key];\n }\n });\n return acc;\n}, {});\n\n/**\n * Flattens an array of style objects, into one aggregated style object.\n *\n * @param {Object[]} styles style objects array\n * @returns {Object} flattened style object\n */\nconst flatten = compose(mergeStyles, compact, castArray);\n\n/**\n * Parses scalar value in value and unit pairs\n *\n * @param {string} value scalar value\n * @returns {Object} parsed value\n */\nconst parseValue = value => {\n const match = /^(-?\\d*\\.?\\d+)(in|mm|cm|pt|vh|vw|px)?$/g.exec(value);\n return match ? {\n value: parseFloat(match[1]),\n unit: match[2] || 'pt'\n } : {\n value,\n unit: undefined\n };\n};\n\n/**\n * Transform given scalar value\n *\n * @param {Object} container\n * @param {string} value styles value\n * @returns {Object} transformed value\n */\nconst transformUnit = (container, value) => {\n const scalar = parseValue(value);\n const dpi = 72; // Removed: container.dpi || 72\n const mmFactor = 1 / 25.4 * dpi;\n const cmFactor = 1 / 2.54 * dpi;\n switch (scalar.unit) {\n case 'in':\n return scalar.value * dpi;\n case 'mm':\n return scalar.value * mmFactor;\n case 'cm':\n return scalar.value * cmFactor;\n case 'vh':\n return scalar.value * (container.height / 100);\n case 'vw':\n return scalar.value * (container.width / 100);\n default:\n return scalar.value;\n }\n};\n\nconst isRgb = value => /rgba?/g.test(value);\nconst isHsl = value => /hsla?/g.test(value);\n\n/**\n * Transform rgb color to hexa\n *\n * @param {string} value styles value\n * @returns {Object} transformed value\n */\nconst parseRgb = value => {\n const rgb = colorString.get.rgb(value);\n return colorString.to.hex(rgb);\n};\n\n/**\n * Transform Hsl color to hexa\n *\n * @param {string} value styles value\n * @returns {Object} transformed value\n */\nconst parseHsl = value => {\n const hsl = colorString.get.hsl(value).map(Math.round);\n const hex = hlsToHex(...hsl);\n return hex.toUpperCase();\n};\n\n/**\n * Transform given color to hexa\n *\n * @param {string} value styles value\n * @returns {Object} transformed value\n */\nconst transformColor = value => {\n if (isRgb(value)) return parseRgb(value);\n if (isHsl(value)) return parseHsl(value);\n return value;\n};\n\nconst parse = transformString => {\n const transforms = transformString.trim().split(/\\) |\\)/);\n\n // Handle \"initial\", \"inherit\", \"unset\".\n if (transforms.length === 1) {\n return [[transforms[0], true]];\n }\n const parsed = [];\n for (let i = 0; i < transforms.length; i += 1) {\n const transform = transforms[i];\n if (transform) {\n const [name, rawValue] = transform.split('(');\n const splitChar = rawValue.indexOf(',') >= 0 ? ',' : ' ';\n const value = rawValue.split(splitChar).map(val => val.trim());\n parsed.push({\n operation: name,\n value\n });\n }\n }\n return parsed;\n};\nconst parseAngle = value => {\n const unitsRegexp = /(-?\\d*\\.?\\d*)(\\w*)?/i;\n const [, angle, unit] = unitsRegexp.exec(value);\n const number = Number.parseFloat(angle);\n return unit === 'rad' ? number * 180 / Math.PI : number;\n};\nconst normalizeTransformOperation = _ref => {\n let {\n operation,\n value\n } = _ref;\n switch (operation) {\n case 'scale':\n {\n const [scaleX, scaleY = scaleX] = value.map(num => Number.parseFloat(num));\n return {\n operation: 'scale',\n value: [scaleX, scaleY]\n };\n }\n case 'scaleX':\n {\n return {\n operation: 'scale',\n value: [Number.parseFloat(value), 1]\n };\n }\n case 'scaleY':\n {\n return {\n operation: 'scale',\n value: [1, Number.parseFloat(value)]\n };\n }\n case 'rotate':\n {\n return {\n operation: 'rotate',\n value: [parseAngle(value)]\n };\n }\n case 'translate':\n {\n return {\n operation: 'translate',\n value: value.map(num => Number.parseFloat(num))\n };\n }\n case 'translateX':\n {\n return {\n operation: 'translate',\n value: [Number.parseFloat(value), 0]\n };\n }\n case 'translateY':\n {\n return {\n operation: 'translate',\n value: [0, Number.parseFloat(value)]\n };\n }\n case 'skew':\n {\n return {\n operation: 'skew',\n value: value.map(parseAngle)\n };\n }\n case 'skewX':\n {\n return {\n operation: 'skew',\n value: [parseAngle(value), 0]\n };\n }\n case 'skewY':\n {\n return {\n operation: 'skew',\n value: [0, parseAngle(value)]\n };\n }\n default:\n {\n return {\n operation,\n value: value.map(num => Number.parseFloat(num))\n };\n }\n }\n};\nconst normalize = operations => {\n return operations.map(operation => normalizeTransformOperation(operation));\n};\nconst processTransform = value => {\n if (typeof value !== 'string') return value;\n return normalize(parse(value));\n};\n\nconst FONT_WEIGHTS = {\n thin: 100,\n hairline: 100,\n ultralight: 200,\n extralight: 200,\n light: 300,\n normal: 400,\n medium: 500,\n semibold: 600,\n demibold: 600,\n bold: 700,\n ultrabold: 800,\n extrabold: 800,\n heavy: 900,\n black: 900\n};\nconst processFontWeight = value => {\n if (!value) return FONT_WEIGHTS.normal;\n if (typeof value === 'number') return value;\n const lv = value.toLowerCase();\n if (FONT_WEIGHTS[lv]) return FONT_WEIGHTS[lv];\n return value;\n};\n\nconst matchNumber = value => typeof value === 'string' && /^-?\\d*\\.?\\d*$/.test(value);\nconst castFloat = value => {\n if (typeof value !== 'string') return value;\n if (matchNumber(value)) return parseFloat(value);\n return value;\n};\n\nconst offsetKeyword = value => {\n switch (value) {\n case 'top':\n case 'left':\n return '0%';\n case 'right':\n case 'bottom':\n return '100%';\n case 'center':\n return '50%';\n default:\n return null;\n }\n};\n\nconst transformObjectPosition = value => offsetKeyword(value) || castFloat(value);\n\nconst transformTransformOrigin = value => offsetKeyword(value) || castFloat(value);\n\nconst handlers = {\n transform: processTransform,\n fontWeight: processFontWeight,\n objectPositionX: transformObjectPosition,\n objectPositionY: transformObjectPosition,\n transformOriginX: transformTransformOrigin,\n transformOriginY: transformTransformOrigin\n};\nconst transformStyle = (key, value, container) => {\n const result = handlers[key] ? handlers[key](value) : value;\n return transformColor(transformUnit(container, castFloat(result)));\n};\n\n/**\n * @typedef {Function} Transform\n * @param {Object} style styles object\n * @returns {Object} transformed styles\n */\n\n/**\n * Transform styles values\n *\n * @param {Object} container\n * @returns {Transform} transform function\n */\nconst transform = container => style => {\n if (!style) return style;\n const propsArray = Object.keys(style);\n const resolvedStyle = {};\n for (let i = 0; i < propsArray.length; i += 1) {\n const key = propsArray[i];\n const value = style[key];\n const transformed = transformStyle(key, value, container);\n resolvedStyle[key] = transformed;\n }\n return resolvedStyle;\n};\n\n/**\n * Resolves media queries in styles object\n *\n * @param {Object} container\n * @param {Object} styles object\n */\nconst resolveMediaQueries = (container, styles) => {\n return Object.keys(styles).reduce((acc, key) => {\n if (/@media/.test(key)) {\n return {\n ...acc,\n ...matchMedia({\n [key]: styles[key]\n }, container)\n };\n }\n return {\n ...acc,\n [key]: styles[key]\n };\n }, {});\n};\n\n/**\n * Resolves styles\n *\n * @param {Object} container\n * @param {Object} style object\n * @returns {Object} resolved style object\n */\nconst resolveStyles = (container, style) => {\n const computeMediaQueries = value => resolveMediaQueries(container, value);\n return compose(transform(container), expand, computeMediaQueries, flatten)(style);\n};\n\nexport { resolveStyles as default, flatten, processTransform, transformColor };\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function bidiFactory() {\nvar bidi = (function (exports) {\n\n // Bidi character types data, auto generated\n var DATA = {\n \"R\": \"13k,1a,2,3,3,2+1j,ch+16,a+1,5+2,2+n,5,a,4,6+16,4+3,h+1b,4mo,179q,2+9,2+11,2i9+7y,2+68,4,3+4,5+13,4+3,2+4k,3+29,8+cf,1t+7z,w+17,3+3m,1t+3z,16o1+5r,8+30,8+mc,29+1r,29+4v,75+73\",\n \"EN\": \"1c+9,3d+1,6,187+9,513,4+5,7+9,sf+j,175h+9,qw+q,161f+1d,4xt+a,25i+9\",\n \"ES\": \"17,2,6dp+1,f+1,av,16vr,mx+1,4o,2\",\n \"ET\": \"z+2,3h+3,b+1,ym,3e+1,2o,p4+1,8,6u,7c,g6,1wc,1n9+4,30+1b,2n,6d,qhx+1,h0m,a+1,49+2,63+1,4+1,6bb+3,12jj\",\n \"AN\": \"16o+5,2j+9,2+1,35,ed,1ff2+9,87+u\",\n \"CS\": \"18,2+1,b,2u,12k,55v,l,17v0,2,3,53,2+1,b\",\n \"B\": \"a,3,f+2,2v,690\",\n \"S\": \"9,2,k\",\n \"WS\": \"c,k,4f4,1vk+a,u,1j,335\",\n \"ON\": \"x+1,4+4,h+5,r+5,r+3,z,5+3,2+1,2+1,5,2+2,3+4,o,w,ci+1,8+d,3+d,6+8,2+g,39+1,9,6+1,2,33,b8,3+1,3c+1,7+1,5r,b,7h+3,sa+5,2,3i+6,jg+3,ur+9,2v,ij+1,9g+9,7+a,8m,4+1,49+x,14u,2+2,c+2,e+2,e+2,e+1,i+n,e+e,2+p,u+2,e+2,36+1,2+3,2+1,b,2+2,6+5,2,2,2,h+1,5+4,6+3,3+f,16+2,5+3l,3+81,1y+p,2+40,q+a,m+13,2r+ch,2+9e,75+hf,3+v,2+2w,6e+5,f+6,75+2a,1a+p,2+2g,d+5x,r+b,6+3,4+o,g,6+1,6+2,2k+1,4,2j,5h+z,1m+1,1e+f,t+2,1f+e,d+3,4o+3,2s+1,w,535+1r,h3l+1i,93+2,2s,b+1,3l+x,2v,4g+3,21+3,kz+1,g5v+1,5a,j+9,n+v,2,3,2+8,2+1,3+2,2,3,46+1,4+4,h+5,r+5,r+a,3h+2,4+6,b+4,78,1r+24,4+c,4,1hb,ey+6,103+j,16j+c,1ux+7,5+g,fsh,jdq+1t,4,57+2e,p1,1m,1m,1m,1m,4kt+1,7j+17,5+2r,d+e,3+e,2+e,2+10,m+4,w,1n+5,1q,4z+5,4b+rb,9+c,4+c,4+37,d+2g,8+b,l+b,5+1j,9+9,7+13,9+t,3+1,27+3c,2+29,2+3q,d+d,3+4,4+2,6+6,a+o,8+6,a+2,e+6,16+42,2+1i\",\n \"BN\": \"0+8,6+d,2s+5,2+p,e,4m9,1kt+2,2b+5,5+5,17q9+v,7k,6p+8,6+1,119d+3,440+7,96s+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+1,1ekf+75,6p+2rz,1ben+1,1ekf+1,1ekf+1\",\n \"NSM\": \"lc+33,7o+6,7c+18,2,2+1,2+1,2,21+a,1d+k,h,2u+6,3+5,3+1,2+3,10,v+q,2k+a,1n+8,a,p+3,2+8,2+2,2+4,18+2,3c+e,2+v,1k,2,5+7,5,4+6,b+1,u,1n,5+3,9,l+1,r,3+1,1m,5+1,5+1,3+2,4,v+1,4,c+1,1m,5+4,2+1,5,l+1,n+5,2,1n,3,2+3,9,8+1,c+1,v,1q,d,1f,4,1m+2,6+2,2+3,8+1,c+1,u,1n,g+1,l+1,t+1,1m+1,5+3,9,l+1,u,21,8+2,2,2j,3+6,d+7,2r,3+8,c+5,23+1,s,2,2,1k+d,2+4,2+1,6+a,2+z,a,2v+3,2+5,2+1,3+1,q+1,5+2,h+3,e,3+1,7,g,jk+2,qb+2,u+2,u+1,v+1,1t+1,2+6,9,3+a,a,1a+2,3c+1,z,3b+2,5+1,a,7+2,64+1,3,1n,2+6,2,2,3+7,7+9,3,1d+g,1s+3,1d,2+4,2,6,15+8,d+1,x+3,3+1,2+2,1l,2+1,4,2+2,1n+7,3+1,49+2,2+c,2+6,5,7,4+1,5j+1l,2+4,k1+w,2db+2,3y,2p+v,ff+3,30+1,n9x+3,2+9,x+1,29+1,7l,4,5,q+1,6,48+1,r+h,e,13+7,q+a,1b+2,1d,3+3,3+1,14,1w+5,3+1,3+1,d,9,1c,1g,2+2,3+1,6+1,2,17+1,9,6n,3,5,fn5,ki+f,h+f,r2,6b,46+4,1af+2,2+1,6+3,15+2,5,4m+1,fy+3,as+1,4a+a,4x,1j+e,1l+2,1e+3,3+1,1y+2,11+4,2+7,1r,d+1,1h+8,b+3,3,2o+2,3,2+1,7,4h,4+7,m+1,1m+1,4,12+6,4+4,5g+7,3+2,2,o,2d+5,2,5+1,2+1,6n+3,7+1,2+1,s+1,2e+7,3,2+1,2z,2,3+5,2,2u+2,3+3,2+4,78+8,2+1,75+1,2,5,41+3,3+1,5,x+5,3+1,15+5,3+3,9,a+5,3+2,1b+c,2+1,bb+6,2+5,2d+l,3+6,2+1,2+1,3f+5,4,2+1,2+6,2,21+1,4,2,9o+1,f0c+4,1o+6,t5,1s+3,2a,f5l+1,43t+2,i+7,3+6,v+3,45+2,1j0+1i,5+1d,9,f,n+4,2+e,11t+6,2+g,3+6,2+1,2+4,7a+6,c6+3,15t+6,32+6,gzhy+6n\",\n \"AL\": \"16w,3,2,e+1b,z+2,2+2s,g+1,8+1,b+m,2+t,s+2i,c+e,4h+f,1d+1e,1bwe+dp,3+3z,x+c,2+1,35+3y,2rm+z,5+7,b+5,dt+l,c+u,17nl+27,1t+27,4x+6n,3+d\",\n \"LRO\": \"6ct\",\n \"RLO\": \"6cu\",\n \"LRE\": \"6cq\",\n \"RLE\": \"6cr\",\n \"PDF\": \"6cs\",\n \"LRI\": \"6ee\",\n \"RLI\": \"6ef\",\n \"FSI\": \"6eg\",\n \"PDI\": \"6eh\"\n };\n\n var TYPES = {};\n var TYPES_TO_NAMES = {};\n TYPES.L = 1; //L is the default\n TYPES_TO_NAMES[1] = 'L';\n Object.keys(DATA).forEach(function (type, i) {\n TYPES[type] = 1 << (i + 1);\n TYPES_TO_NAMES[TYPES[type]] = type;\n });\n Object.freeze(TYPES);\n\n var ISOLATE_INIT_TYPES = TYPES.LRI | TYPES.RLI | TYPES.FSI;\n var STRONG_TYPES = TYPES.L | TYPES.R | TYPES.AL;\n var NEUTRAL_ISOLATE_TYPES = TYPES.B | TYPES.S | TYPES.WS | TYPES.ON | TYPES.FSI | TYPES.LRI | TYPES.RLI | TYPES.PDI;\n var BN_LIKE_TYPES = TYPES.BN | TYPES.RLE | TYPES.LRE | TYPES.RLO | TYPES.LRO | TYPES.PDF;\n var TRAILING_TYPES = TYPES.S | TYPES.WS | TYPES.B | ISOLATE_INIT_TYPES | TYPES.PDI | BN_LIKE_TYPES;\n\n var map = null;\n\n function parseData () {\n if (!map) {\n //const start = performance.now()\n map = new Map();\n var loop = function ( type ) {\n if (DATA.hasOwnProperty(type)) {\n var lastCode = 0;\n DATA[type].split(',').forEach(function (range) {\n var ref = range.split('+');\n var skip = ref[0];\n var step = ref[1];\n skip = parseInt(skip, 36);\n step = step ? parseInt(step, 36) : 0;\n map.set(lastCode += skip, TYPES[type]);\n for (var i = 0; i < step; i++) {\n map.set(++lastCode, TYPES[type]);\n }\n });\n }\n };\n\n for (var type in DATA) loop( type );\n //console.log(`char types parsed in ${performance.now() - start}ms`)\n }\n }\n\n /**\n * @param {string} char\n * @return {number}\n */\n function getBidiCharType (char) {\n parseData();\n return map.get(char.codePointAt(0)) || TYPES.L\n }\n\n function getBidiCharTypeName(char) {\n return TYPES_TO_NAMES[getBidiCharType(char)]\n }\n\n // Bidi bracket pairs data, auto generated\n var data$1 = {\n \"pairs\": \"14>1,1e>2,u>2,2wt>1,1>1,1ge>1,1wp>1,1j>1,f>1,hm>1,1>1,u>1,u6>1,1>1,+5,28>1,w>1,1>1,+3,b8>1,1>1,+3,1>3,-1>-1,3>1,1>1,+2,1s>1,1>1,x>1,th>1,1>1,+2,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,4q>1,1e>2,u>2,2>1,+1\",\n \"canonical\": \"6f1>-6dx,6dy>-6dx,6ec>-6ed,6ee>-6ed,6ww>2jj,-2ji>2jj,14r4>-1e7l,1e7m>-1e7l,1e7m>-1e5c,1e5d>-1e5b,1e5c>-14qx,14qy>-14qx,14vn>-1ecg,1ech>-1ecg,1edu>-1ecg,1eci>-1ecg,1eda>-1ecg,1eci>-1ecg,1eci>-168q,168r>-168q,168s>-14ye,14yf>-14ye\"\n };\n\n /**\n * Parses an string that holds encoded codepoint mappings, e.g. for bracket pairs or\n * mirroring characters, as encoded by scripts/generateBidiData.js. Returns an object\n * holding the `map`, and optionally a `reverseMap` if `includeReverse:true`.\n * @param {string} encodedString\n * @param {boolean} includeReverse - true if you want reverseMap in the output\n * @return {{map: Map, reverseMap?: Map}}\n */\n function parseCharacterMap (encodedString, includeReverse) {\n var radix = 36;\n var lastCode = 0;\n var map = new Map();\n var reverseMap = includeReverse && new Map();\n var prevPair;\n encodedString.split(',').forEach(function visit(entry) {\n if (entry.indexOf('+') !== -1) {\n for (var i = +entry; i--;) {\n visit(prevPair);\n }\n } else {\n prevPair = entry;\n var ref = entry.split('>');\n var a = ref[0];\n var b = ref[1];\n a = String.fromCodePoint(lastCode += parseInt(a, radix));\n b = String.fromCodePoint(lastCode += parseInt(b, radix));\n map.set(a, b);\n includeReverse && reverseMap.set(b, a);\n }\n });\n return { map: map, reverseMap: reverseMap }\n }\n\n var openToClose, closeToOpen, canonical;\n\n function parse$1 () {\n if (!openToClose) {\n //const start = performance.now()\n var ref = parseCharacterMap(data$1.pairs, true);\n var map = ref.map;\n var reverseMap = ref.reverseMap;\n openToClose = map;\n closeToOpen = reverseMap;\n canonical = parseCharacterMap(data$1.canonical, false).map;\n //console.log(`brackets parsed in ${performance.now() - start}ms`)\n }\n }\n\n function openingToClosingBracket (char) {\n parse$1();\n return openToClose.get(char) || null\n }\n\n function closingToOpeningBracket (char) {\n parse$1();\n return closeToOpen.get(char) || null\n }\n\n function getCanonicalBracket (char) {\n parse$1();\n return canonical.get(char) || null\n }\n\n // Local type aliases\n var TYPE_L = TYPES.L;\n var TYPE_R = TYPES.R;\n var TYPE_EN = TYPES.EN;\n var TYPE_ES = TYPES.ES;\n var TYPE_ET = TYPES.ET;\n var TYPE_AN = TYPES.AN;\n var TYPE_CS = TYPES.CS;\n var TYPE_B = TYPES.B;\n var TYPE_S = TYPES.S;\n var TYPE_ON = TYPES.ON;\n var TYPE_BN = TYPES.BN;\n var TYPE_NSM = TYPES.NSM;\n var TYPE_AL = TYPES.AL;\n var TYPE_LRO = TYPES.LRO;\n var TYPE_RLO = TYPES.RLO;\n var TYPE_LRE = TYPES.LRE;\n var TYPE_RLE = TYPES.RLE;\n var TYPE_PDF = TYPES.PDF;\n var TYPE_LRI = TYPES.LRI;\n var TYPE_RLI = TYPES.RLI;\n var TYPE_FSI = TYPES.FSI;\n var TYPE_PDI = TYPES.PDI;\n\n /**\n * @typedef {object} GetEmbeddingLevelsResult\n * @property {{start, end, level}[]} paragraphs\n * @property {Uint8Array} levels\n */\n\n /**\n * This function applies the Bidirectional Algorithm to a string, returning the resolved embedding levels\n * in a single Uint8Array plus a list of objects holding each paragraph's start and end indices and resolved\n * base embedding level.\n *\n * @param {string} string - The input string\n * @param {\"ltr\"|\"rtl\"|\"auto\"} [baseDirection] - Use \"ltr\" or \"rtl\" to force a base paragraph direction,\n * otherwise a direction will be chosen automatically from each paragraph's contents.\n * @return {GetEmbeddingLevelsResult}\n */\n function getEmbeddingLevels (string, baseDirection) {\n var MAX_DEPTH = 125;\n\n // Start by mapping all characters to their unicode type, as a bitmask integer\n var charTypes = new Uint32Array(string.length);\n for (var i = 0; i < string.length; i++) {\n charTypes[i] = getBidiCharType(string[i]);\n }\n\n var charTypeCounts = new Map(); //will be cleared at start of each paragraph\n function changeCharType(i, type) {\n var oldType = charTypes[i];\n charTypes[i] = type;\n charTypeCounts.set(oldType, charTypeCounts.get(oldType) - 1);\n if (oldType & NEUTRAL_ISOLATE_TYPES) {\n charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) - 1);\n }\n charTypeCounts.set(type, (charTypeCounts.get(type) || 0) + 1);\n if (type & NEUTRAL_ISOLATE_TYPES) {\n charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n }\n }\n\n var embedLevels = new Uint8Array(string.length);\n var isolationPairs = new Map(); //init->pdi and pdi->init\n\n // === 3.3.1 The Paragraph Level ===\n // 3.3.1 P1: Split the text into paragraphs\n var paragraphs = []; // [{start, end, level}, ...]\n var paragraph = null;\n for (var i$1 = 0; i$1 < string.length; i$1++) {\n if (!paragraph) {\n paragraphs.push(paragraph = {\n start: i$1,\n end: string.length - 1,\n // 3.3.1 P2-P3: Determine the paragraph level\n level: baseDirection === 'rtl' ? 1 : baseDirection === 'ltr' ? 0 : determineAutoEmbedLevel(i$1, false)\n });\n }\n if (charTypes[i$1] & TYPE_B) {\n paragraph.end = i$1;\n paragraph = null;\n }\n }\n\n var FORMATTING_TYPES = TYPE_RLE | TYPE_LRE | TYPE_RLO | TYPE_LRO | ISOLATE_INIT_TYPES | TYPE_PDI | TYPE_PDF | TYPE_B;\n var nextEven = function (n) { return n + ((n & 1) ? 1 : 2); };\n var nextOdd = function (n) { return n + ((n & 1) ? 2 : 1); };\n\n // Everything from here on will operate per paragraph.\n for (var paraIdx = 0; paraIdx < paragraphs.length; paraIdx++) {\n paragraph = paragraphs[paraIdx];\n var statusStack = [{\n _level: paragraph.level,\n _override: 0, //0=neutral, 1=L, 2=R\n _isolate: 0 //bool\n }];\n var stackTop = (void 0);\n var overflowIsolateCount = 0;\n var overflowEmbeddingCount = 0;\n var validIsolateCount = 0;\n charTypeCounts.clear();\n\n // === 3.3.2 Explicit Levels and Directions ===\n for (var i$2 = paragraph.start; i$2 <= paragraph.end; i$2++) {\n var charType = charTypes[i$2];\n stackTop = statusStack[statusStack.length - 1];\n\n // Set initial counts\n charTypeCounts.set(charType, (charTypeCounts.get(charType) || 0) + 1);\n if (charType & NEUTRAL_ISOLATE_TYPES) {\n charTypeCounts.set(NEUTRAL_ISOLATE_TYPES, (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES) || 0) + 1);\n }\n\n // Explicit Embeddings: 3.3.2 X2 - X3\n if (charType & FORMATTING_TYPES) { //prefilter all formatters\n if (charType & (TYPE_RLE | TYPE_LRE)) {\n embedLevels[i$2] = stackTop._level; // 5.2\n var level = (charType === TYPE_RLE ? nextOdd : nextEven)(stackTop._level);\n if (level <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n statusStack.push({\n _level: level,\n _override: 0,\n _isolate: 0\n });\n } else if (!overflowIsolateCount) {\n overflowEmbeddingCount++;\n }\n }\n\n // Explicit Overrides: 3.3.2 X4 - X5\n else if (charType & (TYPE_RLO | TYPE_LRO)) {\n embedLevels[i$2] = stackTop._level; // 5.2\n var level$1 = (charType === TYPE_RLO ? nextOdd : nextEven)(stackTop._level);\n if (level$1 <= MAX_DEPTH && !overflowIsolateCount && !overflowEmbeddingCount) {\n statusStack.push({\n _level: level$1,\n _override: (charType & TYPE_RLO) ? TYPE_R : TYPE_L,\n _isolate: 0\n });\n } else if (!overflowIsolateCount) {\n overflowEmbeddingCount++;\n }\n }\n\n // Isolates: 3.3.2 X5a - X5c\n else if (charType & ISOLATE_INIT_TYPES) {\n // X5c - FSI becomes either RLI or LRI\n if (charType & TYPE_FSI) {\n charType = determineAutoEmbedLevel(i$2 + 1, true) === 1 ? TYPE_RLI : TYPE_LRI;\n }\n\n embedLevels[i$2] = stackTop._level;\n if (stackTop._override) {\n changeCharType(i$2, stackTop._override);\n }\n var level$2 = (charType === TYPE_RLI ? nextOdd : nextEven)(stackTop._level);\n if (level$2 <= MAX_DEPTH && overflowIsolateCount === 0 && overflowEmbeddingCount === 0) {\n validIsolateCount++;\n statusStack.push({\n _level: level$2,\n _override: 0,\n _isolate: 1,\n _isolInitIndex: i$2\n });\n } else {\n overflowIsolateCount++;\n }\n }\n\n // Terminating Isolates: 3.3.2 X6a\n else if (charType & TYPE_PDI) {\n if (overflowIsolateCount > 0) {\n overflowIsolateCount--;\n } else if (validIsolateCount > 0) {\n overflowEmbeddingCount = 0;\n while (!statusStack[statusStack.length - 1]._isolate) {\n statusStack.pop();\n }\n // Add to isolation pairs bidirectional mapping:\n var isolInitIndex = statusStack[statusStack.length - 1]._isolInitIndex;\n if (isolInitIndex != null) {\n isolationPairs.set(isolInitIndex, i$2);\n isolationPairs.set(i$2, isolInitIndex);\n }\n statusStack.pop();\n validIsolateCount--;\n }\n stackTop = statusStack[statusStack.length - 1];\n embedLevels[i$2] = stackTop._level;\n if (stackTop._override) {\n changeCharType(i$2, stackTop._override);\n }\n }\n\n\n // Terminating Embeddings and Overrides: 3.3.2 X7\n else if (charType & TYPE_PDF) {\n if (overflowIsolateCount === 0) {\n if (overflowEmbeddingCount > 0) {\n overflowEmbeddingCount--;\n } else if (!stackTop._isolate && statusStack.length > 1) {\n statusStack.pop();\n stackTop = statusStack[statusStack.length - 1];\n }\n }\n embedLevels[i$2] = stackTop._level; // 5.2\n }\n\n // End of Paragraph: 3.3.2 X8\n else if (charType & TYPE_B) {\n embedLevels[i$2] = paragraph.level;\n }\n }\n\n // Non-formatting characters: 3.3.2 X6\n else {\n embedLevels[i$2] = stackTop._level;\n // NOTE: This exclusion of BN seems to go against what section 5.2 says, but is required for test passage\n if (stackTop._override && charType !== TYPE_BN) {\n changeCharType(i$2, stackTop._override);\n }\n }\n }\n\n // === 3.3.3 Preparations for Implicit Processing ===\n\n // Remove all RLE, LRE, RLO, LRO, PDF, and BN characters: 3.3.3 X9\n // Note: Due to section 5.2, we won't remove them, but we'll use the BN_LIKE_TYPES bitset to\n // easily ignore them all from here on out.\n\n // 3.3.3 X10\n // Compute the set of isolating run sequences as specified by BD13\n var levelRuns = [];\n var currentRun = null;\n for (var i$3 = paragraph.start; i$3 <= paragraph.end; i$3++) {\n var charType$1 = charTypes[i$3];\n if (!(charType$1 & BN_LIKE_TYPES)) {\n var lvl = embedLevels[i$3];\n var isIsolInit = charType$1 & ISOLATE_INIT_TYPES;\n var isPDI = charType$1 === TYPE_PDI;\n if (currentRun && lvl === currentRun._level) {\n currentRun._end = i$3;\n currentRun._endsWithIsolInit = isIsolInit;\n } else {\n levelRuns.push(currentRun = {\n _start: i$3,\n _end: i$3,\n _level: lvl,\n _startsWithPDI: isPDI,\n _endsWithIsolInit: isIsolInit\n });\n }\n }\n }\n var isolatingRunSeqs = []; // [{seqIndices: [], sosType: L|R, eosType: L|R}]\n for (var runIdx = 0; runIdx < levelRuns.length; runIdx++) {\n var run = levelRuns[runIdx];\n if (!run._startsWithPDI || (run._startsWithPDI && !isolationPairs.has(run._start))) {\n var seqRuns = [currentRun = run];\n for (var pdiIndex = (void 0); currentRun && currentRun._endsWithIsolInit && (pdiIndex = isolationPairs.get(currentRun._end)) != null;) {\n for (var i$4 = runIdx + 1; i$4 < levelRuns.length; i$4++) {\n if (levelRuns[i$4]._start === pdiIndex) {\n seqRuns.push(currentRun = levelRuns[i$4]);\n break\n }\n }\n }\n // build flat list of indices across all runs:\n var seqIndices = [];\n for (var i$5 = 0; i$5 < seqRuns.length; i$5++) {\n var run$1 = seqRuns[i$5];\n for (var j = run$1._start; j <= run$1._end; j++) {\n seqIndices.push(j);\n }\n }\n // determine the sos/eos types:\n var firstLevel = embedLevels[seqIndices[0]];\n var prevLevel = paragraph.level;\n for (var i$6 = seqIndices[0] - 1; i$6 >= 0; i$6--) {\n if (!(charTypes[i$6] & BN_LIKE_TYPES)) { //5.2\n prevLevel = embedLevels[i$6];\n break\n }\n }\n var lastIndex = seqIndices[seqIndices.length - 1];\n var lastLevel = embedLevels[lastIndex];\n var nextLevel = paragraph.level;\n if (!(charTypes[lastIndex] & ISOLATE_INIT_TYPES)) {\n for (var i$7 = lastIndex + 1; i$7 <= paragraph.end; i$7++) {\n if (!(charTypes[i$7] & BN_LIKE_TYPES)) { //5.2\n nextLevel = embedLevels[i$7];\n break\n }\n }\n }\n isolatingRunSeqs.push({\n _seqIndices: seqIndices,\n _sosType: Math.max(prevLevel, firstLevel) % 2 ? TYPE_R : TYPE_L,\n _eosType: Math.max(nextLevel, lastLevel) % 2 ? TYPE_R : TYPE_L\n });\n }\n }\n\n // The next steps are done per isolating run sequence\n for (var seqIdx = 0; seqIdx < isolatingRunSeqs.length; seqIdx++) {\n var ref = isolatingRunSeqs[seqIdx];\n var seqIndices$1 = ref._seqIndices;\n var sosType = ref._sosType;\n var eosType = ref._eosType;\n /**\n * All the level runs in an isolating run sequence have the same embedding level.\n * \n * DO NOT change any `embedLevels[i]` within the current scope.\n */\n var embedDirection = ((embedLevels[seqIndices$1[0]]) & 1) ? TYPE_R : TYPE_L;\n\n // === 3.3.4 Resolving Weak Types ===\n\n // W1 + 5.2. Search backward from each NSM to the first character in the isolating run sequence whose\n // bidirectional type is not BN, and set the NSM to ON if it is an isolate initiator or PDI, and to its\n // type otherwise. If the NSM is the first non-BN character, change the NSM to the type of sos.\n if (charTypeCounts.get(TYPE_NSM)) {\n for (var si = 0; si < seqIndices$1.length; si++) {\n var i$8 = seqIndices$1[si];\n if (charTypes[i$8] & TYPE_NSM) {\n var prevType = sosType;\n for (var sj = si - 1; sj >= 0; sj--) {\n if (!(charTypes[seqIndices$1[sj]] & BN_LIKE_TYPES)) { //5.2 scan back to first non-BN\n prevType = charTypes[seqIndices$1[sj]];\n break\n }\n }\n changeCharType(i$8, (prevType & (ISOLATE_INIT_TYPES | TYPE_PDI)) ? TYPE_ON : prevType);\n }\n }\n }\n\n // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sos)\n // is found. If an AL is found, change the type of the European number to Arabic number.\n if (charTypeCounts.get(TYPE_EN)) {\n for (var si$1 = 0; si$1 < seqIndices$1.length; si$1++) {\n var i$9 = seqIndices$1[si$1];\n if (charTypes[i$9] & TYPE_EN) {\n for (var sj$1 = si$1 - 1; sj$1 >= -1; sj$1--) {\n var prevCharType = sj$1 === -1 ? sosType : charTypes[seqIndices$1[sj$1]];\n if (prevCharType & STRONG_TYPES) {\n if (prevCharType === TYPE_AL) {\n changeCharType(i$9, TYPE_AN);\n }\n break\n }\n }\n }\n }\n }\n\n // W3. Change all ALs to R\n if (charTypeCounts.get(TYPE_AL)) {\n for (var si$2 = 0; si$2 < seqIndices$1.length; si$2++) {\n var i$10 = seqIndices$1[si$2];\n if (charTypes[i$10] & TYPE_AL) {\n changeCharType(i$10, TYPE_R);\n }\n }\n }\n\n // W4. A single European separator between two European numbers changes to a European number. A single common\n // separator between two numbers of the same type changes to that type.\n if (charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n for (var si$3 = 1; si$3 < seqIndices$1.length - 1; si$3++) {\n var i$11 = seqIndices$1[si$3];\n if (charTypes[i$11] & (TYPE_ES | TYPE_CS)) {\n var prevType$1 = 0, nextType = 0;\n for (var sj$2 = si$3 - 1; sj$2 >= 0; sj$2--) {\n prevType$1 = charTypes[seqIndices$1[sj$2]];\n if (!(prevType$1 & BN_LIKE_TYPES)) { //5.2\n break\n }\n }\n for (var sj$3 = si$3 + 1; sj$3 < seqIndices$1.length; sj$3++) {\n nextType = charTypes[seqIndices$1[sj$3]];\n if (!(nextType & BN_LIKE_TYPES)) { //5.2\n break\n }\n }\n if (prevType$1 === nextType && (charTypes[i$11] === TYPE_ES ? prevType$1 === TYPE_EN : (prevType$1 & (TYPE_EN | TYPE_AN)))) {\n changeCharType(i$11, prevType$1);\n }\n }\n }\n }\n\n // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers.\n if (charTypeCounts.get(TYPE_EN)) {\n for (var si$4 = 0; si$4 < seqIndices$1.length; si$4++) {\n var i$12 = seqIndices$1[si$4];\n if (charTypes[i$12] & TYPE_EN) {\n for (var sj$4 = si$4 - 1; sj$4 >= 0 && (charTypes[seqIndices$1[sj$4]] & (TYPE_ET | BN_LIKE_TYPES)); sj$4--) {\n changeCharType(seqIndices$1[sj$4], TYPE_EN);\n }\n for (si$4++; si$4 < seqIndices$1.length && (charTypes[seqIndices$1[si$4]] & (TYPE_ET | BN_LIKE_TYPES | TYPE_EN)); si$4++) {\n if (charTypes[seqIndices$1[si$4]] !== TYPE_EN) {\n changeCharType(seqIndices$1[si$4], TYPE_EN);\n }\n }\n }\n }\n }\n\n // W6. Otherwise, separators and terminators change to Other Neutral.\n if (charTypeCounts.get(TYPE_ET) || charTypeCounts.get(TYPE_ES) || charTypeCounts.get(TYPE_CS)) {\n for (var si$5 = 0; si$5 < seqIndices$1.length; si$5++) {\n var i$13 = seqIndices$1[si$5];\n if (charTypes[i$13] & (TYPE_ET | TYPE_ES | TYPE_CS)) {\n changeCharType(i$13, TYPE_ON);\n // 5.2 transform adjacent BNs too:\n for (var sj$5 = si$5 - 1; sj$5 >= 0 && (charTypes[seqIndices$1[sj$5]] & BN_LIKE_TYPES); sj$5--) {\n changeCharType(seqIndices$1[sj$5], TYPE_ON);\n }\n for (var sj$6 = si$5 + 1; sj$6 < seqIndices$1.length && (charTypes[seqIndices$1[sj$6]] & BN_LIKE_TYPES); sj$6++) {\n changeCharType(seqIndices$1[sj$6], TYPE_ON);\n }\n }\n }\n }\n\n // W7. Search backward from each instance of a European number until the first strong type (R, L, or sos)\n // is found. If an L is found, then change the type of the European number to L.\n // NOTE: implemented in single forward pass for efficiency\n if (charTypeCounts.get(TYPE_EN)) {\n for (var si$6 = 0, prevStrongType = sosType; si$6 < seqIndices$1.length; si$6++) {\n var i$14 = seqIndices$1[si$6];\n var type = charTypes[i$14];\n if (type & TYPE_EN) {\n if (prevStrongType === TYPE_L) {\n changeCharType(i$14, TYPE_L);\n }\n } else if (type & STRONG_TYPES) {\n prevStrongType = type;\n }\n }\n }\n\n // === 3.3.5 Resolving Neutral and Isolate Formatting Types ===\n\n if (charTypeCounts.get(NEUTRAL_ISOLATE_TYPES)) {\n // N0. Process bracket pairs in an isolating run sequence sequentially in the logical order of the text\n // positions of the opening paired brackets using the logic given below. Within this scope, bidirectional\n // types EN and AN are treated as R.\n var R_TYPES_FOR_N_STEPS = (TYPE_R | TYPE_EN | TYPE_AN);\n var STRONG_TYPES_FOR_N_STEPS = R_TYPES_FOR_N_STEPS | TYPE_L;\n\n // * Identify the bracket pairs in the current isolating run sequence according to BD16.\n var bracketPairs = [];\n {\n var openerStack = [];\n for (var si$7 = 0; si$7 < seqIndices$1.length; si$7++) {\n // NOTE: for any potential bracket character we also test that it still carries a NI\n // type, as that may have been changed earlier. This doesn't seem to be explicitly\n // called out in the spec, but is required for passage of certain tests.\n if (charTypes[seqIndices$1[si$7]] & NEUTRAL_ISOLATE_TYPES) {\n var char = string[seqIndices$1[si$7]];\n var oppositeBracket = (void 0);\n // Opening bracket\n if (openingToClosingBracket(char) !== null) {\n if (openerStack.length < 63) {\n openerStack.push({ char: char, seqIndex: si$7 });\n } else {\n break\n }\n }\n // Closing bracket\n else if ((oppositeBracket = closingToOpeningBracket(char)) !== null) {\n for (var stackIdx = openerStack.length - 1; stackIdx >= 0; stackIdx--) {\n var stackChar = openerStack[stackIdx].char;\n if (stackChar === oppositeBracket ||\n stackChar === closingToOpeningBracket(getCanonicalBracket(char)) ||\n openingToClosingBracket(getCanonicalBracket(stackChar)) === char\n ) {\n bracketPairs.push([openerStack[stackIdx].seqIndex, si$7]);\n openerStack.length = stackIdx; //pop the matching bracket and all following\n break\n }\n }\n }\n }\n }\n bracketPairs.sort(function (a, b) { return a[0] - b[0]; });\n }\n // * For each bracket-pair element in the list of pairs of text positions\n for (var pairIdx = 0; pairIdx < bracketPairs.length; pairIdx++) {\n var ref$1 = bracketPairs[pairIdx];\n var openSeqIdx = ref$1[0];\n var closeSeqIdx = ref$1[1];\n // a. Inspect the bidirectional types of the characters enclosed within the bracket pair.\n // b. If any strong type (either L or R) matching the embedding direction is found, set the type for both\n // brackets in the pair to match the embedding direction.\n var foundStrongType = false;\n var useStrongType = 0;\n for (var si$8 = openSeqIdx + 1; si$8 < closeSeqIdx; si$8++) {\n var i$15 = seqIndices$1[si$8];\n if (charTypes[i$15] & STRONG_TYPES_FOR_N_STEPS) {\n foundStrongType = true;\n var lr = (charTypes[i$15] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n if (lr === embedDirection) {\n useStrongType = lr;\n break\n }\n }\n }\n // c. Otherwise, if there is a strong type it must be opposite the embedding direction. Therefore, test\n // for an established context with a preceding strong type by checking backwards before the opening paired\n // bracket until the first strong type (L, R, or sos) is found.\n // 1. If the preceding strong type is also opposite the embedding direction, context is established, so\n // set the type for both brackets in the pair to that direction.\n // 2. Otherwise set the type for both brackets in the pair to the embedding direction.\n if (foundStrongType && !useStrongType) {\n useStrongType = sosType;\n for (var si$9 = openSeqIdx - 1; si$9 >= 0; si$9--) {\n var i$16 = seqIndices$1[si$9];\n if (charTypes[i$16] & STRONG_TYPES_FOR_N_STEPS) {\n var lr$1 = (charTypes[i$16] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n if (lr$1 !== embedDirection) {\n useStrongType = lr$1;\n } else {\n useStrongType = embedDirection;\n }\n break\n }\n }\n }\n if (useStrongType) {\n charTypes[seqIndices$1[openSeqIdx]] = charTypes[seqIndices$1[closeSeqIdx]] = useStrongType;\n // * Any number of characters that had original bidirectional character type NSM prior to the application\n // of W1 that immediately follow a paired bracket which changed to L or R under N0 should change to match\n // the type of their preceding bracket.\n if (useStrongType !== embedDirection) {\n for (var si$10 = openSeqIdx + 1; si$10 < seqIndices$1.length; si$10++) {\n if (!(charTypes[seqIndices$1[si$10]] & BN_LIKE_TYPES)) {\n if (getBidiCharType(string[seqIndices$1[si$10]]) & TYPE_NSM) {\n charTypes[seqIndices$1[si$10]] = useStrongType;\n }\n break\n }\n }\n }\n if (useStrongType !== embedDirection) {\n for (var si$11 = closeSeqIdx + 1; si$11 < seqIndices$1.length; si$11++) {\n if (!(charTypes[seqIndices$1[si$11]] & BN_LIKE_TYPES)) {\n if (getBidiCharType(string[seqIndices$1[si$11]]) & TYPE_NSM) {\n charTypes[seqIndices$1[si$11]] = useStrongType;\n }\n break\n }\n }\n }\n }\n }\n\n // N1. A sequence of NIs takes the direction of the surrounding strong text if the text on both sides has the\n // same direction.\n // N2. Any remaining NIs take the embedding direction.\n for (var si$12 = 0; si$12 < seqIndices$1.length; si$12++) {\n if (charTypes[seqIndices$1[si$12]] & NEUTRAL_ISOLATE_TYPES) {\n var niRunStart = si$12, niRunEnd = si$12;\n var prevType$2 = sosType; //si === 0 ? sosType : (charTypes[seqIndices[si - 1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L\n for (var si2 = si$12 - 1; si2 >= 0; si2--) {\n if (charTypes[seqIndices$1[si2]] & BN_LIKE_TYPES) {\n niRunStart = si2; //5.2 treat BNs adjacent to NIs as NIs\n } else {\n prevType$2 = (charTypes[seqIndices$1[si2]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n break\n }\n }\n var nextType$1 = eosType;\n for (var si2$1 = si$12 + 1; si2$1 < seqIndices$1.length; si2$1++) {\n if (charTypes[seqIndices$1[si2$1]] & (NEUTRAL_ISOLATE_TYPES | BN_LIKE_TYPES)) {\n niRunEnd = si2$1;\n } else {\n nextType$1 = (charTypes[seqIndices$1[si2$1]] & R_TYPES_FOR_N_STEPS) ? TYPE_R : TYPE_L;\n break\n }\n }\n for (var sj$7 = niRunStart; sj$7 <= niRunEnd; sj$7++) {\n charTypes[seqIndices$1[sj$7]] = prevType$2 === nextType$1 ? prevType$2 : embedDirection;\n }\n si$12 = niRunEnd;\n }\n }\n }\n }\n\n // === 3.3.6 Resolving Implicit Levels ===\n\n for (var i$17 = paragraph.start; i$17 <= paragraph.end; i$17++) {\n var level$3 = embedLevels[i$17];\n var type$1 = charTypes[i$17];\n // I2. For all characters with an odd (right-to-left) embedding level, those of type L, EN or AN go up one level.\n if (level$3 & 1) {\n if (type$1 & (TYPE_L | TYPE_EN | TYPE_AN)) {\n embedLevels[i$17]++;\n }\n }\n // I1. For all characters with an even (left-to-right) embedding level, those of type R go up one level\n // and those of type AN or EN go up two levels.\n else {\n if (type$1 & TYPE_R) {\n embedLevels[i$17]++;\n } else if (type$1 & (TYPE_AN | TYPE_EN)) {\n embedLevels[i$17] += 2;\n }\n }\n\n // 5.2: Resolve any LRE, RLE, LRO, RLO, PDF, or BN to the level of the preceding character if there is one,\n // and otherwise to the base level.\n if (type$1 & BN_LIKE_TYPES) {\n embedLevels[i$17] = i$17 === 0 ? paragraph.level : embedLevels[i$17 - 1];\n }\n\n // 3.4 L1.1-4: Reset the embedding level of segment/paragraph separators, and any sequence of whitespace or\n // isolate formatting characters preceding them or the end of the paragraph, to the paragraph level.\n // NOTE: this will also need to be applied to each individual line ending after line wrapping occurs.\n if (i$17 === paragraph.end || getBidiCharType(string[i$17]) & (TYPE_S | TYPE_B)) {\n for (var j$1 = i$17; j$1 >= 0 && (getBidiCharType(string[j$1]) & TRAILING_TYPES); j$1--) {\n embedLevels[j$1] = paragraph.level;\n }\n }\n }\n }\n\n // DONE! The resolved levels can then be used, after line wrapping, to flip runs of characters\n // according to section 3.4 Reordering Resolved Levels\n return {\n levels: embedLevels,\n paragraphs: paragraphs\n }\n\n function determineAutoEmbedLevel (start, isFSI) {\n // 3.3.1 P2 - P3\n for (var i = start; i < string.length; i++) {\n var charType = charTypes[i];\n if (charType & (TYPE_R | TYPE_AL)) {\n return 1\n }\n if ((charType & (TYPE_B | TYPE_L)) || (isFSI && charType === TYPE_PDI)) {\n return 0\n }\n if (charType & ISOLATE_INIT_TYPES) {\n var pdi = indexOfMatchingPDI(i);\n i = pdi === -1 ? string.length : pdi;\n }\n }\n return 0\n }\n\n function indexOfMatchingPDI (isolateStart) {\n // 3.1.2 BD9\n var isolationLevel = 1;\n for (var i = isolateStart + 1; i < string.length; i++) {\n var charType = charTypes[i];\n if (charType & TYPE_B) {\n break\n }\n if (charType & TYPE_PDI) {\n if (--isolationLevel === 0) {\n return i\n }\n } else if (charType & ISOLATE_INIT_TYPES) {\n isolationLevel++;\n }\n }\n return -1\n }\n }\n\n // Bidi mirrored chars data, auto generated\n var data = \"14>1,j>2,t>2,u>2,1a>g,2v3>1,1>1,1ge>1,1wd>1,b>1,1j>1,f>1,ai>3,-2>3,+1,8>1k0,-1jq>1y7,-1y6>1hf,-1he>1h6,-1h5>1ha,-1h8>1qi,-1pu>1,6>3u,-3s>7,6>1,1>1,f>1,1>1,+2,3>1,1>1,+13,4>1,1>1,6>1eo,-1ee>1,3>1mg,-1me>1mk,-1mj>1mi,-1mg>1mi,-1md>1,1>1,+2,1>10k,-103>1,1>1,4>1,5>1,1>1,+10,3>1,1>8,-7>8,+1,-6>7,+1,a>1,1>1,u>1,u6>1,1>1,+5,26>1,1>1,2>1,2>2,8>1,7>1,4>1,1>1,+5,b8>1,1>1,+3,1>3,-2>1,2>1,1>1,+2,c>1,3>1,1>1,+2,h>1,3>1,a>1,1>1,2>1,3>1,1>1,d>1,f>1,3>1,1a>1,1>1,6>1,7>1,13>1,k>1,1>1,+19,4>1,1>1,+2,2>1,1>1,+18,m>1,a>1,1>1,lk>1,1>1,4>1,2>1,f>1,3>1,1>1,+3,db>1,1>1,+3,3>1,1>1,+2,14qm>1,1>1,+1,6>1,4j>1,j>2,t>2,u>2,2>1,+1\";\n\n var mirrorMap;\n\n function parse () {\n if (!mirrorMap) {\n //const start = performance.now()\n var ref = parseCharacterMap(data, true);\n var map = ref.map;\n var reverseMap = ref.reverseMap;\n // Combine both maps into one\n reverseMap.forEach(function (value, key) {\n map.set(key, value);\n });\n mirrorMap = map;\n //console.log(`mirrored chars parsed in ${performance.now() - start}ms`)\n }\n }\n\n function getMirroredCharacter (char) {\n parse();\n return mirrorMap.get(char) || null\n }\n\n /**\n * Given a string and its resolved embedding levels, build a map of indices to replacement chars\n * for any characters in right-to-left segments that have defined mirrored characters.\n * @param string\n * @param embeddingLevels\n * @param [start]\n * @param [end]\n * @return {Map}\n */\n function getMirroredCharactersMap(string, embeddingLevels, start, end) {\n var strLen = string.length;\n start = Math.max(0, start == null ? 0 : +start);\n end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n var map = new Map();\n for (var i = start; i <= end; i++) {\n if (embeddingLevels[i] & 1) { //only odd (rtl) levels\n var mirror = getMirroredCharacter(string[i]);\n if (mirror !== null) {\n map.set(i, mirror);\n }\n }\n }\n return map\n }\n\n /**\n * Given a start and end denoting a single line within a string, and a set of precalculated\n * bidi embedding levels, produce a list of segments whose ordering should be flipped, in sequence.\n * @param {string} string - the full input string\n * @param {GetEmbeddingLevelsResult} embeddingLevelsResult - the result object from getEmbeddingLevels\n * @param {number} [start] - first character in a subset of the full string\n * @param {number} [end] - last character in a subset of the full string\n * @return {number[][]} - the list of start/end segments that should be flipped, in order.\n */\n function getReorderSegments(string, embeddingLevelsResult, start, end) {\n var strLen = string.length;\n start = Math.max(0, start == null ? 0 : +start);\n end = Math.min(strLen - 1, end == null ? strLen - 1 : +end);\n\n var segments = [];\n embeddingLevelsResult.paragraphs.forEach(function (paragraph) {\n var lineStart = Math.max(start, paragraph.start);\n var lineEnd = Math.min(end, paragraph.end);\n if (lineStart < lineEnd) {\n // Local slice for mutation\n var lineLevels = embeddingLevelsResult.levels.slice(lineStart, lineEnd + 1);\n\n // 3.4 L1.4: Reset any sequence of whitespace characters and/or isolate formatting characters at the\n // end of the line to the paragraph level.\n for (var i = lineEnd; i >= lineStart && (getBidiCharType(string[i]) & TRAILING_TYPES); i--) {\n lineLevels[i] = paragraph.level;\n }\n\n // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels\n // not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher.\n var maxLevel = paragraph.level;\n var minOddLevel = Infinity;\n for (var i$1 = 0; i$1 < lineLevels.length; i$1++) {\n var level = lineLevels[i$1];\n if (level > maxLevel) { maxLevel = level; }\n if (level < minOddLevel) { minOddLevel = level | 1; }\n }\n for (var lvl = maxLevel; lvl >= minOddLevel; lvl--) {\n for (var i$2 = 0; i$2 < lineLevels.length; i$2++) {\n if (lineLevels[i$2] >= lvl) {\n var segStart = i$2;\n while (i$2 + 1 < lineLevels.length && lineLevels[i$2 + 1] >= lvl) {\n i$2++;\n }\n if (i$2 > segStart) {\n segments.push([segStart + lineStart, i$2 + lineStart]);\n }\n }\n }\n }\n }\n });\n return segments\n }\n\n /**\n * @param {string} string\n * @param {GetEmbeddingLevelsResult} embedLevelsResult\n * @param {number} [start]\n * @param {number} [end]\n * @return {string} the new string with bidi segments reordered\n */\n function getReorderedString(string, embedLevelsResult, start, end) {\n var indices = getReorderedIndices(string, embedLevelsResult, start, end);\n var chars = [].concat( string );\n indices.forEach(function (charIndex, i) {\n chars[i] = (\n (embedLevelsResult.levels[charIndex] & 1) ? getMirroredCharacter(string[charIndex]) : null\n ) || string[charIndex];\n });\n return chars.join('')\n }\n\n /**\n * @param {string} string\n * @param {GetEmbeddingLevelsResult} embedLevelsResult\n * @param {number} [start]\n * @param {number} [end]\n * @return {number[]} an array with character indices in their new bidi order\n */\n function getReorderedIndices(string, embedLevelsResult, start, end) {\n var segments = getReorderSegments(string, embedLevelsResult, start, end);\n // Fill an array with indices\n var indices = [];\n for (var i = 0; i < string.length; i++) {\n indices[i] = i;\n }\n // Reverse each segment in order\n segments.forEach(function (ref) {\n var start = ref[0];\n var end = ref[1];\n\n var slice = indices.slice(start, end + 1);\n for (var i = slice.length; i--;) {\n indices[end - i] = slice[i];\n }\n });\n return indices\n }\n\n exports.closingToOpeningBracket = closingToOpeningBracket;\n exports.getBidiCharType = getBidiCharType;\n exports.getBidiCharTypeName = getBidiCharTypeName;\n exports.getCanonicalBracket = getCanonicalBracket;\n exports.getEmbeddingLevels = getEmbeddingLevels;\n exports.getMirroredCharacter = getMirroredCharacter;\n exports.getMirroredCharactersMap = getMirroredCharactersMap;\n exports.getReorderSegments = getReorderSegments;\n exports.getReorderedIndices = getReorderedIndices;\n exports.getReorderedString = getReorderedString;\n exports.openingToClosingBracket = openingToClosingBracket;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n}({}));\nreturn bidi}\n\nexport default bidiFactory;\n","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nfunction _createForOfIteratorHelperLoose(r, e) {\n var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (t) return (t = t.call(r)).next.bind(t);\n if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n t && (r = t);\n var o = 0;\n return function () {\n return o >= r.length ? {\n done: !0\n } : {\n done: !1,\n value: r[o++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _createForOfIteratorHelperLoose as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","import { isNil, last, repeat, dropLast as dropLast$2, adjust, compose } from '@react-pdf/fns';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/objectWithoutPropertiesLoose';\nimport bidiFactory from 'bidi-js';\nimport _createForOfIteratorHelperLoose from '@babel/runtime/helpers/createForOfIteratorHelperLoose';\nimport unicode from 'unicode-properties';\nimport hyphen from 'hyphen';\nimport pattern from 'hyphen/patterns/en-us.js';\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Fragment} Fragment\n */\n\n/**\n * Create attributed string from text fragments\n *\n * @param {Fragment[]} fragments fragments\n * @returns {AttributedString} attributed string\n */\nvar fromFragments = function fromFragments(fragments) {\n var offset = 0;\n var string = '';\n var runs = [];\n fragments.forEach(function (fragment) {\n string += fragment.string;\n runs.push(_extends({}, fragment, {\n start: offset,\n end: offset + fragment.string.length,\n attributes: fragment.attributes || {}\n }));\n offset += fragment.string.length;\n });\n return {\n string: string,\n runs: runs\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Default word hyphenation engine used when no one provided.\n * Does not perform word hyphenation at all\n *\n * @param {string} word\n * @returns {[string]} same word\n */\nvar defaultHyphenationEngine = function defaultHyphenationEngine(word) {\n return [word];\n};\n\n/**\n * Wrap words of attribute string\n *\n * @param {Object} engines layout engines\n * @param {Object} options layout options\n */\nvar wrapWords = function wrapWords(engines, options) {\n if (engines === void 0) {\n engines = {};\n }\n if (options === void 0) {\n options = {};\n }\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string including syllables\n */\n return function (attributedString) {\n var _engines$wordHyphenat, _engines;\n var syllables = [];\n var fragments = [];\n var hyphenateWord = options.hyphenationCallback || ((_engines$wordHyphenat = (_engines = engines).wordHyphenation) === null || _engines$wordHyphenat === void 0 ? void 0 : _engines$wordHyphenat.call(_engines, options)) || defaultHyphenationEngine;\n for (var i = 0; i < attributedString.runs.length; i += 1) {\n var string = '';\n var run = attributedString.runs[i];\n var words = attributedString.string.slice(run.start, run.end).split(/([ ]+)/g).filter(Boolean);\n for (var j = 0; j < words.length; j += 1) {\n var word = words[j];\n var parts = hyphenateWord(word);\n syllables.push.apply(syllables, parts);\n string += parts.join('');\n }\n fragments.push(_extends({}, run, {\n string: string\n }));\n }\n return _extends({}, fromFragments(fragments), {\n syllables: syllables\n });\n };\n};\n\n/**\n * @typedef {import('../types.js').Rect} Rect\n */\n\n/**\n * Clone rect\n *\n * @param {Rect} rect rect\n * @returns {Rect} cloned rect\n */\nvar copy = function copy(rect) {\n return Object.assign({}, rect);\n};\n\n/**\n * @typedef {import('../types.js').Rect} Rect\n */\n\n/**\n *\n * @param {Rect} rect rect\n * @param {number} height height\n * @returns {[Rect, Rect]} partitioned rects\n */\nvar partition = function partition(rect, height) {\n var a = Object.assign({}, rect, {\n height: height\n });\n var b = Object.assign({}, rect, {\n y: rect.y + height,\n height: rect.height - height\n });\n return [a, b];\n};\n\n/**\n * @typedef {import('../types.js').Rect} Rect\n */\n\n/**\n * Crop upper section of rect\n *\n * @param {number} height height\n * @param {Rect} rect rect\n * @returns {Rect} cropped rect\n */\nvar crop = function crop(height, rect) {\n var _partition = partition(rect, height),\n result = _partition[1];\n return result;\n};\n\n/**\n * Get paragraph block height\n *\n * @param {Object} paragraph block\n * @returns {number} paragraph block height\n */\nvar height$2 = function height(paragraph) {\n return paragraph.reduce(function (acc, block) {\n return acc + block.box.height;\n }, 0);\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Calculate run scale\n *\n * @param {Run} run run\n * @returns {number} scale\n */\nvar calculateScale = function calculateScale(run) {\n var _attributes$font;\n var attributes = run.attributes || {};\n var fontSize = attributes.fontSize || 12;\n var unitsPerEm = (_attributes$font = attributes.font) === null || _attributes$font === void 0 ? void 0 : _attributes$font.unitsPerEm;\n return unitsPerEm ? fontSize / unitsPerEm : 0;\n};\n\n/**\n * Get run scale\n *\n * @param {Object} run\n * @returns {number} scale\n */\nvar scale = function scale(run) {\n var _run$attributes;\n return ((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : _run$attributes.scale) || calculateScale(run);\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get ligature offset by index\n *\n * Ex. ffi ligature\n *\n * glyphs: l o f f i m\n * glyphIndices: 0 1 2 2 2 3\n * offset: 0 0 0 1 2 0\n *\n * @param {number} index\n * @param {Run} run run\n * @returns {number} ligature offset\n */\nvar offset = function offset(index, run) {\n if (!run) return 0;\n var glyphIndices = run.glyphIndices || [];\n var value = glyphIndices[index];\n return glyphIndices.slice(0, index).filter(function (i) {\n return i === value;\n }).length;\n};\n\n/**\n * @typedef {import('../types.js').Font} Font\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get run font\n *\n * @param {Run} run run\n * @returns {Font | null} font\n */\nvar getFont = function getFont(run) {\n var _run$attributes;\n return ((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : _run$attributes.font) || null;\n};\n\n/**\n * @typedef {import('../types.js').Font} Font\n * @typedef {import('../types.js').Glyph} Glyph\n */\n\n/**\n * Slice glyph between codePoints range\n * Util for breaking ligatures\n *\n * @param {number} start start code point index\n * @param {number} end end code point index\n * @param {Font} font font to generate new glyph\n * @param {Glyph} glyph glyph to be sliced\n * @returns {Glyph[]} sliced glyph parts\n */\nvar slice$2 = function slice(start, end, font, glyph) {\n if (!glyph) return [];\n if (start === end) return [];\n if (start === 0 && end === glyph.codePoints.length) return [glyph];\n var codePoints = glyph.codePoints.slice(start, end);\n var string = String.fromCodePoint.apply(String, codePoints);\n\n // passing LTR To force fontkit to not reverse the string\n return font ? font.layout(string, undefined, undefined, undefined, 'ltr').glyphs : [glyph];\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Return glyph index at string index, if glyph indices present.\n * Otherwise return string index\n *\n * @param {number} index index\n * @param {Run} run run\n * @returns {number} glyph index\n */\nvar glyphIndexAt = function glyphIndexAt(index, run) {\n var _run$glyphIndices;\n var result = run === null || run === void 0 ? void 0 : (_run$glyphIndices = run.glyphIndices) === null || _run$glyphIndices === void 0 ? void 0 : _run$glyphIndices[index];\n return isNil(result) ? index : result;\n};\n\n/**\n * Returns new array starting with zero, and keeping same relation between consecutive values\n *\n * @param {number[]} array list\n * @returns {number[]} normalized array\n */\nvar normalize = function normalize(array) {\n var head = array[0];\n return array.map(function (value) {\n return value - head;\n });\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Slice run between glyph indices range\n *\n * @param {number} start glyph index\n * @param {number} end glyph index\n * @param {Run} run run\n * @returns {Run} sliced run\n */\nvar slice$1 = function slice(start, end, run) {\n var _run$glyphs, _run$glyphs2;\n var runScale = scale(run);\n var font = getFont(run);\n\n // Get glyph start and end indices\n var startIndex = glyphIndexAt(start, run);\n var endIndex = glyphIndexAt(end, run);\n\n // Get start and end glyph\n var startGlyph = (_run$glyphs = run.glyphs) === null || _run$glyphs === void 0 ? void 0 : _run$glyphs[startIndex];\n var endGlyph = (_run$glyphs2 = run.glyphs) === null || _run$glyphs2 === void 0 ? void 0 : _run$glyphs2[endIndex];\n\n // Get start ligature chunks (if any)\n var startOffset = offset(start, run);\n var startGlyphs = startOffset > 0 ? slice$2(startOffset, Infinity, font, startGlyph) : [];\n\n // Get end ligature chunks (if any)\n var endOffset = offset(end, run);\n var endGlyphs = slice$2(0, endOffset, font, endGlyph);\n\n // Compute new glyphs\n var sliceStart = startIndex + Math.min(1, startOffset);\n var glyphs = (run.glyphs || []).slice(sliceStart, endIndex);\n\n // Compute new positions\n var glyphPosition = function glyphPosition(g) {\n return {\n xAdvance: g.advanceWidth * runScale\n };\n };\n var startPositions = startGlyphs.map(glyphPosition);\n var positions = (run.positions || []).slice(sliceStart, endIndex);\n var endPositions = endGlyphs.map(glyphPosition);\n return Object.assign({}, run, {\n start: run.start + start,\n end: Math.min(run.end, run.start + end),\n glyphIndices: normalize((run.glyphIndices || []).slice(start, end)),\n glyphs: [startGlyphs, glyphs, endGlyphs].flat(),\n positions: [startPositions, positions, endPositions].flat()\n });\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get run index that contains passed index\n *\n * @param {number} n index\n * @param {Run[]} runs runs\n * @returns {number} run index\n */\nvar runIndexAt$1 = function runIndexAt(n, runs) {\n if (!runs) return -1;\n return runs.findIndex(function (run) {\n return run.start <= n && n < run.end;\n });\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Filter runs contained between start and end\n *\n * @param {number} start\n * @param {number} end\n * @param {Run[]} runs\n * @returns {Run[]} filtered runs\n */\nvar filter = function filter(start, end, runs) {\n var startIndex = runIndexAt$1(start, runs);\n var endIndex = Math.max(runIndexAt$1(end - 1, runs), startIndex);\n return runs.slice(startIndex, endIndex + 1);\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Subtract scalar to run\n *\n * @param {number} n scalar\n * @param {Run} run run\n * @returns {Object} subtracted run\n */\nvar subtract = function subtract(n, run) {\n var start = run.start - n;\n var end = run.end - n;\n return Object.assign({}, run, {\n start: start,\n end: end\n });\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Slice array of runs\n *\n * @param {number} start offset\n * @param {number} end offset\n * @param {Run[]} runs\n * @returns {Run[]} sliced runs\n */\nvar sliceRuns = function sliceRuns(start, end, runs) {\n var sliceFirstRun = function sliceFirstRun(a) {\n return slice$1(start - a.start, end - a.start, a);\n };\n var sliceLastRun = function sliceLastRun(a) {\n return slice$1(0, end - a.start, a);\n };\n return runs.map(function (run, i) {\n var result = run;\n var isFirst = i === 0;\n var isLast = !isFirst && i === runs.length - 1;\n if (isFirst) result = sliceFirstRun(run);\n if (isLast) result = sliceLastRun(run);\n return subtract(start, result);\n });\n};\n\n/**\n * Slice attributed string between two indices\n *\n * @param {number} start offset\n * @param {number} end offset\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\nvar slice = function slice(start, end, attributedString) {\n if (attributedString.string.length === 0) return attributedString;\n var string = attributedString.string.slice(start, end);\n var filteredRuns = filter(start, end, attributedString.runs);\n var slicedRuns = sliceRuns(start, end, filteredRuns);\n return Object.assign({}, attributedString, {\n string: string,\n runs: slicedRuns\n });\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * @param {string} string\n * @returns {number} index\n */\nvar findCharIndex = function findCharIndex(string) {\n return string.search(/\\S/g);\n};\n\n/**\n * @param {string} string\n * @returns {number} index\n */\nvar findLastCharIndex = function findLastCharIndex(string) {\n var match = string.match(/\\S/g);\n return match ? string.lastIndexOf(match[match.length - 1]) : -1;\n};\n\n/**\n * Removes (strips) whitespace from both ends of the attributted string.\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\nvar trim = function trim(attributedString) {\n var start = findCharIndex(attributedString.string);\n var end = findLastCharIndex(attributedString.string);\n return slice(start, end + 1, attributedString);\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Returns empty run\n *\n * @returns {Run} empty run\n */\nvar empty$1 = function empty() {\n return {\n start: 0,\n end: 0,\n glyphIndices: [],\n glyphs: [],\n positions: [],\n attributes: {}\n };\n};\n\n/**\n * Check if value is a number\n *\n * @template {unknown} T\n * @param {T} value Value to check\n * @returns {value is number} Whether value is a number\n */\nvar isNumber = function isNumber(value) {\n return typeof value === 'number';\n};\n\n/**\n * Append glyph indices with given length\n *\n * Ex. appendIndices(3, [0, 1, 2, 2]) => [0, 1, 2, 2, 3, 3, 3]\n *\n * @param {number} length length\n * @param {number[]} indices glyph indices\n * @returns {number[]} extended glyph indices\n */\nvar appendIndices = function appendIndices(length, indices) {\n var lastIndex = last(indices);\n var value = isNil(lastIndex) ? 0 : lastIndex + 1;\n var newIndices = Array(length).fill(value);\n return indices.concat(newIndices);\n};\n\n/**\n * @typedef {import('../types.js').Font} Font\n * @typedef {import('../types.js').Glyph} Glyph\n */\n\n/**\n * Get glyph for a given code point\n *\n * @param {number} [value] codePoint\n * @param {Font} [font] font\n * @returns {Glyph} glyph\n * */\nvar fromCodePoint = function fromCodePoint(value, font) {\n return font && value ? font.glyphForCodePoint(value) : null;\n};\n\n/**\n * @typedef {import('../types.js').Glyph} Glyph\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Append glyph to run\n *\n * @param {Glyph} glyph glyph\n * @param {Run} run run\n * @returns {Run} run with glyph\n */\nvar appendGlyph = function appendGlyph(glyph, run) {\n var _glyph$codePoints;\n var glyphLength = ((_glyph$codePoints = glyph.codePoints) === null || _glyph$codePoints === void 0 ? void 0 : _glyph$codePoints.length) || 0;\n var end = run.end + glyphLength;\n var glyphs = run.glyphs.concat(glyph);\n var glyphIndices = appendIndices(glyphLength, run.glyphIndices);\n if (!run.positions) return Object.assign({}, run, {\n end: end,\n glyphs: glyphs,\n glyphIndices: glyphIndices\n });\n var positions = run.positions.concat({\n xAdvance: glyph.advanceWidth * scale(run)\n });\n return Object.assign({}, run, {\n end: end,\n glyphs: glyphs,\n glyphIndices: glyphIndices,\n positions: positions\n });\n};\n\n/**\n * Append glyph or code point to run\n *\n * @param {Glyph | number | undefined} value glyph or codePoint\n * @param {Run} run run\n * @returns {Run} run with glyph\n */\nvar append$1 = function append(value, run) {\n if (!value) return run;\n var font = getFont(run);\n var glyph = isNumber(value) ? fromCodePoint(value, font) : value;\n return appendGlyph(glyph, run);\n};\n\n/**\n * Get string from array of code points\n *\n * @param {number[]} codePoints points\n * @returns {string} string\n */\nvar stringFromCodePoints = function stringFromCodePoints(codePoints) {\n return String.fromCodePoint.apply(String, codePoints || []);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Glyph} Glyph\n */\n\n/**\n * Append glyph into last run of attributed string\n *\n * @param {Glyph} glyph glyph\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string with new glyph\n */\nvar append = function append(glyph, attributedString) {\n var codePoints = (glyph === null || glyph === void 0 ? void 0 : glyph.codePoints) || [];\n var codePointsString = stringFromCodePoints(codePoints);\n var string = attributedString.string + codePointsString;\n var firstRuns = attributedString.runs.slice(0, -1);\n var lastRun = last(attributedString.runs) || empty$1();\n var runs = firstRuns.concat(append$1(glyph, lastRun));\n return Object.assign({}, attributedString, {\n string: string,\n runs: runs\n });\n};\n\nvar ELLIPSIS_UNICODE = 8230;\nvar ELLIPSIS_STRING = String.fromCharCode(ELLIPSIS_UNICODE);\n\n/**\n * Get ellipsis codepoint. This may be different in standard and embedded fonts\n *\n * @param {Object} font\n * @returns {Object} ellipsis codepoint\n */\nvar getEllipsisCodePoint = function getEllipsisCodePoint(font) {\n if (!font.encode) return ELLIPSIS_UNICODE;\n var _font$encode = font.encode(ELLIPSIS_STRING),\n codePoints = _font$encode[0];\n return parseInt(codePoints[0], 16);\n};\n\n/**\n * Trucante block with ellipsis\n *\n * @param {Object} block paragraph block\n * @returns {Object} sliced paragraph block\n */\nvar truncate = function truncate(block) {\n var _last, _last2, _last2$attributes;\n var runs = ((_last = last(block)) === null || _last === void 0 ? void 0 : _last.runs) || [];\n var font = (_last2 = last(runs)) === null || _last2 === void 0 ? void 0 : (_last2$attributes = _last2.attributes) === null || _last2$attributes === void 0 ? void 0 : _last2$attributes.font;\n if (font) {\n var _Object$assign;\n var index = block.length - 1;\n var codePoint = getEllipsisCodePoint(font);\n var glyph = font.glyphForCodePoint(codePoint);\n var lastBlock = append(glyph, trim(block[index]));\n return Object.assign([], block, (_Object$assign = {}, _Object$assign[index] = lastBlock, _Object$assign));\n }\n return block;\n};\n\n/**\n * @typedef {import('../types.js').Attributes} Attributes\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Omit attribute from run\n *\n * @param {keyof Attributes} value attribute value\n * @param {Run} run run\n * @returns {Run} run without ommited attribute\n */\nvar omit = function omit(value, run) {\n var attributes = Object.assign({}, run.attributes);\n delete attributes[value];\n return Object.assign({}, run, {\n attributes: attributes\n });\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get run ascent\n *\n * @param {Run} run run\n * @returns {number} ascent\n */\nvar ascent$1 = function ascent(run) {\n var _run$attributes, _run$attributes$attac, _run$attributes2, _run$attributes2$font;\n var attachmentHeight = ((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : (_run$attributes$attac = _run$attributes.attachment) === null || _run$attributes$attac === void 0 ? void 0 : _run$attributes$attac.height) || 0;\n var fontAscent = ((_run$attributes2 = run.attributes) === null || _run$attributes2 === void 0 ? void 0 : (_run$attributes2$font = _run$attributes2.font) === null || _run$attributes2$font === void 0 ? void 0 : _run$attributes2$font.ascent) || 0;\n return Math.max(attachmentHeight, fontAscent * scale(run));\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get run descent\n *\n * @param {Run} run run\n * @returns {number} descent\n */\nvar descent = function descent(run) {\n var _run$attributes, _run$attributes$font;\n var fontDescent = ((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : (_run$attributes$font = _run$attributes.font) === null || _run$attributes$font === void 0 ? void 0 : _run$attributes$font.descent) || 0;\n return scale(run) * fontDescent;\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get run lineGap\n *\n * @param {Object} run run\n * @returns {number} lineGap\n */\nvar lineGap = function lineGap(run) {\n var _run$attributes, _run$attributes$font;\n return (((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : (_run$attributes$font = _run$attributes.font) === null || _run$attributes$font === void 0 ? void 0 : _run$attributes$font.lineGap) || 0) * scale(run);\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get run height\n *\n * @param {Run} run run\n * @returns {number} height\n */\nvar height$1 = function height(run) {\n var _run$attributes;\n var lineHeight = (_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : _run$attributes.lineHeight;\n return lineHeight || lineGap(run) + ascent$1(run) - descent(run);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Returns attributed string height\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} height\n */\nvar height = function height(attributedString) {\n var reducer = function reducer(acc, run) {\n return Math.max(acc, height$1(run));\n };\n return attributedString.runs.reduce(reducer, 0);\n};\n\n/**\n * @typedef {import('../types.js').Rect} Rect\n */\n\n/**\n * Checks if two rects intersect each other\n *\n * @param {Rect} a rect A\n * @param {Rect} b rect B\n * @returns {boolean} whether rects intersect\n */\nvar intersects = function intersects(a, b) {\n var x = Math.max(a.x, b.x);\n var num1 = Math.min(a.x + a.width, b.x + b.width);\n var y = Math.max(a.y, b.y);\n var num2 = Math.min(a.y + a.height, b.y + b.height);\n return num1 >= x && num2 >= y;\n};\n\nvar _excluded = [\"excludeRects\"];\nvar getLineFragment = function getLineFragment(lineRect, excludeRect) {\n if (!intersects(excludeRect, lineRect)) return [lineRect];\n var eStart = excludeRect.x;\n var eEnd = excludeRect.x + excludeRect.width;\n var lStart = lineRect.x;\n var lEnd = lineRect.x + lineRect.width;\n var a = Object.assign({}, lineRect, {\n width: eStart - lStart\n });\n var b = Object.assign({}, lineRect, {\n x: eEnd,\n width: lEnd - eEnd\n });\n return [a, b].filter(function (r) {\n return r.width > 0;\n });\n};\nvar getLineFragments = function getLineFragments(rect, excludeRects) {\n var fragments = [rect];\n var _loop = function _loop() {\n var excludeRect = excludeRects[i];\n fragments = fragments.reduce(function (acc, fragment) {\n var pieces = getLineFragment(fragment, excludeRect);\n return acc.concat(pieces);\n }, []);\n };\n for (var i = 0; i < excludeRects.length; i += 1) {\n _loop();\n }\n return fragments;\n};\nvar generateLineRects = function generateLineRects(container, height) {\n var excludeRects = container.excludeRects,\n rect = _objectWithoutPropertiesLoose(container, _excluded);\n if (!excludeRects) return [rect];\n var lineRects = [];\n var maxY = Math.max.apply(Math, excludeRects.map(function (r) {\n return r.y + r.height;\n }));\n var currentRect = rect;\n while (currentRect.y < maxY) {\n var _partition = partition(currentRect, height),\n lineRect = _partition[0],\n rest = _partition[1];\n var lineRectFragments = getLineFragments(lineRect, excludeRects);\n currentRect = rest;\n lineRects.push.apply(lineRects, lineRectFragments);\n }\n return [].concat(lineRects, [currentRect]);\n};\n\nvar ATTACHMENT_CODE$1 = \"\\uFFFC\"; // 65532\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Rect} Rect\n */\n\n/**\n * Remove attachment attribute if no char present\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\nvar purgeAttachments = function purgeAttachments(attributedString) {\n var shouldPurge = !attributedString.string.includes(ATTACHMENT_CODE$1);\n if (!shouldPurge) return attributedString;\n var runs = attributedString.runs.map(function (run) {\n return omit('attachment', run);\n });\n return Object.assign({}, attributedString, {\n runs: runs\n });\n};\n\n/**\n * Layout paragraphs inside rectangle\n *\n * @param {Object} rects rect\n * @param {Object[]} lines attributed strings\n * @param {number} indent\n * @returns {Object} layout blocks\n */\nvar layoutLines = function layoutLines(rects, lines, indent) {\n var rect = rects.shift();\n var currentY = rect.y;\n return lines.map(function (line, i) {\n var _line$runs, _line$runs$;\n var lineIndent = i === 0 ? indent : 0;\n var style = ((_line$runs = line.runs) === null || _line$runs === void 0 ? void 0 : (_line$runs$ = _line$runs[0]) === null || _line$runs$ === void 0 ? void 0 : _line$runs$.attributes) || {};\n var height$1 = Math.max(height(line), style.lineHeight);\n if (currentY + height$1 > rect.y + rect.height && rects.length > 0) {\n rect = rects.shift();\n currentY = rect.y;\n }\n var newLine = Object.assign({}, line);\n delete newLine.syllables;\n newLine.box = {\n x: rect.x + lineIndent,\n y: currentY,\n width: rect.width - lineIndent,\n height: height$1\n };\n currentY += height$1;\n return purgeAttachments(newLine);\n });\n};\n\n/**\n * Performs line breaking and layout\n *\n * @param {Object} engines engines\n * @param {Object} options layout options\n */\nvar layoutParagraph = function layoutParagraph(engines, options) {\n /**\n * @param {Rect} container rect\n * @param {Object} paragraph attributed string\n * @returns {Object} layout block\n */\n return function (container, paragraph) {\n var _paragraph$runs, _paragraph$runs$, _paragraph$runs$$attr;\n var height$1 = height(paragraph);\n var indent = ((_paragraph$runs = paragraph.runs) === null || _paragraph$runs === void 0 ? void 0 : (_paragraph$runs$ = _paragraph$runs[0]) === null || _paragraph$runs$ === void 0 ? void 0 : (_paragraph$runs$$attr = _paragraph$runs$.attributes) === null || _paragraph$runs$$attr === void 0 ? void 0 : _paragraph$runs$$attr.indent) || 0;\n var rects = generateLineRects(container, height$1);\n var availableWidths = rects.map(function (r) {\n return r.width;\n });\n availableWidths[0] -= indent;\n var lines = engines.linebreaker(options)(paragraph, availableWidths);\n return layoutLines(rects, lines, indent);\n };\n};\n\n/**\n * Slice block at given height\n *\n * @param {number} height height\n * @param {Object} block paragraph block\n * @returns {number[]} sliced paragraph block\n */\nvar sliceAtHeight = function sliceAtHeight(height, block) {\n var newBlock = [];\n var counter = 0;\n for (var i = 0; i < block.length; i += 1) {\n var line = block[i];\n counter += line.box.height;\n if (counter < height) {\n newBlock.push(line);\n } else {\n break;\n }\n }\n return newBlock;\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Rect} Rect\n */\n\n/**\n * Layout paragraphs inside container until it does not\n * fit anymore, performing line wrapping in the process.\n *\n * @param {Object} engines engines\n * @param {Object} options layout options\n * @param {Rect} container container rect\n */\nvar typesetter = function typesetter(engines, options, container) {\n /**\n * @param {AttributedString} attributedStrings attributed strings (paragraphs)\n * @returns {Object[]} paragraph blocks\n */\n return function (attributedStrings) {\n var blocks = [];\n var paragraphs = [].concat(attributedStrings);\n var layoutBlock = layoutParagraph(engines, options);\n var maxLines = isNil(container.maxLines) ? Infinity : container.maxLines;\n var truncateEllipsis = container.truncateMode === 'ellipsis';\n var linesCount = maxLines;\n var paragraphRect = copy(container);\n var nextParagraph = paragraphs.shift();\n while (linesCount > 0 && nextParagraph) {\n var block = layoutBlock(paragraphRect, nextParagraph);\n var slicedBlock = block.slice(0, linesCount);\n var linesHeight = height$2(slicedBlock);\n var shouldTruncate = truncateEllipsis && block.length !== slicedBlock.length;\n linesCount -= slicedBlock.length;\n if (paragraphRect.height >= linesHeight) {\n blocks.push(shouldTruncate ? truncate(slicedBlock) : slicedBlock);\n paragraphRect = crop(linesHeight, paragraphRect);\n nextParagraph = paragraphs.shift();\n } else {\n blocks.push(truncate(sliceAtHeight(paragraphRect.height, slicedBlock)));\n break;\n }\n }\n return blocks;\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Get attributed string start value\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} start\n */\nvar start = function start(attributedString) {\n var runs = attributedString.runs;\n return runs.length === 0 ? 0 : runs[0].start;\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Get attributed string end value\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} end\n */\nvar end = function end(attributedString) {\n var runs = attributedString.runs;\n return runs.length === 0 ? 0 : last(runs).end;\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Get attributed string length\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} end\n */\nvar length$1 = function length(attributedString) {\n return end(attributedString) - start(attributedString);\n};\n\nvar bidi$2 = bidiFactory();\nvar getBidiLevels$1 = function getBidiLevels(runs) {\n return runs.reduce(function (acc, run) {\n var length = run.end - run.start;\n var levels = repeat(run.attributes.bidiLevel, length);\n return acc.concat(levels);\n }, []);\n};\nvar getReorderedIndices = function getReorderedIndices(string, segments) {\n // Fill an array with indices\n var indices = [];\n for (var i = 0; i < string.length; i += 1) {\n indices[i] = i;\n }\n // Reverse each segment in order\n segments.forEach(function (_ref) {\n var start = _ref[0],\n end = _ref[1];\n var slice = indices.slice(start, end + 1);\n for (var _i = slice.length - 1; _i >= 0; _i -= 1) {\n indices[end - _i] = slice[_i];\n }\n });\n return indices;\n};\nvar getItemAtIndex = function getItemAtIndex(runs, objectName, index) {\n for (var i = 0; i < runs.length; i += 1) {\n var run = runs[i];\n var updatedIndex = run.glyphIndices[index - run.start];\n if (index >= run.start && index < run.end) {\n return run[objectName][updatedIndex];\n }\n }\n throw new Error(\"index \" + index + \" out of range\");\n};\nvar reorderLine = function reorderLine(attributedString) {\n var _attributedString$run;\n var levels = getBidiLevels$1(attributedString.runs);\n var direction = (_attributedString$run = attributedString.runs[0]) === null || _attributedString$run === void 0 ? void 0 : _attributedString$run.attributes.direction;\n var level = direction === 'rtl' ? 1 : 0;\n var end = length$1(attributedString) - 1;\n var paragraphs = [{\n start: 0,\n end: end,\n level: level\n }];\n var embeddingLevels = {\n paragraphs: paragraphs,\n levels: levels\n };\n var segments = bidi$2.getReorderSegments(attributedString.string, embeddingLevels);\n\n // No need for bidi reordering\n if (segments.length === 0) return attributedString;\n var indices = getReorderedIndices(attributedString.string, segments);\n var updatedString = bidi$2.getReorderedString(attributedString.string, embeddingLevels);\n var updatedRuns = attributedString.runs.map(function (run) {\n var selectedIndices = indices.slice(run.start, run.end);\n var updatedGlyphs = [];\n var updatedPositions = [];\n var addedGlyphs = new Set();\n for (var i = 0; i < selectedIndices.length; i += 1) {\n var index = selectedIndices[i];\n var glyph = getItemAtIndex(attributedString.runs, 'glyphs', index);\n if (addedGlyphs.has(glyph.id)) continue;\n updatedGlyphs.push(glyph);\n updatedPositions.push(getItemAtIndex(attributedString.runs, 'positions', index));\n if (glyph.isLigature) {\n addedGlyphs.add(glyph.id);\n }\n }\n return _extends({}, run, {\n glyphs: updatedGlyphs,\n positions: updatedPositions\n });\n });\n return _extends({}, attributedString, {\n runs: updatedRuns,\n string: updatedString\n });\n};\nvar reorderParagraph = function reorderParagraph(lines) {\n return lines.map(reorderLine);\n};\n\n/**\n * Perform bidi reordering\n */\nvar bidiReordering = function bidiReordering() {\n /**\n * @param {Object[]} paragraphs line blocks\n * @returns {Object[]} paragraphs\n */\n return function (paragraphs) {\n return paragraphs.map(reorderParagraph);\n };\n};\n\n/**\n * @typedef {import('../types.js').Glyph} Glyph\n */\n\nvar DUMMY_CODEPOINT = 123;\n\n/**\n * Resolve string indices based on glyphs code points\n *\n * @param {Glyph[]} glyphs\n * @returns {number[]} glyph indices\n */\nvar resolve = function resolve(glyphs) {\n if (glyphs === void 0) {\n glyphs = [];\n }\n return glyphs.reduce(function (acc, glyph) {\n var codePoints = (glyph === null || glyph === void 0 ? void 0 : glyph.codePoints) || [DUMMY_CODEPOINT];\n if (acc.length === 0) return codePoints.map(function () {\n return 0;\n });\n var last = acc[acc.length - 1];\n var next = codePoints.map(function () {\n return last + 1;\n });\n return [].concat(acc, next);\n }, []);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Position} Position\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * @param {Run} run\n * @returns {number}\n */\nvar getCharacterSpacing = function getCharacterSpacing(run) {\n var _run$attributes;\n return ((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : _run$attributes.characterSpacing) || 0;\n};\n\n/**\n * Scale run positions\n *\n * @param {Run} run\n * @param {Position[]} positions\n * @returns {Position[]} scaled positions\n */\nvar scalePositions = function scalePositions(run, positions) {\n var runScale = scale(run);\n var characterSpacing = getCharacterSpacing(run);\n return positions.map(function (position, i) {\n var isLast = i === positions.length;\n var xSpacing = isLast ? 0 : characterSpacing;\n return Object.assign({}, position, {\n xAdvance: position.xAdvance * runScale + xSpacing,\n yAdvance: position.yAdvance * runScale,\n xOffset: position.xOffset * runScale,\n yOffset: position.yOffset * runScale\n });\n });\n};\n\n/**\n * Create glyph run\n *\n * @param {string} string string\n */\nvar layoutRun = function layoutRun(string) {\n /**\n * @param {Run} run run\n * @returns {Run} glyph run\n */\n return function (run) {\n var start = run.start,\n end = run.end,\n _run$attributes2 = run.attributes,\n attributes = _run$attributes2 === void 0 ? {} : _run$attributes2;\n var font = attributes.font;\n if (!font) return _extends({}, run, {\n glyphs: [],\n glyphIndices: [],\n positions: []\n });\n var runString = string.slice(start, end);\n\n // passing LTR To force fontkit to not reverse the string\n var glyphRun = font.layout(runString, undefined, undefined, undefined, 'ltr');\n var positions = scalePositions(run, glyphRun.positions);\n var glyphIndices = resolve(glyphRun.glyphs);\n return _extends({}, run, {\n positions: positions,\n glyphIndices: glyphIndices,\n glyphs: glyphRun.glyphs\n });\n };\n};\n\n/**\n * Generate glyphs for single attributed string\n */\nvar generateGlyphs = function generateGlyphs() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string with glyphs\n */\n return function (attributedString) {\n var runs = attributedString.runs.map(layoutRun(attributedString.string));\n return Object.assign({}, attributedString, {\n runs: runs\n });\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Resolves yOffset for run\n *\n * @param {Run} run run\n * @returns {Run} run\n */\nvar resolveRunYOffset = function resolveRunYOffset(run) {\n var _run$attributes, _run$attributes$font, _run$attributes2;\n if (!run.positions) return run;\n var unitsPerEm = ((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : (_run$attributes$font = _run$attributes.font) === null || _run$attributes$font === void 0 ? void 0 : _run$attributes$font.unitsPerEm) || 0;\n var yOffset = (((_run$attributes2 = run.attributes) === null || _run$attributes2 === void 0 ? void 0 : _run$attributes2.yOffset) || 0) * unitsPerEm;\n var positions = run.positions.map(function (p) {\n return Object.assign({}, p, {\n yOffset: yOffset\n });\n });\n return Object.assign({}, run, {\n positions: positions\n });\n};\n\n/**\n * Resolves yOffset for multiple paragraphs\n */\nvar resolveYOffset = function resolveYOffset() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\n return function (attributedString) {\n var runs = attributedString.runs.map(resolveRunYOffset);\n return Object.assign({}, attributedString, {\n runs: runs\n });\n };\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Sort runs in ascending order\n *\n * @param {Run[]} runs\n * @returns {Run[]} sorted runs\n */\nvar sort = function sort(runs) {\n return runs.sort(function (a, b) {\n return a.start - b.start || a.end - b.end;\n });\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Is run empty (start === end)\n *\n * @param {Run} run run\n * @returns {boolean} is run empty\n */\nvar isEmpty = function isEmpty(run) {\n return run.start === run.end;\n};\n\n/**\n * @typedef {import('../types.js').Point} Point\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Sort points in ascending order\n * @param {Point} a first point\n * @param {Point} b second point\n * @returns {number} sort order\n */\nvar sortPoints = function sortPoints(a, b) {\n return a[1] - b[1] || a[3] - b[3];\n};\n\n/**\n * @param {Run[]} runs\n * @returns {Point[]} points\n */\nvar generatePoints = function generatePoints(runs) {\n var result = runs.reduce(function (acc, run, i) {\n return acc.concat([['start', run.start, run.attributes, i], ['end', run.end, run.attributes, i]]);\n }, []);\n return result.sort(sortPoints);\n};\n\n/**\n * @param {Run[]} runs\n * @returns {Run} merged runs\n */\nvar mergeRuns = function mergeRuns(runs) {\n return runs.reduce(function (acc, run) {\n var attributes = Object.assign({}, acc.attributes, run.attributes);\n return Object.assign({}, run, {\n attributes: attributes\n });\n }, {});\n};\n\n/**\n * @param {Run[]} runs\n * @returns {Run[][]} grouped runs\n */\nvar groupEmptyRuns = function groupEmptyRuns(runs) {\n var groups = runs.reduce(function (acc, run) {\n if (!acc[run.start]) acc[run.start] = [];\n acc[run.start].push(run);\n return acc;\n }, []);\n return Object.values(groups);\n};\n\n/**\n * @param {Run[]} runs\n * @returns {Run[]} flattened runs\n */\nvar flattenEmptyRuns = function flattenEmptyRuns(runs) {\n return groupEmptyRuns(runs).map(mergeRuns);\n};\n\n/**\n * @param {Run[]} runs\n * @returns {Run[]} flattened runs\n */\nvar flattenRegularRuns = function flattenRegularRuns(runs) {\n var res = [];\n var points = generatePoints(runs);\n var start = -1;\n var attrs = {};\n var stack = [];\n for (var i = 0; i < points.length; i += 1) {\n var _points$i = points[i],\n type = _points$i[0],\n offset = _points$i[1],\n attributes = _points$i[2];\n if (start !== -1 && start < offset) {\n res.push({\n start: start,\n end: offset,\n attributes: attrs\n });\n }\n if (type === 'start') {\n stack.push(attributes);\n attrs = Object.assign({}, attrs, attributes);\n } else {\n attrs = {};\n for (var j = 0; j < stack.length; j += 1) {\n if (stack[j] === attributes) {\n // eslint-disable-next-line no-plusplus\n stack.splice(j--, 1);\n } else {\n attrs = Object.assign({}, attrs, stack[j]);\n }\n }\n }\n start = offset;\n }\n return res;\n};\n\n/**\n * Flatten many runs\n *\n * @param {Run[]} runs\n * @returns {Run[]} flattened runs\n */\nvar flatten = function flatten(runs) {\n if (runs === void 0) {\n runs = [];\n }\n var emptyRuns = flattenEmptyRuns(runs.filter(function (run) {\n return isEmpty(run);\n }));\n var regularRuns = flattenRegularRuns(runs.filter(function (run) {\n return !isEmpty(run);\n }));\n return sort(emptyRuns.concat(regularRuns));\n};\n\n/**\n * Returns empty attributed string\n *\n * @returns {Object} empty attributed string\n */\nvar empty = function empty() {\n return {\n string: '',\n runs: []\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n *\n * @param {AttributedString} attributedString\n * @returns {AttributedString} attributed string without font\n */\nvar omitFont = function omitFont(attributedString) {\n var runs = attributedString.runs.map(function (run) {\n return omit('font', run);\n });\n return Object.assign({}, attributedString, {\n runs: runs\n });\n};\n\n/**\n * Performs font substitution and script itemization on attributed string\n *\n * @param {Object} engines engines\n * @param {Object} options layout options\n */\nvar preprocessRuns = function preprocessRuns(engines, options) {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} processed attributed string\n */\n return function (attributedString) {\n if (isNil(attributedString)) return empty();\n var string = attributedString.string;\n var fontSubstitution = engines.fontSubstitution,\n scriptItemizer = engines.scriptItemizer,\n bidi = engines.bidi;\n var _omitFont = omitFont(attributedString),\n omittedFontRuns = _omitFont.runs;\n var _scriptItemizer = scriptItemizer(options)(attributedString),\n itemizationRuns = _scriptItemizer.runs;\n var _fontSubstitution = fontSubstitution(options)(attributedString),\n substitutedRuns = _fontSubstitution.runs;\n var _bidi = bidi(options)(attributedString),\n bidiRuns = _bidi.runs;\n var runs = bidiRuns.concat(substitutedRuns).concat(itemizationRuns).concat(omittedFontRuns);\n return {\n string: string,\n runs: flatten(runs)\n };\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Breaks attributed string into paragraphs\n */\nvar splitParagraphs = function splitParagraphs() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString[]} attributed string array\n */\n return function (attributedString) {\n var res = [];\n var start = 0;\n var breakPoint = attributedString.string.indexOf('\\n') + 1;\n while (breakPoint > 0) {\n res.push(slice(start, breakPoint, attributedString));\n start = breakPoint;\n breakPoint = attributedString.string.indexOf('\\n', breakPoint) + 1;\n }\n if (start === 0) {\n res.push(attributedString);\n } else if (start < attributedString.string.length) {\n res.push(slice(start, length$1(attributedString), attributedString));\n }\n return res;\n };\n};\n\n/**\n * @typedef {import('../types.js').Position} Position\n */\n\n/**\n * Return positions advance width\n *\n * @param {Position[]} positions positions\n * @returns {number} advance width\n */\nvar advanceWidth$2 = function advanceWidth(positions) {\n return positions.reduce(function (acc, pos) {\n return acc + (pos.xAdvance || 0);\n }, 0);\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Return run advance width\n *\n * @param {Run} run run\n * @returns {number} advance width\n */\nvar advanceWidth$1 = function advanceWidth(run) {\n return advanceWidth$2(run.positions || []);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Returns attributed string advancewidth\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} advance width\n */\nvar advanceWidth = function advanceWidth(attributedString) {\n var reducer = function reducer(acc, run) {\n return acc + advanceWidth$1(run);\n };\n return attributedString.runs.reduce(reducer, 0);\n};\n\n/**\n * @typedef {import('../types.js').Glyph} Glyph\n */\n\nvar WHITE_SPACES_CODE = 32;\n\n/**\n * Check if glyph is white space\n *\n * @param {Glyph} [glyph] glyph\n * @returns {boolean} whether glyph is white space\n * */\nvar isWhiteSpace = function isWhiteSpace(glyph) {\n var codePoints = (glyph === null || glyph === void 0 ? void 0 : glyph.codePoints) || [];\n return codePoints.includes(WHITE_SPACES_CODE);\n};\n\n/**\n * @typedef {import('../types.js').Position} Position\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get white space leading positions\n *\n * @param {Run} run run\n * @returns {Position[]} white space leading positions\n */\nvar leadingPositions = function leadingPositions(run) {\n var glyphs = run.glyphs || [];\n var positions = run.positions || [];\n var leadingWhitespaces = glyphs.findIndex(function (g) {\n return !isWhiteSpace(g);\n });\n return positions.slice(0, leadingWhitespaces);\n};\n\n/**\n * Get run leading white space offset\n *\n * @param {Run} run run\n * @returns {number} leading white space offset\n */\nvar leadingOffset$1 = function leadingOffset(run) {\n var positions = leadingPositions(run);\n return positions.reduce(function (acc, pos) {\n return acc + (pos.xAdvance || 0);\n }, 0);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Get attributed string leading white space offset\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} leading white space offset\n */\nvar leadingOffset = function leadingOffset(attributedString) {\n var runs = attributedString.runs || [];\n return leadingOffset$1(runs[0]);\n};\n\n/**\n * @typedef {import('../types.js').Position} Position\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * @template T\n * @param {T[]} array\n * @returns {T[]} reversed array\n */\nvar reverse = function reverse(array) {\n return [].concat(array).reverse();\n};\n\n/**\n * Get white space trailing positions\n *\n * @param {Run} run run\n * @returns {Position[]} white space trailing positions\n */\nvar trailingPositions = function trailingPositions(run) {\n var glyphs = reverse(run.glyphs || []);\n var positions = reverse(run.positions || []);\n var leadingWhitespaces = glyphs.findIndex(function (g) {\n return !isWhiteSpace(g);\n });\n return positions.slice(0, leadingWhitespaces);\n};\n\n/**\n * Get run trailing white space offset\n *\n * @param {Run} run run\n * @returns {number} trailing white space offset\n */\nvar trailingOffset$1 = function trailingOffset(run) {\n var positions = trailingPositions(run);\n return positions.reduce(function (acc, pos) {\n return acc + (pos.xAdvance || 0);\n }, 0);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Get attributed string trailing white space offset\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} trailing white space offset\n */\nvar trailingOffset = function trailingOffset(attributedString) {\n var runs = attributedString.runs || [];\n return trailingOffset$1(last(runs));\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Drop last char of run\n *\n * @param {Run} run run\n * @returns {Run} run without last char\n */\nvar dropLast$1 = function dropLast(run) {\n return slice$1(0, run.end - run.start - 1, run);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Drop last glyph\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string with new glyph\n */\nvar dropLast = function dropLast(attributedString) {\n var string = dropLast$2(attributedString.string);\n var runs = adjust(-1, dropLast$1, attributedString.runs);\n return Object.assign({}, attributedString, {\n string: string,\n runs: runs\n });\n};\n\nvar ALIGNMENT_FACTORS = {\n center: 0.5,\n right: 1\n};\n\n/**\n * Remove new line char at the end of line if present\n *\n * @param {Object} line\n * @returns {Object} line\n */\nvar removeNewLine = function removeNewLine(line) {\n return last(line.string) === '\\n' ? dropLast(line) : line;\n};\nvar getOverflowLeft = function getOverflowLeft(line) {\n return leadingOffset(line) + (line.overflowLeft || 0);\n};\nvar getOverflowRight = function getOverflowRight(line) {\n return trailingOffset(line) + (line.overflowRight || 0);\n};\n\n/**\n * Ignore whitespace at the start and end of a line for alignment\n *\n * @param {Object} line\n * @returns {Object} line\n */\nvar adjustOverflow = function adjustOverflow(line) {\n var overflowLeft = getOverflowLeft(line);\n var overflowRight = getOverflowRight(line);\n var x = line.box.x - overflowLeft;\n var width = line.box.width + overflowLeft + overflowRight;\n var box = Object.assign({}, line.box, {\n x: x,\n width: width\n });\n return Object.assign({}, line, {\n box: box,\n overflowLeft: overflowLeft,\n overflowRight: overflowRight\n });\n};\n\n/**\n * Performs line justification by calling appropiate engine\n *\n * @param {Object} engines engines\n * @param {Object} options layout options\n * @param {string} align text align\n */\nvar justifyLine$1 = function justifyLine(engines, options, align) {\n /**\n * @param {Object} line lint\n * @returns {Object} line\n */\n return function (line) {\n var lineWidth = advanceWidth(line);\n var alignFactor = ALIGNMENT_FACTORS[align] || 0;\n var remainingWidth = Math.max(0, line.box.width - lineWidth);\n var shouldJustify = align === 'justify' || lineWidth > line.box.width;\n var x = line.box.x + remainingWidth * alignFactor;\n var box = Object.assign({}, line.box, {\n x: x\n });\n var newLine = Object.assign({}, line, {\n box: box\n });\n return shouldJustify ? engines.justification(options)(newLine) : newLine;\n };\n};\nvar finalizeLine = function finalizeLine(line) {\n var lineAscent = 0;\n var lineDescent = 0;\n var lineHeight = 0;\n var lineXAdvance = 0;\n var runs = line.runs.map(function (run) {\n var height = height$1(run);\n var ascent = ascent$1(run);\n var descent$1 = descent(run);\n var xAdvance = advanceWidth$1(run);\n lineHeight = Math.max(lineHeight, height);\n lineAscent = Math.max(lineAscent, ascent);\n lineDescent = Math.max(lineDescent, descent$1);\n lineXAdvance += xAdvance;\n return Object.assign({}, run, {\n height: height,\n ascent: ascent,\n descent: descent$1,\n xAdvance: xAdvance\n });\n });\n return Object.assign({}, line, {\n runs: runs,\n height: lineHeight,\n ascent: lineAscent,\n descent: lineDescent,\n xAdvance: lineXAdvance\n });\n};\n\n/**\n * Finalize line by performing line justification\n * and text decoration (using appropiate engines)\n *\n * @param {Object} engines engines\n * @param {Object} options layout options\n */\nvar finalizeBlock = function finalizeBlock(engines, options) {\n if (engines === void 0) {\n engines = {};\n }\n /**\n * @param {Object} line lint\n * @param {number} i line index\n * @param {Object[]} lines total lines\n * @returns {Object} line\n */\n return function (line, i, lines) {\n var _line$runs, _line$runs$;\n var isLastFragment = i === lines.length - 1;\n var style = ((_line$runs = line.runs) === null || _line$runs === void 0 ? void 0 : (_line$runs$ = _line$runs[0]) === null || _line$runs$ === void 0 ? void 0 : _line$runs$.attributes) || {};\n var align = isLastFragment ? style.alignLastLine : style.align;\n return compose(finalizeLine, engines.textDecoration(options), justifyLine$1(engines, options, align), adjustOverflow, removeNewLine)(line);\n };\n};\n\n/**\n * Finalize line block by performing line justification\n * and text decoration (using appropiate engines)\n *\n * @param {Object} engines engines\n * @param {Object} options layout options\n */\nvar finalizeFragments = function finalizeFragments(engines, options) {\n /**\n * @param {Object[]} blocks line blocks\n * @returns {Object[]} blocks\n */\n return function (blocks) {\n var blockFinalizer = finalizeBlock(engines, options);\n return blocks.map(function (block) {\n return block.map(blockFinalizer);\n });\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\nvar ATTACHMENT_CODE = 0xfffc; // 65532\n\nvar isReplaceGlyph = function isReplaceGlyph(glyph) {\n return glyph.codePoints.includes(ATTACHMENT_CODE);\n};\n\n/**\n * Resolve attachments of run\n *\n * @param {Object} run\n * @returns {Object} run\n */\nvar resolveRunAttachments = function resolveRunAttachments(run) {\n var _run$attributes;\n if (!run.positions) return run;\n var glyphs = run.glyphs || [];\n var attachment = ((_run$attributes = run.attributes) === null || _run$attributes === void 0 ? void 0 : _run$attributes.attachment) || {};\n var positions = run.positions.map(function (position, i) {\n var glyph = glyphs[i];\n if (attachment && attachment.width && isReplaceGlyph(glyph)) {\n return Object.assign({}, position, {\n xAdvance: attachment.width\n });\n }\n return Object.assign({}, position);\n });\n return Object.assign({}, run, {\n positions: positions\n });\n};\n\n/**\n * Resolve attachments for multiple paragraphs\n */\nvar resolveAttachments = function resolveAttachments() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\n return function (attributedString) {\n var runs = attributedString.runs.map(resolveRunAttachments);\n return Object.assign({}, attributedString, {\n runs: runs\n });\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Attributes} Attributes\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * @param {Attributes} a attributes\n * @returns {Attributes} attributes with defaults\n */\nvar applyAttributes = function applyAttributes(a) {\n return {\n align: a.align || (a.direction === 'rtl' ? 'right' : 'left'),\n alignLastLine: a.alignLastLine || (a.align === 'justify' ? 'left' : a.align || 'left'),\n attachment: a.attachment || null,\n backgroundColor: a.backgroundColor || null,\n bullet: a.bullet || null,\n characterSpacing: a.characterSpacing || 0,\n color: a.color || 'black',\n direction: a.direction || 'ltr',\n features: a.features || [],\n fill: a.fill !== false,\n font: a.font || null,\n fontSize: a.fontSize || 12,\n hangingPunctuation: a.hangingPunctuation || false,\n hyphenationFactor: a.hyphenationFactor || 0,\n indent: a.indent || 0,\n justificationFactor: a.justificationFactor || 1,\n lineHeight: a.lineHeight || null,\n lineSpacing: a.lineSpacing || 0,\n link: a.link || null,\n marginLeft: a.marginLeft || a.margin || 0,\n marginRight: a.marginRight || a.margin || 0,\n opacity: a.opacity,\n paddingTop: a.paddingTop || a.padding || 0,\n paragraphSpacing: a.paragraphSpacing || 0,\n script: a.script || null,\n shrinkFactor: a.shrinkFactor || 0,\n strike: a.strike || false,\n strikeColor: a.strikeColor || a.color || 'black',\n strikeStyle: a.strikeStyle || 'solid',\n stroke: a.stroke || false,\n underline: a.underline || false,\n underlineColor: a.underlineColor || a.color || 'black',\n underlineStyle: a.underlineStyle || 'solid',\n verticalAlign: a.verticalAlign || null,\n wordSpacing: a.wordSpacing || 0,\n yOffset: a.yOffset || 0\n };\n};\n\n/**\n * Apply default style to run\n *\n * @param {Run} run run\n * @returns {Run} run with styles\n */\nvar applyRunStyles = function applyRunStyles(run) {\n var attributes = applyAttributes(run.attributes);\n return Object.assign({}, run, {\n attributes: attributes\n });\n};\n\n/**\n * Apply default attributes for an attributed string\n */\nvar applyDefaultStyles = function applyDefaultStyles() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\n return function (attributedString) {\n var string = attributedString.string || '';\n var runs = (attributedString.runs || []).map(applyRunStyles);\n return {\n string: string,\n runs: runs\n };\n };\n};\n\n/* eslint-disable no-restricted-syntax */\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Apply scaling and yOffset for verticalAlign 'sub' and 'super'.\n */\nvar verticalAlignment = function verticalAlignment() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\n return function (attributedString) {\n attributedString.runs.forEach(function (run) {\n var attributes = run.attributes;\n var verticalAlign = attributes.verticalAlign;\n if (verticalAlign === 'sub') {\n attributes.yOffset = -0.2;\n } else if (verticalAlign === 'super') {\n attributes.yOffset = 0.4;\n }\n });\n return attributedString;\n };\n};\n\nvar bidi$1 = bidiFactory();\nvar getBidiLevels = function getBidiLevels(runs) {\n return runs.reduce(function (acc, run) {\n var length = run.end - run.start;\n var levels = repeat(run.attributes.bidiLevel, length);\n return acc.concat(levels);\n }, []);\n};\n\n/**\n * Perform bidi mirroring\n */\nvar mirrorString = function mirrorString() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\n return function (attributedString) {\n var levels = getBidiLevels(attributedString.runs);\n var updatedString = '';\n attributedString.string.split('').forEach(function (char, index) {\n var isRTL = levels[index] % 2 === 1;\n var mirroredChar = isRTL ? bidi$1.getMirroredCharacter(attributedString.string.charAt(index)) : null;\n updatedString += mirroredChar || char;\n });\n return _extends({}, attributedString, {\n string: updatedString,\n levels: levels\n });\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Rect} Rect\n */\n\n/**\n * A LayoutEngine is the main object that performs text layout.\n * It accepts an AttributedString and a Container object\n * to layout text into, and uses several helper objects to perform\n * various layout tasks. These objects can be overridden to customize\n * layout behavior.\n *\n * @param {Object} engines engines\n */\nvar layoutEngine = function layoutEngine(engines) {\n /**\n * @param {AttributedString} attributedString attributed string\n * @param {Rect} container container rect\n * @param {Object} options layout options\n * @returns {Object[]} paragraph blocks\n */\n return function (attributedString, container, options) {\n if (options === void 0) {\n options = {};\n }\n var processParagraph = compose(resolveYOffset(), resolveAttachments(), verticalAlignment(), wrapWords(engines, options), generateGlyphs(), mirrorString(), preprocessRuns(engines, options));\n var processParagraphs = function processParagraphs(paragraphs) {\n return paragraphs.map(processParagraph);\n };\n return compose(finalizeFragments(engines, options), bidiReordering(), typesetter(engines, options, container), processParagraphs, splitParagraphs(), applyDefaultStyles())(attributedString);\n };\n};\n\nvar bidi = bidiFactory();\n\n/**\n * @param {Object} layout options\n * @param {Object} attributed string\n * @return {Object} attributed string\n */\nvar bidiEngine = function bidiEngine() {\n return function (attributedString) {\n var _attributedString$run;\n var string = attributedString.string;\n var direction = (_attributedString$run = attributedString.runs[0]) === null || _attributedString$run === void 0 ? void 0 : _attributedString$run.attributes.direction;\n var _bidi$getEmbeddingLev = bidi.getEmbeddingLevels(string, direction),\n levels = _bidi$getEmbeddingLev.levels;\n var lastLevel = null;\n var lastIndex = 0;\n var index = 0;\n var res = [];\n for (var i = 0; i < levels.length; i += 1) {\n var level = levels[i];\n if (level !== lastLevel) {\n if (lastLevel !== null) {\n res.push({\n start: lastIndex,\n end: index,\n attributes: {\n bidiLevel: lastLevel\n }\n });\n }\n lastIndex = index;\n lastLevel = level;\n }\n index += 1;\n }\n if (lastIndex < string.length) {\n res.push({\n start: lastIndex,\n end: string.length,\n attributes: {\n bidiLevel: lastLevel\n }\n });\n }\n return {\n string: string,\n runs: res\n };\n };\n};\n\n/* eslint-disable no-plusplus */\nvar INFINITY = 10000;\n\n/**\n * @param {Object[]} subnodes\n * @param {number[]} widths\n * @param {number} lineNumber\n * @returns {number}\n */\nvar getNextBreakpoint = function getNextBreakpoint(subnodes, widths, lineNumber) {\n var position = null;\n var minimumBadness = Infinity;\n var sum = {\n width: 0,\n stretch: 0,\n shrink: 0\n };\n var lineLength = widths[Math.min(lineNumber, widths.length - 1)];\n var calculateRatio = function calculateRatio(node) {\n if (sum.width < lineLength) {\n return sum.stretch - node.stretch > 0 ? (lineLength - sum.width) / sum.stretch : INFINITY;\n }\n if (sum.width > lineLength) {\n return sum.shrink - node.shrink > 0 ? (lineLength - sum.width) / sum.shrink : INFINITY;\n }\n return 0;\n };\n for (var i = 0; i < subnodes.length; i += 1) {\n var node = subnodes[i];\n if (node.type === 'box') {\n sum.width += node.width;\n } else if (node.type === 'glue') {\n sum.width += node.width;\n sum.stretch += node.stretch;\n sum.shrink += node.shrink;\n }\n if (sum.width - sum.shrink > lineLength) {\n if (position === null) {\n var j = i === 0 ? i + 1 : i;\n while (j < subnodes.length && (subnodes[j].type === 'glue' || subnodes[j].type === 'penalty')) {\n j++;\n }\n position = j - 1;\n }\n break;\n }\n if (node.type === 'penalty' || node.type === 'glue') {\n var ratio = calculateRatio(node);\n var penalty = node.type === 'penalty' ? node.penalty : 0;\n var badness = 100 * Math.pow(Math.abs(ratio), 3) + penalty;\n if (minimumBadness >= badness) {\n position = i;\n minimumBadness = badness;\n }\n }\n }\n return sum.width - sum.shrink > lineLength ? position : null;\n};\n\n/**\n * @param {Object[]} nodes\n * @param {number[]} widths\n */\nvar applyBestFit = function applyBestFit(nodes, widths) {\n var count = 0;\n var lineNumber = 0;\n var subnodes = nodes;\n var breakpoints = [{\n position: 0\n }];\n while (subnodes.length > 0) {\n var breakpoint = getNextBreakpoint(subnodes, widths, lineNumber);\n if (breakpoint !== null) {\n count += breakpoint;\n breakpoints.push({\n position: count\n });\n subnodes = subnodes.slice(breakpoint + 1, subnodes.length);\n count++;\n lineNumber++;\n } else {\n subnodes = [];\n }\n }\n return breakpoints;\n};\n\n/* eslint-disable no-param-reassign */\n/* eslint-disable max-classes-per-file */\nvar Node = /*#__PURE__*/function () {\n function Node(data) {\n this.prev = null;\n this.next = null;\n this.data = data;\n }\n var _proto = Node.prototype;\n _proto.toString = function toString() {\n return this.data.toString();\n };\n return Node;\n}();\nvar LinkedList = /*#__PURE__*/function () {\n function LinkedList() {\n this.head = null;\n this.tail = null;\n this.listSize = 0;\n this.listLength = 0;\n }\n var _proto2 = LinkedList.prototype;\n _proto2.isLinked = function isLinked(node) {\n return !(node && node.prev === null && node.next === null && this.tail !== node && this.head !== node || this.isEmpty());\n };\n _proto2.size = function size() {\n return this.listSize;\n };\n _proto2.isEmpty = function isEmpty() {\n return this.listSize === 0;\n };\n _proto2.first = function first() {\n return this.head;\n };\n _proto2.last = function last() {\n return this.last;\n };\n _proto2.toString = function toString() {\n return this.toArray().toString();\n };\n _proto2.toArray = function toArray() {\n var node = this.head;\n var result = [];\n while (node !== null) {\n result.push(node);\n node = node.next;\n }\n return result;\n };\n _proto2.forEach = function forEach(fun) {\n var node = this.head;\n while (node !== null) {\n fun(node);\n node = node.next;\n }\n };\n _proto2.contains = function contains(n) {\n var node = this.head;\n if (!this.isLinked(n)) {\n return false;\n }\n while (node !== null) {\n if (node === n) {\n return true;\n }\n node = node.next;\n }\n return false;\n };\n _proto2.at = function at(i) {\n var node = this.head;\n var index = 0;\n if (i >= this.listLength || i < 0) {\n return null;\n }\n while (node !== null) {\n if (i === index) {\n return node;\n }\n node = node.next;\n index += 1;\n }\n return null;\n };\n _proto2.insertAfter = function insertAfter(node, newNode) {\n if (!this.isLinked(node)) {\n return this;\n }\n newNode.prev = node;\n newNode.next = node.next;\n if (node.next === null) {\n this.tail = newNode;\n } else {\n node.next.prev = newNode;\n }\n node.next = newNode;\n this.listSize += 1;\n return this;\n };\n _proto2.insertBefore = function insertBefore(node, newNode) {\n if (!this.isLinked(node)) {\n return this;\n }\n newNode.prev = node.prev;\n newNode.next = node;\n if (node.prev === null) {\n this.head = newNode;\n } else {\n node.prev.next = newNode;\n }\n node.prev = newNode;\n this.listSize += 1;\n return this;\n };\n _proto2.push = function push(node) {\n if (this.head === null) {\n this.unshift(node);\n } else {\n this.insertAfter(this.tail, node);\n }\n return this;\n };\n _proto2.unshift = function unshift(node) {\n if (this.head === null) {\n this.head = node;\n this.tail = node;\n node.prev = null;\n node.next = null;\n this.listSize += 1;\n } else {\n this.insertBefore(this.head, node);\n }\n return this;\n };\n _proto2.remove = function remove(node) {\n if (!this.isLinked(node)) {\n return this;\n }\n if (node.prev === null) {\n this.head = node.next;\n } else {\n node.prev.next = node.next;\n }\n if (node.next === null) {\n this.tail = node.prev;\n } else {\n node.next.prev = node.prev;\n }\n this.listSize -= 1;\n return this;\n };\n _proto2.pop = function pop() {\n var node = this.tail;\n this.tail.prev.next = null;\n this.tail = this.tail.prev;\n this.listSize -= 1;\n node.prev = null;\n node.next = null;\n return node;\n };\n _proto2.shift = function shift() {\n var node = this.head;\n this.head.next.prev = null;\n this.head = this.head.next;\n this.listSize -= 1;\n node.prev = null;\n node.next = null;\n return node;\n };\n return LinkedList;\n}();\nLinkedList.Node = Node;\n\n/* eslint-disable no-restricted-properties */\n\n/**\n * @param {Object[]} nodes\n * @param {number[]} lines\n * @param {Object} settings\n * @preserve Knuth and Plass line breaking algorithm in JavaScript\n *\n * Licensed under the new BSD License.\n * Copyright 2009-2010, Bram Stein\n * All rights reserved.\n */\nvar linebreak = function linebreak(nodes, lines, settings) {\n var options = {\n demerits: {\n line: settings && settings.demerits && settings.demerits.line || 10,\n flagged: settings && settings.demerits && settings.demerits.flagged || 100,\n fitness: settings && settings.demerits && settings.demerits.fitness || 3000\n },\n tolerance: settings && settings.tolerance || 3\n };\n var activeNodes = new LinkedList();\n var sum = {\n width: 0,\n stretch: 0,\n shrink: 0\n };\n var lineLengths = lines;\n var breaks = [];\n var tmp = {\n data: {\n demerits: Infinity\n }\n };\n function breakpoint(position, demerits, ratio, line, fitnessClass, totals, previous) {\n return {\n position: position,\n demerits: demerits,\n ratio: ratio,\n line: line,\n fitnessClass: fitnessClass,\n totals: totals || {\n width: 0,\n stretch: 0,\n shrink: 0\n },\n previous: previous\n };\n }\n function computeCost(start, end, active, currentLine) {\n var width = sum.width - active.totals.width;\n var stretch = 0;\n var shrink = 0;\n // If the current line index is within the list of linelengths, use it, otherwise use\n // the last line length of the list.\n var lineLength = currentLine < lineLengths.length ? lineLengths[currentLine - 1] : lineLengths[lineLengths.length - 1];\n if (nodes[end].type === 'penalty') {\n width += nodes[end].width;\n }\n if (width < lineLength) {\n // Calculate the stretch ratio\n stretch = sum.stretch - active.totals.stretch;\n if (stretch > 0) {\n return (lineLength - width) / stretch;\n }\n return linebreak.infinity;\n }\n if (width > lineLength) {\n // Calculate the shrink ratio\n shrink = sum.shrink - active.totals.shrink;\n if (shrink > 0) {\n return (lineLength - width) / shrink;\n }\n return linebreak.infinity;\n }\n\n // perfect match\n return 0;\n }\n\n // Add width, stretch and shrink values from the current\n // break point up to the next box or forced penalty.\n function computeSum(breakPointIndex) {\n var result = {\n width: sum.width,\n stretch: sum.stretch,\n shrink: sum.shrink\n };\n for (var i = breakPointIndex; i < nodes.length; i += 1) {\n if (nodes[i].type === 'glue') {\n result.width += nodes[i].width;\n result.stretch += nodes[i].stretch;\n result.shrink += nodes[i].shrink;\n } else if (nodes[i].type === 'box' || nodes[i].type === 'penalty' && nodes[i].penalty === -linebreak.infinity && i > breakPointIndex) {\n break;\n }\n }\n return result;\n }\n\n // The main loop of the algorithm\n // eslint-disable-next-line no-shadow\n function mainLoop(node, index, nodes) {\n var active = activeNodes.first();\n var next = null;\n var ratio = 0;\n var demerits = 0;\n /**\n * @type {Object[]}\n */\n var candidates = [];\n var badness;\n var currentLine = 0;\n var tmpSum;\n var currentClass = 0;\n var fitnessClass;\n /**\n * @type {Object}\n */\n var candidate;\n var newNode;\n\n // The inner loop iterates through all the active nodes with line < currentLine and then\n // breaks out to insert the new active node candidates before looking at the next active\n // nodes for the next lines. The result of this is that the active node list is always\n // sorted by line number.\n while (active !== null) {\n candidates = [{\n demerits: Infinity\n }, {\n demerits: Infinity\n }, {\n demerits: Infinity\n }, {\n demerits: Infinity\n }];\n\n // Iterate through the linked list of active nodes to find new potential active nodes\n // and deactivate current active nodes.\n while (active !== null) {\n next = active.next;\n currentLine = active.data.line + 1;\n ratio = computeCost(active.data.position, index, active.data, currentLine);\n\n // Deactive nodes when the distance between the current active node and the\n // current node becomes too large (i.e. it exceeds the stretch limit and the stretch\n // ratio becomes negative) or when the current node is a forced break (i.e. the end\n // of the paragraph when we want to remove all active nodes, but possibly have a final\n // candidate active node---if the paragraph can be set using the given tolerance value.)\n if (ratio < -1 || node.type === 'penalty' && node.penalty === -linebreak.infinity) {\n activeNodes.remove(active);\n }\n\n // If the ratio is within the valid range of -1 <= ratio <= tolerance calculate the\n // total demerits and record a candidate active node.\n if (ratio >= -1 && ratio <= options.tolerance) {\n badness = 100 * Math.pow(Math.abs(ratio), 3);\n\n // Positive penalty\n if (node.type === 'penalty' && node.penalty >= 0) {\n demerits = Math.pow(options.demerits.line + badness, 2) + Math.pow(node.penalty, 2);\n // Negative penalty but not a forced break\n } else if (node.type === 'penalty' && node.penalty !== -linebreak.infinity) {\n demerits = Math.pow(options.demerits.line + badness, 2) - Math.pow(node.penalty, 2);\n // All other cases\n } else {\n demerits = Math.pow(options.demerits.line + badness, 2);\n }\n if (node.type === 'penalty' && nodes[active.data.position].type === 'penalty') {\n demerits += options.demerits.flagged * node.flagged * nodes[active.data.position].flagged;\n }\n\n // Calculate the fitness class for this candidate active node.\n if (ratio < -0.5) {\n currentClass = 0;\n } else if (ratio <= 0.5) {\n currentClass = 1;\n } else if (ratio <= 1) {\n currentClass = 2;\n } else {\n currentClass = 3;\n }\n\n // Add a fitness penalty to the demerits if the fitness classes of two adjacent lines\n // differ too much.\n if (Math.abs(currentClass - active.data.fitnessClass) > 1) {\n demerits += options.demerits.fitness;\n }\n\n // Add the total demerits of the active node to get the total demerits of this candidate node.\n demerits += active.data.demerits;\n\n // Only store the best candidate for each fitness class\n if (demerits < candidates[currentClass].demerits) {\n candidates[currentClass] = {\n active: active,\n demerits: demerits,\n ratio: ratio\n };\n }\n }\n active = next;\n\n // Stop iterating through active nodes to insert new candidate active nodes in the active list\n // before moving on to the active nodes for the next line.\n // TODO: The Knuth and Plass paper suggests a conditional for currentLine < j0. This means paragraphs\n // with identical line lengths will not be sorted by line number. Find out if that is a desirable outcome.\n // For now I left this out, as it only adds minimal overhead to the algorithm and keeping the active node\n // list sorted has a higher priority.\n if (active !== null && active.data.line >= currentLine) {\n break;\n }\n }\n tmpSum = computeSum(index);\n for (fitnessClass = 0; fitnessClass < candidates.length; fitnessClass += 1) {\n candidate = candidates[fitnessClass];\n if (candidate.demerits < Infinity) {\n newNode = new LinkedList.Node(breakpoint(index, candidate.demerits, candidate.ratio, candidate.active.data.line + 1, fitnessClass, tmpSum, candidate.active));\n if (active !== null) {\n activeNodes.insertBefore(active, newNode);\n } else {\n activeNodes.push(newNode);\n }\n }\n }\n }\n }\n\n // Add an active node for the start of the paragraph.\n activeNodes.push(new LinkedList.Node(breakpoint(0, 0, 0, 0, 0, undefined, null)));\n\n // eslint-disable-next-line no-shadow\n nodes.forEach(function (node, index, nodes) {\n if (node.type === 'box') {\n sum.width += node.width;\n } else if (node.type === 'glue') {\n if (index > 0 && nodes[index - 1].type === 'box') {\n mainLoop(node, index, nodes);\n }\n sum.width += node.width;\n sum.stretch += node.stretch;\n sum.shrink += node.shrink;\n } else if (node.type === 'penalty' && node.penalty !== linebreak.infinity) {\n mainLoop(node, index, nodes);\n }\n });\n if (activeNodes.size() !== 0) {\n // Find the best active node (the one with the least total demerits.)\n activeNodes.forEach(function (node) {\n if (node.data.demerits < tmp.data.demerits) {\n tmp = node;\n }\n });\n while (tmp !== null) {\n breaks.push({\n position: tmp.data.position,\n ratio: tmp.data.ratio\n });\n tmp = tmp.data.previous;\n }\n return breaks.reverse();\n }\n return [];\n};\nlinebreak.infinity = 10000;\nlinebreak.glue = function (width, value, stretch, shrink) {\n return {\n type: 'glue',\n value: value,\n width: width,\n stretch: stretch,\n shrink: shrink\n };\n};\nlinebreak.box = function (width, value, hyphenated) {\n if (hyphenated === void 0) {\n hyphenated = false;\n }\n return {\n type: 'box',\n width: width,\n value: value,\n hyphenated: hyphenated\n };\n};\nlinebreak.penalty = function (width, penalty, flagged) {\n return {\n type: 'penalty',\n width: width,\n penalty: penalty,\n flagged: flagged\n };\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Add scalar to run\n *\n * @param {number} n scalar\n * @param {Run} run run\n * @returns {Run} added run\n */\nvar add = function add(n, run) {\n var start = run.start + n;\n var end = run.end + n;\n return Object.assign({}, run, {\n start: start,\n end: end\n });\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Get run length\n *\n * @param {Run} run run\n * @returns {number} length\n */\nvar length = function length(run) {\n return run.end - run.start;\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Concats two runs into one\n *\n * @param {Run} runA first run\n * @param {Run} runB second run\n * @returns {Run} concatenated run\n */\nvar concat = function concat(runA, runB) {\n var end = runA.end + length(runB);\n var glyphs = (runA.glyphs || []).concat(runB.glyphs || []);\n var positions = (runA.positions || []).concat(runB.positions || []);\n var attributes = Object.assign({}, runA.attributes, runB.attributes);\n var runAIndices = runA.glyphIndices || [];\n var runALastIndex = last(runAIndices) || 0;\n var runBIndices = (runB.glyphIndices || []).map(function (i) {\n return i + runALastIndex + 1;\n });\n var glyphIndices = normalize(runAIndices.concat(runBIndices));\n return Object.assign({}, runA, {\n end: end,\n glyphs: glyphs,\n positions: positions,\n attributes: attributes,\n glyphIndices: glyphIndices\n });\n};\n\n/**\n * @typedef {import('../types.js').Glyph} Glyph\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Insert glyph to run in the given index\n *\n * @param {number} index index\n * @param {Glyph} glyph glyph\n * @param {Run} run run\n * @returns {Run} run with glyph\n */\nvar insertGlyph$1 = function insertGlyph(index, glyph, run) {\n if (!glyph) return run;\n\n // Split resolves ligature splitting in case new glyph breaks some\n var leadingRun = slice$1(0, index, run);\n var trailingRun = slice$1(index, Infinity, run);\n return concat(append$1(glyph, leadingRun), trailingRun);\n};\n\n/**\n * Insert either glyph or code point to run in the given index\n *\n * @param {number} index index\n * @param {Glyph | number} value glyph or codePoint\n * @param {Run} run run\n * @returns {Run} run with glyph\n */\nvar insert = function insert(index, value, run) {\n var font = getFont(run);\n var glyph = isNumber(value) ? fromCodePoint(value, font) : value;\n return insertGlyph$1(index, glyph, run);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Get run index at char index\n *\n * @param {number} n char index\n * @param {AttributedString} string attributed string\n * @returns {number} run index\n */\nvar runIndexAt = function runIndexAt(n, string) {\n return runIndexAt$1(n, string.runs);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n * @typedef {import('../types.js').Glyph} Glyph\n */\n\n/**\n * Insert glyph into attributed string\n *\n * @param {number} index index\n * @param {Glyph} glyph glyph\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string with new glyph\n */\nvar insertGlyph = function insertGlyph(index, glyph, attributedString) {\n var runIndex = runIndexAt(index, attributedString);\n\n // Add glyph to the end if run index invalid\n if (runIndex === -1) return append(glyph, attributedString);\n var codePoints = (glyph === null || glyph === void 0 ? void 0 : glyph.codePoints) || [];\n var string = attributedString.string.slice(0, index) + stringFromCodePoints(codePoints) + attributedString.string.slice(index);\n var runs = attributedString.runs.map(function (run, i) {\n if (i === runIndex) return insert(index - run.start, glyph, run);\n if (i > runIndex) return add(codePoints.length, run);\n return run;\n });\n return Object.assign({}, attributedString, {\n string: string,\n runs: runs\n });\n};\n\n/**\n * @typedef {import('../types.js').Run} Run\n */\n\n/**\n * Advance width between two string indices\n *\n * @param {number} start glyph index\n * @param {number} end glyph index\n * @param {Run} run run\n * @returns {number} advanced width run\n */\nvar advanceWidthBetween$1 = function advanceWidthBetween(start, end, run) {\n var runStart = run.start || 0;\n var glyphStartIndex = Math.max(0, glyphIndexAt(start - runStart, run));\n var glyphEndIndex = Math.max(0, glyphIndexAt(end - runStart, run));\n var positions = (run.positions || []).slice(glyphStartIndex, glyphEndIndex);\n return advanceWidth$2(positions);\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Advance width between start and end\n * Does not consider ligature splitting for the moment.\n * Check performance impact on supporting this\n *\n * @param {number} start offset\n * @param {number} end offset\n * @param {AttributedString} attributedString\n * @returns {number} advance width\n */\nvar advanceWidthBetween = function advanceWidthBetween(start, end, attributedString) {\n var runs = filter(start, end, attributedString.runs);\n return runs.reduce(function (acc, run) {\n return acc + advanceWidthBetween$1(start, end, run);\n }, 0);\n};\n\n/**\n * @typedef {import('../../types.js').AttributedString} AttributedString\n * @typedef {import('../../types.js').Attributes} Attributes\n */\n\nvar HYPHEN = 0x002d;\nvar TOLERANCE_STEPS = 5;\nvar TOLERANCE_LIMIT = 50;\nvar opts = {\n width: 3,\n stretch: 6,\n shrink: 9\n};\n\n/**\n * Slice attributed string to many lines\n *\n * @param {AttributedString} string attributed string\n * @param {Object[]} nodes\n * @param {Object[]} breaks\n * @returns {AttributedString[]} attributed strings\n */\nvar breakLines = function breakLines(string, nodes, breaks) {\n var start = 0;\n var end = null;\n var lines = breaks.reduce(function (acc, breakPoint) {\n var node = nodes[breakPoint.position];\n var prevNode = nodes[breakPoint.position - 1];\n\n // Last breakpoint corresponds to K&P mandatory final glue\n if (breakPoint.position === nodes.length - 1) return acc;\n var line;\n if (node.type === 'penalty') {\n end = prevNode.value.end;\n line = slice(start, end, string);\n line = insertGlyph(line.length, HYPHEN, line);\n } else {\n end = node.value.end;\n line = slice(start, end, string);\n }\n start = end;\n return [].concat(acc, [line]);\n }, []);\n\n // Last line\n lines.push(slice(start, string.string.length, string));\n return lines;\n};\n\n/**\n * Return Knuth & Plass nodes based on line and previously calculated syllables\n *\n * @param {AttributedString} attributedString attributed string\n * @param {Object} args attributed string args\n * @param {Object} options layout options\n * @returns {Object[]} attributed strings\n */\nvar getNodes = function getNodes(attributedString, _ref, options) {\n var align = _ref.align;\n var start = 0;\n var hyphenWidth = 5;\n var syllables = attributedString.syllables;\n var hyphenPenalty = options.hyphenationPenalty || (align === 'justify' ? 100 : 600);\n var result = syllables.reduce(function (acc, s, index) {\n var width = advanceWidthBetween(start, start + s.length, attributedString);\n if (s.trim() === '') {\n var stretch = width * opts.width / opts.stretch;\n var shrink = width * opts.width / opts.shrink;\n var value = {\n start: start,\n end: start + s.length\n };\n acc.push(linebreak.glue(width, value, stretch, shrink));\n } else {\n var hyphenated = syllables[index + 1] !== ' ';\n var _value = {\n start: start,\n end: start + s.length\n };\n acc.push(linebreak.box(width, _value, hyphenated));\n if (syllables[index + 1] && hyphenated) {\n acc.push(linebreak.penalty(hyphenWidth, hyphenPenalty, 1));\n }\n }\n start += s.length;\n return acc;\n }, []);\n result.push(linebreak.glue(0, null, linebreak.infinity, 0));\n result.push(linebreak.penalty(0, -linebreak.infinity, 1));\n return result;\n};\n\n/**\n * @param {AttributedString} attributedString attributed string\n * @returns {Attributes} styles\n */\nvar getStyles = function getStyles(attributedString) {\n var _attributedString$run, _attributedString$run2;\n return ((_attributedString$run = attributedString.runs) === null || _attributedString$run === void 0 ? void 0 : (_attributedString$run2 = _attributedString$run[0]) === null || _attributedString$run2 === void 0 ? void 0 : _attributedString$run2.attributes) || {};\n};\n\n/**\n * Performs Knuth & Plass line breaking algorithm\n * Fallbacks to best fit algorithm if latter not successful\n *\n * @param {Object} options layout options\n */\nvar linebreaker = function linebreaker(options) {\n /**\n * @param {AttributedString} attributedString attributed string\n * @param {number[]} availableWidths available widths\n * @returns {AttributedString[]} attributed strings\n */\n return function (attributedString, availableWidths) {\n var tolerance = options.tolerance || 4;\n var style = getStyles(attributedString);\n var nodes = getNodes(attributedString, style, options);\n\n /** @type {Object[]} */\n var breaks = linebreak(nodes, availableWidths, {\n tolerance: tolerance\n });\n\n // Try again with a higher tolerance if the line breaking failed.\n while (breaks.length === 0 && tolerance < TOLERANCE_LIMIT) {\n tolerance += TOLERANCE_STEPS;\n breaks = linebreak(nodes, availableWidths, {\n tolerance: tolerance\n });\n }\n if (breaks.length === 0 || breaks.length === 1 && breaks[0].position === 0) {\n breaks = applyBestFit(nodes, availableWidths);\n }\n return breakLines(attributedString, nodes, breaks.slice(1));\n };\n};\n\nvar WHITESPACE_PRIORITY = 1;\nvar LETTER_PRIORITY = 2;\nvar EXPAND_WHITESPACE_FACTOR = {\n before: 0.5,\n after: 0.5,\n priority: WHITESPACE_PRIORITY,\n unconstrained: false\n};\nvar EXPAND_CHAR_FACTOR = {\n before: 0.14453125,\n // 37/256\n after: 0.14453125,\n priority: LETTER_PRIORITY,\n unconstrained: false\n};\nvar SHRINK_WHITESPACE_FACTOR = {\n before: -0.04296875,\n // -11/256\n after: -0.04296875,\n priority: WHITESPACE_PRIORITY,\n unconstrained: false\n};\nvar SHRINK_CHAR_FACTOR = {\n before: -0.04296875,\n after: -0.04296875,\n priority: LETTER_PRIORITY,\n unconstrained: false\n};\nvar getCharFactor = function getCharFactor(direction, options) {\n var expandCharFactor = options.expandCharFactor || {};\n var shrinkCharFactor = options.shrinkCharFactor || {};\n return direction === 'GROW' ? Object.assign({}, EXPAND_CHAR_FACTOR, expandCharFactor) : Object.assign({}, SHRINK_CHAR_FACTOR, shrinkCharFactor);\n};\nvar getWhitespaceFactor = function getWhitespaceFactor(direction, options) {\n var expandWhitespaceFactor = options.expandWhitespaceFactor || {};\n var shrinkWhitespaceFactor = options.shrinkWhitespaceFactor || {};\n return direction === 'GROW' ? Object.assign({}, EXPAND_WHITESPACE_FACTOR, expandWhitespaceFactor) : Object.assign({}, SHRINK_WHITESPACE_FACTOR, shrinkWhitespaceFactor);\n};\nvar factor = function factor(direction, options) {\n return function (glyphs) {\n var charFactor = getCharFactor(direction, options);\n var whitespaceFactor = getWhitespaceFactor(direction, options);\n var factors = [];\n for (var index = 0; index < glyphs.length; index += 1) {\n var f = void 0;\n var glyph = glyphs[index];\n if (isWhiteSpace(glyph)) {\n f = Object.assign({}, whitespaceFactor);\n if (index === glyphs.length - 1) {\n f.before = 0;\n if (index > 0) {\n factors[index - 1].after = 0;\n }\n }\n } else if (glyph.isMark && index > 0) {\n f = Object.assign({}, factors[index - 1]);\n f.before = 0;\n factors[index - 1].after = 0;\n } else {\n f = Object.assign({}, charFactor);\n }\n factors.push(f);\n }\n return factors;\n };\n};\nvar getFactors = function getFactors(gap, line, options) {\n var direction = gap > 0 ? 'GROW' : 'SHRINK';\n var getFactor = factor(direction, options);\n var factors = line.runs.reduce(function (acc, run) {\n return acc.concat(getFactor(run.glyphs));\n }, []);\n factors[0].before = 0;\n factors[factors.length - 1].after = 0;\n return factors;\n};\n\n/* eslint-disable no-multi-assign */\nvar KASHIDA_PRIORITY = 0;\nvar NULL_PRIORITY = 3;\nvar getDistances = function getDistances(gap, factors) {\n var total = 0;\n var priorities = [];\n var unconstrained = [];\n for (var _priority = KASHIDA_PRIORITY; _priority <= NULL_PRIORITY; _priority += 1) {\n priorities[_priority] = unconstrained[_priority] = 0;\n }\n\n // sum the factors at each priority\n for (var j = 0; j < factors.length; j += 1) {\n var f = factors[j];\n var sum = f.before + f.after;\n total += sum;\n priorities[f.priority] += sum;\n if (f.unconstrained) {\n unconstrained[f.priority] += sum;\n }\n }\n\n // choose the priorities that need to be applied\n var highestPriority = -1;\n var highestPrioritySum = 0;\n var remainingGap = gap;\n var priority;\n for (priority = KASHIDA_PRIORITY; priority <= NULL_PRIORITY; priority += 1) {\n var prioritySum = priorities[priority];\n if (prioritySum !== 0) {\n if (highestPriority === -1) {\n highestPriority = priority;\n highestPrioritySum = prioritySum;\n }\n\n // if this priority covers the remaining gap, we're done\n if (Math.abs(remainingGap) <= Math.abs(prioritySum)) {\n priorities[priority] = remainingGap / prioritySum;\n unconstrained[priority] = 0;\n remainingGap = 0;\n break;\n }\n\n // mark that we need to use 100% of the adjustment from\n // this priority, and subtract the space that it consumes\n priorities[priority] = 1;\n remainingGap -= prioritySum;\n\n // if this priority has unconstrained glyphs, let them consume the remaining space\n if (unconstrained[priority] !== 0) {\n unconstrained[priority] = remainingGap / unconstrained[priority];\n remainingGap = 0;\n break;\n }\n }\n }\n\n // zero out remaining priorities (if any)\n for (var p = priority + 1; p <= NULL_PRIORITY; p += 1) {\n priorities[p] = 0;\n unconstrained[p] = 0;\n }\n\n // if there is still space left over, assign it to the highest priority that we saw.\n // this violates their factors, but it only happens in extreme cases\n if (remainingGap > 0 && highestPriority > -1) {\n priorities[highestPriority] = (highestPrioritySum + (gap - total)) / highestPrioritySum;\n }\n\n // create and return an array of distances to add to each glyph's advance\n var distances = [];\n for (var index = 0; index < factors.length; index += 1) {\n // the distance to add to this glyph is the sum of the space to add\n // after this glyph, and the space to add before the next glyph\n var _f = factors[index];\n var next = factors[index + 1];\n var dist = _f.after * priorities[_f.priority];\n if (next) {\n dist += next.before * priorities[next.priority];\n }\n\n // if this glyph is unconstrained, add the unconstrained distance as well\n if (_f.unconstrained) {\n dist += _f.after * unconstrained[_f.priority];\n if (next) {\n dist += next.before * unconstrained[next.priority];\n }\n }\n distances.push(dist);\n }\n return distances;\n};\n\n/**\n * Adjust run positions by given distances\n *\n * @param {number[]} distances\n * @param {Object} line\n * @returns {Object} line\n */\nvar justifyLine = function justifyLine(distances, line) {\n var index = 0;\n for (var _iterator = _createForOfIteratorHelperLoose(line.runs), _step; !(_step = _iterator()).done;) {\n var run = _step.value;\n for (var _iterator2 = _createForOfIteratorHelperLoose(run.positions), _step2; !(_step2 = _iterator2()).done;) {\n var position = _step2.value;\n position.xAdvance += distances[index++];\n }\n }\n return line;\n};\n\n/**\n * A JustificationEngine is used by a Typesetter to perform line fragment\n * justification. This implementation is based on a description of Apple's\n * justification algorithm from a PDF in the Apple Font Tools package.\n *\n * // TODO: Make it immutable\n *\n * @param {Object} options layout options\n */\nvar justification = function justification(options) {\n /**\n * @param {Object} line\n * @returns {Object} line\n */\n return function (line) {\n var gap = line.box.width - advanceWidth(line);\n if (gap === 0) return; // Exact fit\n\n var factors = getFactors(gap, line, options);\n var distances = getDistances(gap, factors);\n return justifyLine(distances, line);\n };\n};\n\n/**\n * @typedef {import('../types.js').AttributedString} AttributedString\n */\n\n/**\n * Returns attributed string ascent\n *\n * @param {AttributedString} attributedString attributed string\n * @returns {number} ascent\n */\nvar ascent = function ascent(attributedString) {\n var reducer = function reducer(acc, run) {\n return Math.max(acc, ascent$1(run));\n };\n return attributedString.runs.reduce(reducer, 0);\n};\n\n/* eslint-disable no-param-reassign */\n\n\n// The base font size used for calculating underline thickness.\nvar BASE_FONT_SIZE = 12;\n\n/**\n * A TextDecorationEngine is used by a Typesetter to generate\n * DecorationLines for a line fragment, including underlines\n * and strikes.\n */\nvar textDecoration = function textDecoration() {\n return function (lineFragment) {\n var x = lineFragment.overflowLeft || 0;\n var overflowRight = lineFragment.overflowRight || 0;\n var maxX = advanceWidth(lineFragment) - overflowRight;\n lineFragment.decorationLines = [];\n for (var i = 0; i < lineFragment.runs.length; i += 1) {\n var run = lineFragment.runs[i];\n var width = Math.min(maxX - x, advanceWidth$1(run));\n var thickness = Math.max(0.5, Math.floor(run.attributes.fontSize / BASE_FONT_SIZE));\n if (run.attributes.underline) {\n var rect = {\n x: x,\n y: ascent(lineFragment) + thickness * 2,\n width: width,\n height: thickness\n };\n var line = {\n rect: rect,\n opacity: run.attributes.opacity,\n color: run.attributes.underlineColor || 'black',\n style: run.attributes.underlineStyle || 'solid'\n };\n lineFragment.decorationLines.push(line);\n }\n if (run.attributes.strike) {\n var y = ascent(lineFragment) - ascent$1(run) / 3;\n var _rect = {\n x: x,\n y: y,\n width: width,\n height: thickness\n };\n var _line = {\n rect: _rect,\n opacity: run.attributes.opacity,\n color: run.attributes.strikeColor || 'black',\n style: run.attributes.strikeStyle || 'solid'\n };\n lineFragment.decorationLines.push(_line);\n }\n x += width;\n }\n return lineFragment;\n };\n};\n\nvar ignoredScripts = ['Common', 'Inherited', 'Unknown'];\n\n/**\n * @typedef {import('../../types.js').AttributedString} AttributedString\n */\n\n/**\n * Resolves unicode script in runs, grouping equal runs together\n */\nvar scriptItemizer = function scriptItemizer() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\n return function (attributedString) {\n var string = attributedString.string;\n var lastScript = 'Unknown';\n var lastIndex = 0;\n var index = 0;\n var res = [];\n if (!string) return empty();\n for (var i = 0; i < string.length; i += 1) {\n var char = string[i];\n var codePoint = char.codePointAt();\n var script = unicode.getScript(codePoint);\n if (script !== lastScript && !ignoredScripts.includes(script)) {\n if (lastScript !== 'Unknown') {\n res.push({\n start: lastIndex,\n end: index,\n attributes: {\n script: lastScript\n }\n });\n }\n lastIndex = index;\n lastScript = script;\n }\n index += char.length;\n }\n if (lastIndex < string.length) {\n res.push({\n start: lastIndex,\n end: string.length,\n attributes: {\n script: lastScript\n }\n });\n }\n return {\n string: string,\n runs: res\n };\n };\n};\n\nvar SOFT_HYPHEN = \"\\xAD\";\nvar hyphenator = hyphen(pattern);\n\n/**\n * @param {string} word\n * @returns {string[]} word parts\n */\nvar splitHyphen = function splitHyphen(word) {\n return word.split(SOFT_HYPHEN);\n};\nvar cache = {};\n\n/**\n * @param {string} word\n * @returns {string[]} word parts\n */\nvar getParts = function getParts(word) {\n var base = word.includes(SOFT_HYPHEN) ? word : hyphenator(word);\n return splitHyphen(base);\n};\nvar wordHyphenation = function wordHyphenation() {\n /**\n * @param {string} word word\n * @returns {string[]} word parts\n */\n return function (word) {\n var cacheKey = \"_\" + word;\n if (isNil(word)) return [];\n if (cache[cacheKey]) return cache[cacheKey];\n cache[cacheKey] = getParts(word);\n return cache[cacheKey];\n };\n};\n\n/**\n * @typedef {import('../../types.js').AttributedString} AttributedString\n * @typedef {import('../../types.js').Run} Run\n */\n\n/**\n * @param {Run} run run\n * @returns {number}\n */\nvar getFontSize = function getFontSize(run) {\n return run.attributes.fontSize || 12;\n};\n\n/**\n * Resolve font runs in an AttributedString, grouping equal\n * runs and performing font substitution where necessary.\n */\nvar fontSubstitution = function fontSubstitution() {\n /**\n * @param {AttributedString} attributedString attributed string\n * @returns {AttributedString} attributed string\n */\n return function (attributedString) {\n var string = attributedString.string,\n runs = attributedString.runs;\n var lastFont = null;\n var lastIndex = 0;\n var index = 0;\n var res = [];\n if (!string) return empty();\n for (var _iterator = _createForOfIteratorHelperLoose(runs), _step; !(_step = _iterator()).done;) {\n var run = _step.value;\n var _fontSize = getFontSize(run);\n var defaultFont = run.attributes.font;\n if (string.length === 0) {\n res.push({\n start: 0,\n end: 0,\n attributes: {\n font: defaultFont\n }\n });\n break;\n }\n for (var _iterator2 = _createForOfIteratorHelperLoose(string.slice(run.start, run.end)), _step2; !(_step2 = _iterator2()).done;) {\n var char = _step2.value;\n var font = defaultFont;\n if (font !== lastFont) {\n if (lastFont) {\n res.push({\n start: lastIndex,\n end: index,\n attributes: {\n font: lastFont,\n scale: lastFont ? _fontSize / lastFont.unitsPerEm : 0\n }\n });\n }\n lastFont = font;\n lastIndex = index;\n }\n index += char.length;\n }\n }\n if (lastIndex < string.length) {\n var fontSize = getFontSize(last(runs));\n res.push({\n start: lastIndex,\n end: string.length,\n attributes: {\n font: lastFont,\n scale: lastFont ? fontSize / lastFont.unitsPerEm : 0\n }\n });\n }\n return {\n string: string,\n runs: res\n };\n };\n};\n\nexport { bidiEngine as bidi, layoutEngine as default, fontSubstitution, justification, linebreaker, scriptItemizer, textDecoration, wordHyphenation };\n","import _regeneratorRuntime from '@babel/runtime/helpers/regeneratorRuntime';\nimport _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';\nimport fetch from 'cross-fetch';\nimport PNG from '@react-pdf/png-js';\nimport _JPEG from 'jay-peg';\n\nvar global$1 = (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined\n ? global$1.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nkMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) ;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return ''\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nPNG.isValid = function isValid(data) {\n try {\n return !!new PNG(data);\n } catch (e) {\n return false;\n }\n};\n\nvar JPEG = function JPEG(data) {\n this.data = null;\n this.width = null;\n this.height = null;\n this.data = data;\n if (data.readUInt16BE(0) !== 0xffd8) {\n throw new Error('SOI not found in JPEG');\n }\n var markers = _JPEG.decode(this.data);\n for (var i = 0; i < markers.length; i += 1) {\n var marker = markers[i];\n if (marker.name === 'EXIF' && marker.entries.orientation) {\n this.orientation = marker.entries.orientation;\n }\n if (marker.name === 'SOF') {\n this.width || (this.width = marker.width);\n this.height || (this.height = marker.height);\n }\n }\n if (this.orientation > 4) {\n var _ref = [this.height, this.width];\n this.width = _ref[0];\n this.height = _ref[1];\n }\n};\nJPEG.isValid = function (data) {\n return data && Buffer.isBuffer(data) && data.readUInt16BE(0) === 0xffd8;\n};\n\nvar createCache = function createCache(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$limit = _ref.limit,\n limit = _ref$limit === void 0 ? 100 : _ref$limit;\n var cache = {};\n var keys = [];\n return {\n get: function get(key) {\n return cache[key];\n },\n set: function set(key, value) {\n keys.push(key);\n if (keys.length > limit) {\n delete cache[keys.shift()];\n }\n cache[key] = value;\n },\n reset: function reset() {\n cache = {};\n keys = [];\n },\n length: function length() {\n return keys.length;\n }\n };\n};\n\nvar IMAGE_CACHE = createCache({\n limit: 30\n});\nvar fetchRemoteFile = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(uri, options) {\n var response, buffer;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return fetch(uri, options);\n case 2:\n response = _context.sent;\n _context.next = 5;\n return response.buffer ? response.buffer() : response.arrayBuffer();\n case 5:\n buffer = _context.sent;\n return _context.abrupt(\"return\", buffer.constructor.name === 'Buffer' ? buffer : Buffer.from(buffer));\n case 7:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function fetchRemoteFile(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\nvar isValidFormat = function isValidFormat(format) {\n var lower = format.toLowerCase();\n return lower === 'jpg' || lower === 'jpeg' || lower === 'png';\n};\nvar guessFormat = function guessFormat(buffer) {\n var format;\n if (JPEG.isValid(buffer)) {\n format = 'jpg';\n } else if (PNG.isValid(buffer)) {\n format = 'png';\n }\n return format;\n};\nvar isCompatibleBase64 = function isCompatibleBase64(_ref2) {\n var uri = _ref2.uri;\n return /^data:image\\/[a-zA-Z]*;base64,[^\"]*/g.test(uri);\n};\nfunction getImage(body, extension) {\n switch (extension.toLowerCase()) {\n case 'jpg':\n case 'jpeg':\n return new JPEG(body);\n case 'png':\n return new PNG(body);\n default:\n return null;\n }\n}\nvar resolveBase64Image = function resolveBase64Image(_ref3) {\n var uri = _ref3.uri;\n var match = /^data:image\\/([a-zA-Z]*);base64,([^\"]*)/g.exec(uri);\n var format = match[1];\n var data = match[2];\n if (!isValidFormat(format)) {\n throw new Error(\"Base64 image invalid format: \" + format);\n }\n return new Promise(function (resolve) {\n return resolve(getImage(Buffer.from(data, 'base64'), format));\n });\n};\nvar resolveImageFromData = function resolveImageFromData(src) {\n if (src.data && src.format) {\n return new Promise(function (resolve) {\n return resolve(getImage(src.data, src.format));\n });\n }\n throw new Error(\"Invalid data given for local file: \" + JSON.stringify(src));\n};\nvar resolveBufferImage = function resolveBufferImage(buffer) {\n var format = guessFormat(buffer);\n if (format) {\n return new Promise(function (resolve) {\n return resolve(getImage(buffer, format));\n });\n }\n return Promise.resolve();\n};\nvar resolveBlobImage = /*#__PURE__*/function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(blob) {\n var type, arrayBuffer, _buffer, format, buffer;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n type = blob.type;\n if (!(!type || type === 'application/octet-stream')) {\n _context2.next = 7;\n break;\n }\n _context2.next = 4;\n return blob.arrayBuffer();\n case 4:\n arrayBuffer = _context2.sent;\n _buffer = Buffer.from(arrayBuffer);\n return _context2.abrupt(\"return\", resolveBufferImage(_buffer));\n case 7:\n if (type.startsWith('image/')) {\n _context2.next = 9;\n break;\n }\n throw new Error(\"Invalid blob type: \" + type);\n case 9:\n format = type.replace('image/', '');\n if (isValidFormat(format)) {\n _context2.next = 12;\n break;\n }\n throw new Error(\"Invalid blob type: \" + type);\n case 12:\n _context2.next = 14;\n return blob.arrayBuffer();\n case 14:\n buffer = _context2.sent;\n return _context2.abrupt(\"return\", getImage(Buffer.from(buffer), format));\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2);\n }));\n return function resolveBlobImage(_x3) {\n return _ref4.apply(this, arguments);\n };\n}();\nvar getImageFormat = function getImageFormat(body) {\n var isPng = body[0] === 137 && body[1] === 80 && body[2] === 78 && body[3] === 71 && body[4] === 13 && body[5] === 10 && body[6] === 26 && body[7] === 10;\n var isJpg = body[0] === 255 && body[1] === 216 && body[2] === 255;\n var extension = '';\n if (isPng) {\n extension = 'png';\n } else if (isJpg) {\n extension = 'jpg';\n } else {\n throw new Error('Not valid image extension');\n }\n return extension;\n};\nvar resolveImageFromUrl = /*#__PURE__*/function () {\n var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(src) {\n var uri, body, headers, _src$method, method, credentials, data, extension;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n uri = src.uri, body = src.body, headers = src.headers, _src$method = src.method, method = _src$method === void 0 ? 'GET' : _src$method, credentials = src.credentials;\n {\n _context3.next = 7;\n break;\n }\n case 4:\n _context3.t0 = _context3.sent;\n _context3.next = 10;\n break;\n case 7:\n _context3.next = 9;\n return fetchRemoteFile(uri, {\n body: body,\n headers: headers,\n method: method,\n credentials: credentials\n });\n case 9:\n _context3.t0 = _context3.sent;\n case 10:\n data = _context3.t0;\n extension = getImageFormat(data);\n return _context3.abrupt(\"return\", getImage(data, extension));\n case 13:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n return function resolveImageFromUrl(_x4) {\n return _ref5.apply(this, arguments);\n };\n}();\nvar resolveImage = function resolveImage(src, _temp) {\n var _ref6 = _temp === void 0 ? {} : _temp,\n _ref6$cache = _ref6.cache,\n cache = _ref6$cache === void 0 ? true : _ref6$cache;\n var image;\n var cacheKey = src.data ? src.data.toString() : src.uri;\n if (typeof Blob !== 'undefined' && src instanceof Blob) {\n image = resolveBlobImage(src);\n } else if (Buffer.isBuffer(src)) {\n image = resolveBufferImage(src);\n } else if (cache && IMAGE_CACHE.get(cacheKey)) {\n return IMAGE_CACHE.get(cacheKey);\n } else if (isCompatibleBase64(src)) {\n image = resolveBase64Image(src);\n } else if (typeof src === 'object' && src.data) {\n image = resolveImageFromData(src);\n } else {\n image = resolveImageFromUrl(src);\n }\n if (!image) {\n throw new Error('Cannot resolve image');\n }\n if (cache) {\n IMAGE_CACHE.set(cacheKey, image);\n }\n return image;\n};\n\nexport { resolveImage as default };\n","import { upperFirst, capitalize, last, pick, compose, evolve, mapValues, matchPercent, isNil, get, castArray, omit, asyncCompose } from '@react-pdf/fns';\nimport * as P from '@react-pdf/primitives';\nimport { TextInstance } from '@react-pdf/primitives';\nimport stylesheet, { transformColor, processTransform, flatten } from '@react-pdf/stylesheet';\nimport layoutEngine, { bidi, linebreaker, justification, textDecoration, scriptItemizer, wordHyphenation } from '@react-pdf/textkit';\nimport { PDFFont } from '@react-pdf/pdfkit';\nimport * as Yoga from 'yoga-layout';\nimport emojiRegex from 'emoji-regex';\nimport resolveImage from '@react-pdf/image';\n\n/**\n * Create attributed string from text fragments\n *\n * @param {Object[]} fragments fragments\n * @returns {Object} attributed string\n */\nconst fromFragments = fragments => {\n let offset = 0;\n let string = '';\n const runs = [];\n fragments.forEach(fragment => {\n string += fragment.string;\n runs.push({\n start: offset,\n end: offset + fragment.string.length,\n attributes: fragment.attributes || {}\n });\n offset += fragment.string.length;\n });\n return {\n string,\n runs\n };\n};\n\n/**\n * Apply transformation to text string\n *\n * @param {string} text\n * @param {string} transformation type\n * @returns {string} transformed text\n */\nconst transformText = (text, transformation) => {\n switch (transformation) {\n case 'uppercase':\n return text.toUpperCase();\n case 'lowercase':\n return text.toLowerCase();\n case 'capitalize':\n return capitalize(text);\n case 'upperfirst':\n return upperFirst(text);\n default:\n return text;\n }\n};\n\n/* eslint-disable class-methods-use-this */\n\nclass StandardFont {\n constructor(src) {\n this.name = src;\n this.src = PDFFont.open(null, src);\n }\n encode(str) {\n return this.src.encode(str);\n }\n layout(str) {\n const [encoded, positions] = this.encode(str);\n return {\n positions,\n stringIndices: positions.map((_, i) => i),\n glyphs: encoded.map((g, i) => {\n const glyph = this.getGlyph(parseInt(g, 16));\n glyph.advanceWidth = positions[i].advanceWidth;\n return glyph;\n })\n };\n }\n glyphForCodePoint(codePoint) {\n const glyph = this.getGlyph(codePoint);\n glyph.advanceWidth = 400;\n return glyph;\n }\n getGlyph(id) {\n return {\n id,\n _font: this.src,\n codePoints: [id],\n isLigature: false,\n name: this.src.font.characterToGlyph(id)\n };\n }\n hasGlyphForCodePoint(codePoint) {\n return this.src.font.characterToGlyph(codePoint) !== '.notdef';\n }\n\n // Based on empirical observation\n get ascent() {\n return 900;\n }\n\n // Based on empirical observation\n get capHeight() {\n switch (this.name) {\n case 'Times-Roman':\n case 'Times-Bold':\n case 'Times-Italic':\n case 'Times-BoldItalic':\n return 650;\n case 'Courier':\n case 'Courier-Bold':\n case 'Courier-Oblique':\n case 'Courier-BoldOblique':\n return 550;\n default:\n return 690;\n }\n }\n\n // Based on empirical observation\n get xHeight() {\n switch (this.name) {\n case 'Times-Roman':\n case 'Times-Bold':\n case 'Times-Italic':\n case 'Times-BoldItalic':\n return 440;\n case 'Courier':\n case 'Courier-Bold':\n case 'Courier-Oblique':\n case 'Courier-BoldOblique':\n return 390;\n default:\n return 490;\n }\n }\n\n // Based on empirical observation\n get descent() {\n switch (this.name) {\n case 'Times-Roman':\n case 'Times-Bold':\n case 'Times-Italic':\n case 'Times-BoldItalic':\n return -220;\n case 'Courier':\n case 'Courier-Bold':\n case 'Courier-Oblique':\n case 'Courier-BoldOblique':\n return -230;\n default:\n return -200;\n }\n }\n get lineGap() {\n return 0;\n }\n get unitsPerEm() {\n return 1000;\n }\n}\n\nconst fontCache = {};\nconst IGNORED_CODE_POINTS = [173];\nconst getFontSize = node => node.attributes.fontSize || 12;\nconst getOrCreateFont = name => {\n if (fontCache[name]) return fontCache[name];\n const font = new StandardFont(name);\n fontCache[name] = font;\n return font;\n};\nconst getFallbackFont = () => getOrCreateFont('Helvetica');\nconst pickFontFromFontStack = (codePoint, fontStack, lastFont) => {\n const fontStackWithFallback = [...fontStack, lastFont, getFallbackFont()];\n for (let i = 0; i < fontStackWithFallback.length; i += 1) {\n const font = fontStackWithFallback[i];\n if (!IGNORED_CODE_POINTS.includes(codePoint) && font && font.hasGlyphForCodePoint && font.hasGlyphForCodePoint(codePoint)) {\n return font;\n }\n }\n return getFallbackFont();\n};\nconst fontSubstitution = () => _ref => {\n let {\n string,\n runs\n } = _ref;\n let lastFont = null;\n let lastFontSize = null;\n let lastIndex = 0;\n let index = 0;\n const res = [];\n for (let i = 0; i < runs.length; i += 1) {\n const run = runs[i];\n const defaultFont = run.attributes.font.map(font => typeof font === 'string' ? getOrCreateFont(font) : font);\n if (string.length === 0) {\n res.push({\n start: 0,\n end: 0,\n attributes: {\n font: defaultFont\n }\n });\n break;\n }\n const chars = string.slice(run.start, run.end);\n for (let j = 0; j < chars.length; j += 1) {\n const char = chars[j];\n const codePoint = char.codePointAt();\n // If the default font does not have a glyph and the fallback font does, we use it\n const font = pickFontFromFontStack(codePoint, defaultFont, lastFont);\n const fontSize = getFontSize(run);\n\n // If anything that would impact res has changed, update it\n if (font !== lastFont || fontSize !== lastFontSize || font.unitsPerEm !== lastFont.unitsPerEm) {\n if (lastFont) {\n res.push({\n start: lastIndex,\n end: index,\n attributes: {\n font: lastFont,\n scale: lastFontSize / lastFont.unitsPerEm\n }\n });\n }\n lastFont = font;\n lastFontSize = fontSize;\n lastIndex = index;\n }\n index += char.length;\n }\n }\n if (lastIndex < string.length) {\n const fontSize = getFontSize(last(runs));\n res.push({\n start: lastIndex,\n end: string.length,\n attributes: {\n font: lastFont,\n scale: fontSize / lastFont.unitsPerEm\n }\n });\n }\n return {\n string,\n runs: res\n };\n};\n\nconst isTextInstance$4 = node => node.type === P.TextInstance;\nconst engines$1 = {\n bidi,\n linebreaker,\n justification,\n textDecoration,\n scriptItemizer,\n wordHyphenation,\n fontSubstitution\n};\nconst engine$1 = layoutEngine(engines$1);\nconst getFragments$1 = (fontStore, instance) => {\n if (!instance) return [{\n string: ''\n }];\n const fragments = [];\n const {\n fill = 'black',\n fontFamily = 'Helvetica',\n fontWeight,\n fontStyle,\n fontSize = 18,\n textDecorationColor,\n textDecorationStyle,\n textTransform,\n opacity\n } = instance.props;\n const _textDecoration = instance.props.textDecoration;\n const fontFamilies = typeof fontFamily === 'string' ? [fontFamily] : [...(fontFamily || [])];\n const font = fontFamilies.map(fontFamilyName => {\n if (typeof fontFamilyName !== 'string') return fontFamilyName;\n const opts = {\n fontFamily: fontFamilyName,\n fontWeight,\n fontStyle\n };\n const obj = fontStore ? fontStore.getFont(opts) : null;\n return obj ? obj.data : fontFamilyName;\n });\n const attributes = {\n font,\n opacity,\n fontSize,\n color: fill,\n underlineStyle: textDecorationStyle,\n underline: _textDecoration === 'underline' || _textDecoration === 'underline line-through' || _textDecoration === 'line-through underline',\n underlineColor: textDecorationColor || fill,\n strike: _textDecoration === 'line-through' || _textDecoration === 'underline line-through' || _textDecoration === 'line-through underline',\n strikeStyle: textDecorationStyle,\n strikeColor: textDecorationColor || fill\n };\n for (let i = 0; i < instance.children.length; i += 1) {\n const child = instance.children[i];\n if (isTextInstance$4(child)) {\n fragments.push({\n string: transformText(child.value, textTransform),\n attributes\n });\n } else if (child) {\n fragments.push(...getFragments$1(child));\n }\n }\n return fragments;\n};\nconst getAttributedString$1 = (fontStore, instance) => fromFragments(getFragments$1(fontStore, instance));\nconst AlmostInfinity = 999999999999;\nconst shrinkWhitespaceFactor = {\n before: -0.5,\n after: -0.5\n};\nconst layoutTspan = fontStore => node => {\n var _node$props, _node$props2;\n const attributedString = getAttributedString$1(fontStore, node);\n const x = ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.x) || 0;\n const y = ((_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.y) || 0;\n const container = {\n x,\n y,\n width: AlmostInfinity,\n height: AlmostInfinity\n };\n const hyphenationCallback = node.props.hyphenationCallback || (fontStore === null || fontStore === void 0 ? void 0 : fontStore.getHyphenationCallback()) || null;\n const layoutOptions = {\n hyphenationCallback,\n shrinkWhitespaceFactor\n };\n const lines = engine$1(attributedString, container, layoutOptions).flat();\n return Object.assign({}, node, {\n lines\n });\n};\nconst layoutText$1 = (fontStore, node) => {\n if (!node.children) return node;\n const children = node.children.map(layoutTspan(fontStore));\n return Object.assign({}, node, {\n children\n });\n};\n\nconst isDefs = node => node.type === P.Defs;\nconst getDefs = node => {\n const children = node.children || [];\n const defs = children.find(isDefs) || {};\n const values = defs.children || [];\n return values.reduce((acc, value) => {\n var _value$props;\n const id = (_value$props = value.props) === null || _value$props === void 0 ? void 0 : _value$props.id;\n if (id) acc[id] = value;\n return acc;\n }, {});\n};\n\nconst isNotDefs = node => node.type !== P.Defs;\nconst detachDefs = node => {\n if (!node.children) return node;\n const children = node.children.filter(isNotDefs);\n return Object.assign({}, node, {\n children\n });\n};\nconst URL_REGEX = /url\\(['\"]?#([^'\"]+)['\"]?\\)/;\nconst replaceDef = (defs, value) => {\n if (!value) return undefined;\n if (!URL_REGEX.test(value)) return value;\n const match = value.match(URL_REGEX);\n return defs[match[1]];\n};\nconst parseNodeDefs = defs => node => {\n var _node$props, _node$props2;\n const fill = replaceDef(defs, (_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.fill);\n const clipPath = replaceDef(defs, (_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.clipPath);\n const props = Object.assign({}, node.props, {\n fill,\n clipPath\n });\n const children = node.children ? node.children.map(parseNodeDefs(defs)) : undefined;\n return Object.assign({}, node, {\n props,\n children\n });\n};\nconst parseDefs = root => {\n if (!root.children) return root;\n const defs = getDefs(root);\n const children = root.children.map(parseNodeDefs(defs));\n return Object.assign({}, root, {\n children\n });\n};\nconst replaceDefs = node => {\n return detachDefs(parseDefs(node));\n};\n\nconst parseViewbox = value => {\n if (!value) return null;\n const values = value.split(/[,\\s]+/).map(parseFloat);\n if (values.length !== 4) return null;\n return {\n minX: values[0],\n minY: values[1],\n maxX: values[2],\n maxY: values[3]\n };\n};\n\nconst getContainer$1 = node => {\n const viewbox = parseViewbox(node.props.viewBox);\n if (viewbox) {\n return {\n width: viewbox.maxX,\n height: viewbox.maxY\n };\n }\n if (node.props.width && node.props.height) {\n return {\n width: parseFloat(node.props.width),\n height: parseFloat(node.props.height)\n };\n }\n return {\n width: 0,\n height: 0\n };\n};\n\nconst SVG_INHERITED_PROPS = ['x', 'y', 'clipPath', 'clipRule', 'opacity', 'fill', 'fillOpacity', 'fillRule', 'stroke', 'strokeLinecap', 'strokeLinejoin', 'strokeOpacity', 'strokeWidth', 'textAnchor', 'dominantBaseline', 'color', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'letterSpacing', 'opacity', 'textDecoration', 'lineHeight', 'textAlign', 'visibility', 'wordSpacing'];\nconst getInheritProps = node => {\n const props = node.props || {};\n return pick(SVG_INHERITED_PROPS, props);\n};\nconst inheritProps = node => {\n if (!node.children) return node;\n const inheritedProps = getInheritProps(node);\n const children = node.children.map(child => {\n const props = Object.assign({}, inheritedProps, child.props || {});\n const newChild = Object.assign({}, child, {\n props\n });\n return inheritProps(newChild);\n });\n return Object.assign({}, node, {\n children\n });\n};\n\nconst parseAspectRatio = value => {\n const match = value.replace(/[\\s\\r\\t\\n]+/gm, ' ').replace(/^defer\\s/, '').split(' ');\n const align = match[0] || 'xMidYMid';\n const meetOrSlice = match[1] || 'meet';\n return {\n align,\n meetOrSlice\n };\n};\n\nconst STYLE_PROPS = ['width', 'height', 'color', 'stroke', 'strokeWidth', 'opacity', 'fillOpacity', 'strokeOpacity', 'fill', 'fillRule', 'clipPath', 'offset', 'transform', 'strokeLinejoin', 'strokeLinecap', 'strokeDasharray'];\nconst VERTICAL_PROPS = ['y', 'y1', 'y2', 'height', 'cy', 'ry'];\nconst HORIZONTAL_PROPS = ['x', 'x1', 'x2', 'width', 'cx', 'rx'];\nconst isType$3 = type => node => node.type === type;\nconst isSvg$3 = isType$3(P.Svg);\nconst isText$5 = isType$3(P.Text);\nconst isTextInstance$3 = isType$3(P.TextInstance);\nconst transformPercent = container => props => mapValues(props, (value, key) => {\n const match = matchPercent(value);\n if (match && VERTICAL_PROPS.includes(key)) {\n return match.percent * container.height;\n }\n if (match && HORIZONTAL_PROPS.includes(key)) {\n return match.percent * container.width;\n }\n return value;\n});\nconst parsePercent = value => {\n const match = matchPercent(value);\n return match ? match.percent : parseFloat(value);\n};\nconst parseProps = container => node => {\n let props = transformPercent(container)(node.props);\n props = evolve({\n x: parseFloat,\n x1: parseFloat,\n x2: parseFloat,\n y: parseFloat,\n y1: parseFloat,\n y2: parseFloat,\n r: parseFloat,\n rx: parseFloat,\n ry: parseFloat,\n cx: parseFloat,\n cy: parseFloat,\n width: parseFloat,\n height: parseFloat,\n offset: parsePercent,\n fill: transformColor,\n opacity: parsePercent,\n stroke: transformColor,\n stopOpacity: parsePercent,\n stopColor: transformColor,\n transform: processTransform\n }, props);\n return Object.assign({}, node, {\n props\n });\n};\nconst mergeStyles$1 = node => {\n const style = node.style || {};\n const props = Object.assign({}, style, node.props);\n return Object.assign({}, node, {\n props\n });\n};\nconst removeNoneValues = node => {\n const removeNone = value => value === 'none' ? null : value;\n const props = mapValues(node.props, removeNone);\n return Object.assign({}, node, {\n props\n });\n};\nconst pickStyleProps = node => {\n const props = node.props || {};\n const styleProps = pick(STYLE_PROPS, props);\n const style = Object.assign({}, styleProps, node.style || {});\n return Object.assign({}, node, {\n style\n });\n};\nconst parseSvgProps = node => {\n const props = evolve({\n width: parseFloat,\n height: parseFloat,\n viewBox: parseViewbox,\n preserveAspectRatio: parseAspectRatio\n }, node.props);\n return Object.assign({}, node, {\n props\n });\n};\nconst wrapBetweenTspan = node => ({\n type: P.Tspan,\n props: {},\n children: [node]\n});\nconst addMissingTspan = node => {\n if (!isText$5(node)) return node;\n if (!node.children) return node;\n const resolveChild = child => isTextInstance$3(child) ? wrapBetweenTspan(child) : child;\n const children = node.children.map(resolveChild);\n return Object.assign({}, node, {\n children\n });\n};\nconst parseText = fontStore => node => {\n if (isText$5(node)) return layoutText$1(fontStore, node);\n if (!node.children) return node;\n const children = node.children.map(parseText(fontStore));\n return Object.assign({}, node, {\n children\n });\n};\nconst resolveSvgNode = container => compose(parseProps(container), addMissingTspan, removeNoneValues, mergeStyles$1);\nconst resolveChildren = container => node => {\n if (!node.children) return node;\n const resolveChild = compose(resolveChildren(container), resolveSvgNode(container));\n const children = node.children.map(resolveChild);\n return Object.assign({}, node, {\n children\n });\n};\nconst resolveSvgRoot = (node, fontStore) => {\n const container = getContainer$1(node);\n return compose(replaceDefs, parseText(fontStore), parseSvgProps, pickStyleProps, inheritProps, resolveChildren(container))(node);\n};\n\n/**\n * Pre-process SVG nodes so they can be rendered in the next steps\n *\n * @param {Object} node root node\n * @param {Object} fontStore font store\n * @returns {Object} root node\n */\nconst resolveSvg = (node, fontStore) => {\n if (!node.children) return node;\n const resolveChild = child => resolveSvg(child, fontStore);\n const root = isSvg$3(node) ? resolveSvgRoot(node, fontStore) : node;\n const children = root.children.map(resolveChild);\n return Object.assign({}, root, {\n children\n });\n};\n\n/* eslint-disable import/prefer-default-export */\n\nlet instance;\nconst loadYoga = async () => {\n if (!instance) {\n // Yoga WASM binaries must be asynchronously compiled and loaded\n // to prevent Event emitter memory leak warnings, Yoga must be loaded only once\n instance = await Yoga.loadYoga();\n }\n const config = instance.Config.create();\n config.setPointScaleFactor(0);\n const node = {\n create: () => instance.Node.createWithConfig(config)\n };\n return {\n node\n };\n};\n\nconst resolveYoga = async root => {\n const yoga = await loadYoga();\n return Object.assign({}, root, {\n yoga\n });\n};\n\nconst getZIndex = node => node.style.zIndex;\nconst shouldSort = node => node.type !== P.Document && node.type !== P.Svg;\nconst sortZIndex = (a, b) => {\n const za = getZIndex(a);\n const zb = getZIndex(b);\n if (!za && !zb) return 0;\n if (!za) return 1;\n if (!zb) return -1;\n return zb - za;\n};\n\n/**\n * Sort children by zIndex value\n *\n * @param {Object} node\n * @returns {Object} node\n */\nconst resolveZIndex = node => {\n if (!node.children) return node;\n const sortedChildren = shouldSort(node) ? node.children.sort(sortZIndex) : node.children;\n const children = sortedChildren.map(resolveZIndex);\n return Object.assign({}, node, {\n children\n });\n};\n\n/* eslint-disable no-cond-assign */\n\n// Caches emoji images data\nconst emojis = {};\nconst regex = emojiRegex();\nconst reflect = promise => function () {\n return promise(...arguments).then(v => v, e => e);\n};\n\n// Returns a function to be able to mock resolveImage.\nconst makeFetchEmojiImage = () => reflect(resolveImage);\n\n/**\n * When an emoji as no variations, it might still have 2 parts,\n * the canonical emoji and an empty string.\n * ex.\n * (no color) Array.from('❤️') => [\"❤\", \"️\"]\n * (w/ color) Array.from('👍🏿') => [\"👍\", \"🏿\"]\n *\n * The empty string needs to be removed otherwise the generated\n * url will be incorect.\n */\nconst _removeVariationSelectors = x => x !== '️';\nconst getCodePoints = (string, withVariationSelectors) => Array.from(string).filter(withVariationSelectors ? () => true : _removeVariationSelectors).map(char => char.codePointAt(0).toString(16)).join('-');\nconst buildEmojiUrl = (emoji, source) => {\n const {\n url,\n format,\n builder,\n withVariationSelectors\n } = source;\n if (typeof builder === 'function') {\n return builder(getCodePoints(emoji, withVariationSelectors));\n }\n return \"\" + url + getCodePoints(emoji, withVariationSelectors) + \".\" + format;\n};\nconst fetchEmojis = (string, source) => {\n if (!source || !source.url && !source.builder) return [];\n const promises = [];\n Array.from(string.matchAll(regex)).forEach(match => {\n const emoji = match[0];\n if (!emojis[emoji] || emojis[emoji].loading) {\n const emojiUrl = buildEmojiUrl(emoji, source);\n emojis[emoji] = {\n loading: true\n };\n const fetchEmojiImage = makeFetchEmojiImage();\n promises.push(fetchEmojiImage({\n uri: emojiUrl\n }).then(image => {\n emojis[emoji].loading = false;\n emojis[emoji].data = image.data;\n }));\n }\n });\n return promises;\n};\nconst specialCases = ['©️', '®', '™']; // Do not treat these as emojis if emoji not present\n\nconst embedEmojis = fragments => {\n const result = [];\n for (let i = 0; i < fragments.length; i += 1) {\n const fragment = fragments[i];\n let lastIndex = 0;\n Array.from(fragment.string.matchAll(regex)).forEach(match => {\n const {\n index\n } = match;\n const emoji = match[0];\n const isSpecialCase = specialCases.includes(emoji);\n const emojiSize = fragment.attributes.fontSize;\n const chunk = fragment.string.slice(lastIndex, index + match[0].length);\n\n // If emoji image was found, we create a new fragment with the\n // correct attachment and object substitution character;\n if (emojis[emoji] && emojis[emoji].data) {\n result.push({\n string: chunk.replace(match, String.fromCharCode(0xfffc)),\n attributes: {\n ...fragment.attributes,\n attachment: {\n width: emojiSize,\n height: emojiSize,\n yOffset: Math.floor(emojiSize * 0.1),\n image: emojis[emoji].data\n }\n }\n });\n } else if (isSpecialCase) {\n result.push({\n string: chunk,\n attributes: fragment.attributes\n });\n } else {\n // If no emoji data, we just replace the emoji with a nodef char\n result.push({\n string: chunk.replace(match, String.fromCharCode(0)),\n attributes: fragment.attributes\n });\n }\n lastIndex = index + emoji.length;\n });\n if (lastIndex < fragment.string.length) {\n result.push({\n string: fragment.string.slice(lastIndex),\n attributes: fragment.attributes\n });\n }\n }\n return result;\n};\n\n/**\n * Get image source\n *\n * @param {Object} node image node\n * @returns {string | Object} image src\n */\nconst getSource = node => {\n var _node$props, _node$props2, _node$props3;\n return ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.src) || ((_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.source) || ((_node$props3 = node.props) === null || _node$props3 === void 0 ? void 0 : _node$props3.href);\n};\n\n/**\n * Resolves `src` to `@react-pdf/image` interface.\n *\n * Also it handles factories and async sources.\n *\n * @param {string | Object | Function} src\n * @returns {Promise} resolved src\n */\nconst resolveSource = async src => {\n const source = typeof src === 'function' ? await src() : await src;\n return typeof source === 'string' ? {\n uri: source\n } : source;\n};\n\n/* eslint-disable no-param-reassign */\n\n\n/**\n * Fetches image and append data to node\n * Ideally this fn should be immutable.\n *\n * @param {Object} node\n */\nconst fetchImage = async node => {\n const src = getSource(node);\n const {\n cache\n } = node.props;\n if (!src) {\n console.warn(false, 'Image should receive either a \"src\" or \"source\" prop');\n return;\n }\n try {\n const source = await resolveSource(src);\n if (!source) {\n throw new Error(\"Image's \\\"src\\\" or \\\"source\\\" prop returned \" + source);\n }\n node.image = await resolveImage(source, {\n cache\n });\n node.image.key = source.data ? source.data.toString() : source.uri;\n } catch (e) {\n node.image = {\n width: 0,\n height: 0,\n key: null\n };\n console.warn(e.message);\n }\n};\n\nconst isImage$2 = node => node.type === P.Image;\n\n/**\n * Get all asset promises that need to be resolved\n *\n * @param {Object} fontStore font store\n * @param {Object} node root node\n * @returns {Promise[]} asset promises\n */\nconst fetchAssets = (fontStore, node) => {\n var _node$children;\n const promises = [];\n const listToExplore = ((_node$children = node.children) === null || _node$children === void 0 ? void 0 : _node$children.slice(0)) || [];\n const emojiSource = fontStore ? fontStore.getEmojiSource() : null;\n while (listToExplore.length > 0) {\n var _n$style;\n const n = listToExplore.shift();\n if (isImage$2(n)) {\n promises.push(fetchImage(n));\n }\n if (fontStore && (_n$style = n.style) !== null && _n$style !== void 0 && _n$style.fontFamily) {\n promises.push(fontStore.load(n.style));\n }\n if (typeof n === 'string') {\n promises.push(...fetchEmojis(n, emojiSource));\n }\n if (typeof n.value === 'string') {\n promises.push(...fetchEmojis(n.value, emojiSource));\n }\n if (n.children) {\n n.children.forEach(childNode => {\n listToExplore.push(childNode);\n });\n }\n }\n return promises;\n};\n\n/**\n * Fetch image, font and emoji assets in parallel.\n * Layout process will not be resumed until promise resolves.\n *\n * @param {Object} node root node\n * @param {Object} fontStore font store\n * @returns {Promise} root node\n */\nconst resolveAssets = async (node, fontStore) => {\n const promises = fetchAssets(fontStore, node);\n await Promise.all(promises);\n return node;\n};\n\nconst isLink$1 = node => node.type === P.Link;\nconst DEFAULT_LINK_STYLES = {\n color: 'blue',\n textDecoration: 'underline'\n};\n\n/**\n * Computes styles using stylesheet\n *\n * @param {Object} container\n * @param {Object} node document node\n * @returns {Object} computed styles\n */\nconst computeStyle = (container, node) => {\n let baseStyle = node.style;\n if (isLink$1(node)) {\n baseStyle = Array.isArray(node.style) ? [DEFAULT_LINK_STYLES, ...node.style] : [DEFAULT_LINK_STYLES, node.style];\n }\n return stylesheet(container, baseStyle);\n};\n\n/**\n * @typedef {Function} ResolveNodeStyles\n * @param {Object} node document node\n * @returns {Object} node (and subnodes) with resolved styles\n */\n\n/**\n * Resolves node styles\n *\n * @param {Object} container\n * @returns {ResolveNodeStyles} resolve node styles\n */\nconst resolveNodeStyles = container => node => {\n const style = computeStyle(container, node);\n if (!node.children) return Object.assign({}, node, {\n style\n });\n const children = node.children.map(resolveNodeStyles(container));\n return Object.assign({}, node, {\n style,\n children\n });\n};\n\n/**\n * Resolves page styles\n *\n * @param {Object} page document page\n * @returns {Object} document page with resolved styles\n */\nconst resolvePageStyles = page => {\n var _page$box, _page$box2, _page$props;\n const dpi = 72; // Removed: page.props?.dpi || 72;\n const width = ((_page$box = page.box) === null || _page$box === void 0 ? void 0 : _page$box.width) || page.style.width;\n const height = ((_page$box2 = page.box) === null || _page$box2 === void 0 ? void 0 : _page$box2.height) || page.style.height;\n const orientation = ((_page$props = page.props) === null || _page$props === void 0 ? void 0 : _page$props.orientation) || 'portrait';\n const container = {\n width,\n height,\n orientation,\n dpi\n };\n return resolveNodeStyles(container)(page);\n};\n\n/**\n * Resolves document styles\n *\n * @param {Object} root document root\n * @returns {Object} document root with resolved styles\n */\nconst resolveStyles = root => {\n if (!root.children) return root;\n const children = root.children.map(resolvePageStyles);\n return Object.assign({}, root, {\n children\n });\n};\n\nconst getTransformStyle = s => node => {\n var _node$style, _node$style2;\n return isNil((_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style[s]) ? '50%' : (_node$style2 = node.style) === null || _node$style2 === void 0 ? void 0 : _node$style2[s];\n};\n\n/**\n * Get node origin\n *\n * @param {Object} node\n * @returns {{ left?: number, top?: number }} node origin\n */\nconst getOrigin = node => {\n if (!node.box) return {};\n const {\n left,\n top,\n width,\n height\n } = node.box;\n const transformOriginX = getTransformStyle('transformOriginX')(node);\n const transformOriginY = getTransformStyle('transformOriginY')(node);\n const percentX = matchPercent(transformOriginX);\n const percentY = matchPercent(transformOriginY);\n const offsetX = percentX ? width * percentX.percent : transformOriginX;\n const offsetY = percentY ? height * percentY.percent : transformOriginY;\n return {\n left: left + offsetX,\n top: top + offsetY\n };\n};\n\n/**\n * Resolve node origin\n *\n * @param {Object} node\n * @returns {Object} node with origin attribute\n */\nconst resolveNodeOrigin = node => {\n const origin = getOrigin(node);\n const newNode = Object.assign({}, node, {\n origin\n });\n if (!node.children) return newNode;\n const children = node.children.map(resolveNodeOrigin);\n return Object.assign({}, newNode, {\n children\n });\n};\n\n/**\n * Resolve document origins\n *\n * @param {Object} root document root\n * @returns {Object} document root\n */\n\nconst resolveOrigin = root => {\n if (!root.children) return root;\n const children = root.children.map(resolveNodeOrigin);\n return Object.assign({}, root, {\n children\n });\n};\n\n/* eslint-disable no-plusplus */\n/* eslint-disable prefer-const */\n/* eslint-disable prefer-destructuring */\n\nconst getBookmarkValue = title => {\n return typeof title === 'string' ? {\n title,\n fit: false,\n expanded: false\n } : title;\n};\nconst resolveBookmarks = node => {\n let refs = 0;\n const children = (node.children || []).slice(0);\n const listToExplore = children.map(value => ({\n value,\n parent: null\n }));\n while (listToExplore.length > 0) {\n var _child$props;\n const element = listToExplore.shift();\n const child = element.value;\n let parent = element.parent;\n if ((_child$props = child.props) !== null && _child$props !== void 0 && _child$props.bookmark) {\n var _parent;\n const bookmark = getBookmarkValue(child.props.bookmark);\n const ref = refs++;\n const newHierarchy = {\n ref,\n parent: (_parent = parent) === null || _parent === void 0 ? void 0 : _parent.ref,\n ...bookmark\n };\n child.props.bookmark = newHierarchy;\n parent = newHierarchy;\n }\n if (child.children) {\n child.children.forEach(childNode => {\n listToExplore.push({\n value: childNode,\n parent\n });\n });\n }\n }\n return node;\n};\n\nconst VALID_ORIENTATIONS = ['portrait', 'landscape'];\n\n/**\n * Get page orientation. Defaults to portrait\n *\n * @param {Object} page object\n * @returns {string} page orientation\n */\nconst getOrientation = page => {\n var _page$props;\n const value = ((_page$props = page.props) === null || _page$props === void 0 ? void 0 : _page$props.orientation) || 'portrait';\n return VALID_ORIENTATIONS.includes(value) ? value : 'portrait';\n};\n\n/**\n * Return true if page is landscape\n *\n * @param {Object} page instance\n * @returns {boolean} is page landscape\n */\nconst isLandscape = page => getOrientation(page) === 'landscape';\n\nconst PAGE_SIZES = {\n '4A0': [4767.87, 6740.79],\n '2A0': [3370.39, 4767.87],\n A0: [2383.94, 3370.39],\n A1: [1683.78, 2383.94],\n A2: [1190.55, 1683.78],\n A3: [841.89, 1190.55],\n A4: [595.28, 841.89],\n A5: [419.53, 595.28],\n A6: [297.64, 419.53],\n A7: [209.76, 297.64],\n A8: [147.4, 209.76],\n A9: [104.88, 147.4],\n A10: [73.7, 104.88],\n B0: [2834.65, 4008.19],\n B1: [2004.09, 2834.65],\n B2: [1417.32, 2004.09],\n B3: [1000.63, 1417.32],\n B4: [708.66, 1000.63],\n B5: [498.9, 708.66],\n B6: [354.33, 498.9],\n B7: [249.45, 354.33],\n B8: [175.75, 249.45],\n B9: [124.72, 175.75],\n B10: [87.87, 124.72],\n C0: [2599.37, 3676.54],\n C1: [1836.85, 2599.37],\n C2: [1298.27, 1836.85],\n C3: [918.43, 1298.27],\n C4: [649.13, 918.43],\n C5: [459.21, 649.13],\n C6: [323.15, 459.21],\n C7: [229.61, 323.15],\n C8: [161.57, 229.61],\n C9: [113.39, 161.57],\n C10: [79.37, 113.39],\n RA0: [2437.8, 3458.27],\n RA1: [1729.13, 2437.8],\n RA2: [1218.9, 1729.13],\n RA3: [864.57, 1218.9],\n RA4: [609.45, 864.57],\n SRA0: [2551.18, 3628.35],\n SRA1: [1814.17, 2551.18],\n SRA2: [1275.59, 1814.17],\n SRA3: [907.09, 1275.59],\n SRA4: [637.8, 907.09],\n EXECUTIVE: [521.86, 756.0],\n FOLIO: [612.0, 936.0],\n LEGAL: [612.0, 1008.0],\n LETTER: [612.0, 792.0],\n TABLOID: [792.0, 1224.0],\n ID1: [153, 243]\n};\n\n/**\n * Transforms array into size object\n *\n * @param {number[]} v array\n * @returns {{ width: number, height: number }} size object with width and height\n */\nconst toSizeObject = v => ({\n width: v[0],\n height: v[1]\n});\n\n/**\n * Flip size object\n *\n * @param {{ width: number, height: number }} v size object\n * @returns {{ width: number, height: number }} flipped size object\n */\nconst flipSizeObject = v => ({\n width: v.height,\n height: v.width\n});\n\n/**\n * Adjust page size to passed DPI\n *\n * @param {{ width: number, height: number }} v size object\n * @param {number} dpi DPI\n * @returns {{ width: number, height: number }} adjusted size object\n */\nconst adjustDpi = (v, dpi) => ({\n width: v.width ? v.width * (72 / dpi) : v.width,\n height: v.height ? v.height * (72 / dpi) : v.height\n});\n\n/**\n * Returns size object from a given string\n *\n * @param {string} v page size string\n * @returns {{ width: number, height: number }} size object with width and height\n */\nconst getStringSize = v => {\n return toSizeObject(PAGE_SIZES[v.toUpperCase()]);\n};\n\n/**\n * Returns size object from a single number\n *\n * @param {number} n page size number\n * @returns {{ width: number, height: number }} size object with width and height\n */\nconst getNumberSize = n => toSizeObject([n]);\n\n/**\n * Return page size in an object { width, height }\n *\n * @param {Object} page instance\n * @returns {{ width: number, height: number }} size object with width and height\n */\nconst getSize = page => {\n var _page$props, _page$props2;\n const value = ((_page$props = page.props) === null || _page$props === void 0 ? void 0 : _page$props.size) || 'A4';\n const dpi = parseFloat(((_page$props2 = page.props) === null || _page$props2 === void 0 ? void 0 : _page$props2.dpi) || 72);\n const type = typeof value;\n\n /**\n * @type {{ width: number, height: number }}\n */\n let size;\n if (type === 'string') {\n size = getStringSize(value);\n } else if (Array.isArray(value)) {\n size = toSizeObject(value);\n size = adjustDpi(size, dpi);\n } else if (type === 'number') {\n size = getNumberSize(value);\n size = adjustDpi(size, dpi);\n } else {\n size = value;\n size = adjustDpi(size, dpi);\n }\n return isLandscape(page) ? flipSizeObject(size) : size;\n};\n\n/**\n * Resolves page size\n *\n * @param {Object} page\n * @returns {Object} page with resolved size in style attribute\n */\nconst resolvePageSize = page => {\n const size = getSize(page);\n const style = flatten(page.style || {});\n return {\n ...page,\n style: {\n ...style,\n ...size\n }\n };\n};\n\n/**\n * Resolves page sizes\n *\n * @param {Object} root document root\n * @returns {Object} document root with resolved page sizes\n */\nconst resolvePageSizes = root => {\n if (!root.children) return root;\n const children = root.children.map(resolvePageSize);\n return Object.assign({}, root, {\n children\n });\n};\n\nconst isFixed = node => {\n var _node$props;\n return ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.fixed) === true;\n};\n\n/**\n * Get line index at given height\n *\n * @param {Object} node\n * @param {number} height\n */\nconst lineIndexAtHeight = (node, height) => {\n let y = 0;\n if (!node.lines) return 0;\n for (let i = 0; i < node.lines.length; i += 1) {\n const line = node.lines[i];\n if (y + line.box.height > height) return i;\n y += line.box.height;\n }\n return node.lines.length;\n};\n\n/**\n * Get height for given text line index\n *\n * @param {Object} node\n * @param {number} index\n */\nconst heightAtLineIndex = (node, index) => {\n let counter = 0;\n if (!node.lines) return counter;\n for (let i = 0; i < index; i += 1) {\n const line = node.lines[i];\n if (!line) break;\n counter += line.box.height;\n }\n return counter;\n};\n\nconst getLineBreak = (node, height) => {\n const top = get(node, ['box', 'top'], 0);\n const widows = get(node, ['props', 'widows'], 2);\n const orphans = get(node, ['props', 'orphans'], 2);\n const linesQuantity = node.lines.length;\n const slicedLine = lineIndexAtHeight(node, height - top);\n if (slicedLine === 0) {\n return 0;\n }\n if (linesQuantity < orphans) {\n return linesQuantity;\n }\n if (slicedLine < orphans || linesQuantity < orphans + widows) {\n return 0;\n }\n if (linesQuantity === orphans + widows) {\n return orphans;\n }\n if (linesQuantity - slicedLine < widows) {\n return linesQuantity - widows;\n }\n return slicedLine;\n};\n\n// Also receives contentArea in case it's needed\nconst splitText = (node, height) => {\n const slicedLineIndex = getLineBreak(node, height);\n const currentHeight = heightAtLineIndex(node, slicedLineIndex);\n const nextHeight = node.box.height - currentHeight;\n const current = Object.assign({}, node, {\n box: {\n ...node.box,\n height: currentHeight,\n borderBottomWidth: 0\n },\n style: {\n ...node.style,\n marginBottom: 0,\n paddingBottom: 0,\n borderBottomWidth: 0,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n },\n lines: node.lines.slice(0, slicedLineIndex)\n });\n const next = Object.assign({}, node, {\n box: {\n ...node.box,\n top: 0,\n height: nextHeight,\n borderTopWidth: 0\n },\n style: {\n ...node.style,\n marginTop: 0,\n paddingTop: 0,\n borderTopWidth: 0,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0\n },\n lines: node.lines.slice(slicedLineIndex)\n });\n return [current, next];\n};\n\nconst getTop$1 = node => {\n var _node$box;\n return ((_node$box = node.box) === null || _node$box === void 0 ? void 0 : _node$box.top) || 0;\n};\nconst hasFixedHeight = node => {\n var _node$style;\n return !isNil((_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.height);\n};\nconst splitNode = (node, height) => {\n if (!node) return [null, null];\n const nodeTop = getTop$1(node);\n const current = Object.assign({}, node, {\n box: {\n ...node.box,\n borderBottomWidth: 0\n },\n style: {\n ...node.style,\n marginBottom: 0,\n paddingBottom: 0,\n borderBottomWidth: 0,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n });\n current.style.height = height - nodeTop;\n const nextHeight = hasFixedHeight(node) ? node.box.height - (height - nodeTop) : null;\n const next = Object.assign({}, node, {\n box: {\n ...node.box,\n top: 0,\n borderTopWidth: 0\n },\n style: {\n ...node.style,\n marginTop: 0,\n paddingTop: 0,\n borderTopWidth: 0,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0\n }\n });\n if (nextHeight) {\n next.style.height = nextHeight;\n }\n return [current, next];\n};\n\nconst NON_WRAP_TYPES = [P.Svg, P.Note, P.Image, P.Canvas];\nconst getWrap = node => {\n var _node$props;\n if (NON_WRAP_TYPES.includes(node.type)) return false;\n return isNil((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.wrap) ? true : node.props.wrap;\n};\n\nconst getComputedPadding = (node, edge) => {\n const {\n yogaNode\n } = node;\n return yogaNode ? yogaNode.getComputedPadding(edge) : null;\n};\n\n/**\n * Get Yoga computed paddings. Zero otherwise\n *\n * @param {Object} node\n * @returns {{ paddingTop: number, paddingRight: number, paddingBottom: number, paddingLeft: number }} paddings\n */\nconst getPadding = node => {\n const {\n style,\n box\n } = node;\n const paddingTop = getComputedPadding(node, Yoga.Edge.Top) || (box === null || box === void 0 ? void 0 : box.paddingTop) || (style === null || style === void 0 ? void 0 : style.paddingTop) || (style === null || style === void 0 ? void 0 : style.paddingVertical) || (style === null || style === void 0 ? void 0 : style.padding) || 0;\n const paddingRight = getComputedPadding(node, Yoga.Edge.Right) || (box === null || box === void 0 ? void 0 : box.paddingRight) || (style === null || style === void 0 ? void 0 : style.paddingRight) || (style === null || style === void 0 ? void 0 : style.paddingHorizontal) || (style === null || style === void 0 ? void 0 : style.padding) || 0;\n const paddingBottom = getComputedPadding(node, Yoga.Edge.Bottom) || (box === null || box === void 0 ? void 0 : box.paddingBottom) || (style === null || style === void 0 ? void 0 : style.paddingBottom) || (style === null || style === void 0 ? void 0 : style.paddingVertical) || (style === null || style === void 0 ? void 0 : style.padding) || 0;\n const paddingLeft = getComputedPadding(node, Yoga.Edge.Left) || (box === null || box === void 0 ? void 0 : box.paddingLeft) || (style === null || style === void 0 ? void 0 : style.paddingLeft) || (style === null || style === void 0 ? void 0 : style.paddingHorizontal) || (style === null || style === void 0 ? void 0 : style.padding) || 0;\n return {\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft\n };\n};\n\nconst getWrapArea = page => {\n var _page$style;\n const {\n paddingBottom\n } = getPadding(page);\n const height = (_page$style = page.style) === null || _page$style === void 0 ? void 0 : _page$style.height;\n return height - paddingBottom;\n};\n\nconst getContentArea = page => {\n var _page$style;\n const height = (_page$style = page.style) === null || _page$style === void 0 ? void 0 : _page$style.height;\n const {\n paddingTop,\n paddingBottom\n } = getPadding(page);\n return height - paddingBottom - paddingTop;\n};\n\nconst isString = value => typeof value === 'string';\nconst isNumber = value => typeof value === 'number';\nconst isFragment = value => value && value.type === Symbol.for('react.fragment');\n\n/**\n * Transforms a react element instance to internal element format.\n *\n * Can return multiple instances in the case of arrays or fragments.\n *\n * @param {Object} element React element\n * @returns {Object[]} parsed React elements\n */\nconst createInstances = element => {\n if (!element) return [];\n if (isString(element) || isNumber(element)) {\n return [{\n type: TextInstance,\n value: \"\" + element\n }];\n }\n if (isFragment(element)) {\n return createInstances(element.props.children);\n }\n if (Array.isArray(element)) {\n return element.reduce((acc, el) => acc.concat(createInstances(el)), []);\n }\n if (!isString(element.type)) {\n return createInstances(element.type(element.props));\n }\n const {\n type,\n props: {\n style = {},\n children = [],\n ...props\n }\n } = element;\n const nextChildren = castArray(children).reduce((acc, child) => acc.concat(createInstances(child)), []);\n return [{\n type,\n style,\n props,\n box: {},\n children: nextChildren\n }];\n};\n\n/* eslint-disable no-continue */\n\nconst getBreak = node => {\n var _node$props;\n return ((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.break) || false;\n};\nconst getMinPresenceAhead = node => {\n var _node$props2;\n return ((_node$props2 = node.props) === null || _node$props2 === void 0 ? void 0 : _node$props2.minPresenceAhead) || 0;\n};\nconst getFurthestEnd = elements => Math.max(...elements.map(node => node.box.top + node.box.height));\nconst getEndOfMinPresenceAhead = child => {\n return child.box.top + child.box.height + child.box.marginBottom + getMinPresenceAhead(child);\n};\nconst getEndOfPresence = (child, futureElements) => {\n const afterMinPresenceAhead = getEndOfMinPresenceAhead(child);\n const endOfFurthestFutureElement = getFurthestEnd(futureElements.filter(node => {\n var _node$props3;\n return !((_node$props3 = node.props) !== null && _node$props3 !== void 0 && _node$props3.fixed);\n }));\n return Math.min(afterMinPresenceAhead, endOfFurthestFutureElement);\n};\nconst shouldBreak = (child, futureElements, height) => {\n var _child$props;\n if ((_child$props = child.props) !== null && _child$props !== void 0 && _child$props.fixed) return false;\n const shouldSplit = height < child.box.top + child.box.height;\n const canWrap = getWrap(child);\n\n // Calculate the y coordinate where the desired presence of the child ends\n const endOfPresence = getEndOfPresence(child, futureElements);\n // If the child is already at the top of the page, breaking won't improve its presence\n // (as long as react-pdf does not support breaking into differently sized containers)\n const breakingImprovesPresence = child.box.top > child.box.marginTop;\n return getBreak(child) || shouldSplit && !canWrap || !shouldSplit && endOfPresence > height && breakingImprovesPresence;\n};\n\nconst IGNORABLE_CODEPOINTS = [8232,\n// LINE_SEPARATOR\n8233 // PARAGRAPH_SEPARATOR\n];\nconst buildSubsetForFont = font => IGNORABLE_CODEPOINTS.reduce((acc, codePoint) => {\n if (font && font.hasGlyphForCodePoint && font.hasGlyphForCodePoint(codePoint)) {\n return acc;\n }\n return [...acc, String.fromCharCode(codePoint)];\n}, []);\nconst ignoreChars = fragments => fragments.map(fragment => {\n const charSubset = buildSubsetForFont(fragment.attributes.font);\n const subsetRegex = new RegExp(charSubset.join('|'));\n return {\n string: fragment.string.replace(subsetRegex, ''),\n attributes: fragment.attributes\n };\n});\n\nconst PREPROCESSORS = [ignoreChars, embedEmojis];\nconst isImage$1 = node => node.type === P.Image;\nconst isTextInstance$2 = node => node.type === P.TextInstance;\n\n/**\n * Get textkit fragments of given node object\n *\n * @param {Object} fontStore font store\n * @param {Object} instance node\n * @param {string} [parentLink] parent link\n * @param {number} [level] fragment level\n * @returns {Object[]} text fragments\n */\nconst getFragments = function (fontStore, instance, parentLink, level) {\n var _instance$props, _instance$props2;\n if (level === void 0) {\n level = 0;\n }\n if (!instance) return [{\n string: ''\n }];\n let fragments = [];\n const {\n color = 'black',\n direction = 'ltr',\n fontFamily = 'Helvetica',\n fontWeight,\n fontStyle,\n fontSize = 18,\n textAlign,\n lineHeight,\n textDecoration,\n textDecorationColor,\n textDecorationStyle,\n textTransform,\n letterSpacing,\n textIndent,\n opacity,\n verticalAlign\n } = instance.style;\n const fontFamilies = typeof fontFamily === 'string' ? [fontFamily] : [...(fontFamily || [])];\n const font = fontFamilies.map(fontFamilyName => {\n if (typeof fontFamilyName !== 'string') return fontFamilyName;\n const opts = {\n fontFamily: fontFamilyName,\n fontWeight,\n fontStyle\n };\n const obj = fontStore ? fontStore.getFont(opts) : null;\n return obj ? obj.data : fontFamilyName;\n });\n\n // Don't pass main background color to textkit. Will be rendered by the render package instead\n const backgroundColor = level === 0 ? null : instance.style.backgroundColor;\n const attributes = {\n font,\n color,\n opacity,\n fontSize,\n direction,\n verticalAlign,\n backgroundColor,\n indent: textIndent,\n characterSpacing: letterSpacing,\n strikeStyle: textDecorationStyle,\n underlineStyle: textDecorationStyle,\n underline: textDecoration === 'underline' || textDecoration === 'underline line-through' || textDecoration === 'line-through underline',\n strike: textDecoration === 'line-through' || textDecoration === 'underline line-through' || textDecoration === 'line-through underline',\n strikeColor: textDecorationColor || color,\n underlineColor: textDecorationColor || color,\n link: parentLink || ((_instance$props = instance.props) === null || _instance$props === void 0 ? void 0 : _instance$props.src) || ((_instance$props2 = instance.props) === null || _instance$props2 === void 0 ? void 0 : _instance$props2.href),\n lineHeight: lineHeight ? lineHeight * fontSize : null,\n align: textAlign || (direction === 'rtl' ? 'right' : 'left')\n };\n for (let i = 0; i < instance.children.length; i += 1) {\n const child = instance.children[i];\n if (isImage$1(child)) {\n fragments.push({\n string: String.fromCharCode(0xfffc),\n attributes: {\n ...attributes,\n attachment: {\n width: child.style.width || fontSize,\n height: child.style.height || fontSize,\n image: child.image.data\n }\n }\n });\n } else if (isTextInstance$2(child)) {\n fragments.push({\n string: transformText(child.value, textTransform),\n attributes\n });\n } else if (child) {\n fragments.push(...getFragments(fontStore, child, attributes.link, level + 1));\n }\n }\n for (let i = 0; i < PREPROCESSORS.length; i += 1) {\n const preprocessor = PREPROCESSORS[i];\n fragments = preprocessor(fragments);\n }\n return fragments;\n};\n\n/**\n * Get textkit attributed string from text node\n *\n * @param {Object} fontStore font store\n * @param {Object} instance node\n * @returns {Object} attributed string\n */\nconst getAttributedString = (fontStore, instance) => {\n const fragments = getFragments(fontStore, instance);\n return fromFragments(fragments);\n};\n\nconst engines = {\n bidi,\n linebreaker,\n justification,\n textDecoration,\n scriptItemizer,\n wordHyphenation,\n fontSubstitution\n};\nconst engine = layoutEngine(engines);\nconst getMaxLines = node => {\n var _node$style;\n return (_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.maxLines;\n};\nconst getTextOverflow = node => {\n var _node$style2;\n return (_node$style2 = node.style) === null || _node$style2 === void 0 ? void 0 : _node$style2.textOverflow;\n};\n\n/**\n * Get layout container for specific text node\n *\n * @param {number} width\n * @param {number} height\n * @param {Object} node\n * @returns {Object} layout container\n */\nconst getContainer = (width, height, node) => {\n const maxLines = getMaxLines(node);\n const textOverflow = getTextOverflow(node);\n return {\n x: 0,\n y: 0,\n width,\n maxLines,\n height: height || Infinity,\n truncateMode: textOverflow\n };\n};\n\n/**\n * Get text layout options for specific text node\n *\n * @param {Object} node instance\n * @returns {Object} layout options\n */\nconst getLayoutOptions = (fontStore, node) => ({\n hyphenationPenalty: node.props.hyphenationPenalty,\n shrinkWhitespaceFactor: {\n before: -0.5,\n after: -0.5\n },\n hyphenationCallback: node.props.hyphenationCallback || (fontStore === null || fontStore === void 0 ? void 0 : fontStore.getHyphenationCallback()) || null\n});\n\n/**\n * Get text lines for given node\n *\n * @param {Object} node node\n * @param {number} width container width\n * @param {number} height container height\n * @param {number} fontStore font store\n * @returns {Object[]} layout lines\n */\nconst layoutText = (node, width, height, fontStore) => {\n const attributedString = getAttributedString(fontStore, node);\n const container = getContainer(width, height, node);\n const options = getLayoutOptions(fontStore, node);\n const lines = engine(attributedString, container, options);\n return lines.reduce((acc, line) => [...acc, ...line], []);\n};\n\nconst isType$2 = type => node => node.type === type;\nconst isSvg$2 = isType$2(P.Svg);\nconst isText$4 = isType$2(P.Text);\nconst shouldIterate = node => !isSvg$2(node) && !isText$4(node);\nconst shouldLayoutText = node => isText$4(node) && !node.lines;\n\n/**\n * Performs text layout on text node if wasn't calculated before.\n * Text layout is usually performed on Yoga's layout process (via setMeasureFunc),\n * but we need to layout those nodes with fixed width and height.\n *\n * @param {Object} node\n * @returns {Object} layout node\n */\nconst resolveTextLayout = (node, fontStore) => {\n if (shouldLayoutText(node)) {\n const width = node.box.width - (node.box.paddingRight + node.box.paddingLeft);\n const height = node.box.height - (node.box.paddingTop + node.box.paddingBottom);\n\n // eslint-disable-next-line no-param-reassign\n node.lines = layoutText(node, width, height, fontStore);\n }\n if (shouldIterate(node)) {\n if (!node.children) return node;\n const mapChild = child => resolveTextLayout(child, fontStore);\n const children = node.children.map(mapChild);\n return Object.assign({}, node, {\n children\n });\n }\n return node;\n};\n\nconst BASE_INHERITABLE_PROPERTIES = ['color', 'fontFamily', 'fontSize', 'fontStyle', 'fontWeight', 'letterSpacing', 'opacity', 'textDecoration', 'textTransform', 'lineHeight', 'textAlign', 'visibility', 'wordSpacing'];\nconst TEXT_INHERITABLE_PROPERTIES = [...BASE_INHERITABLE_PROPERTIES, 'backgroundColor'];\nconst isSvg$1 = node => node.type === P.Svg;\nconst isText$3 = node => node.type === P.Text;\n\n// Merge style values\nconst mergeValues = (styleName, value, inheritedValue) => {\n switch (styleName) {\n case 'textDecoration':\n {\n // merge not none and not false textDecoration values to one rule\n return [inheritedValue, value].filter(v => v && v !== 'none').join(' ');\n }\n default:\n return value;\n }\n};\n\n// Merge inherited and node styles\nconst merge = (inheritedStyles, style) => {\n const mergedStyles = {\n ...inheritedStyles\n };\n Object.entries(style).forEach(_ref => {\n let [styleName, value] = _ref;\n mergedStyles[styleName] = mergeValues(styleName, value, inheritedStyles[styleName]);\n });\n return mergedStyles;\n};\n\n/**\n * @typedef {Function} MergeStyles\n * @param {Object} node\n * @returns {Object} node with styles merged\n */\n\n/**\n * Merges styles with node\n *\n * @param {Object} inheritedStyles style object\n * @returns {MergeStyles} merge styles function\n */\nconst mergeStyles = inheritedStyles => node => {\n const style = merge(inheritedStyles, node.style || {});\n return Object.assign({}, node, {\n style\n });\n};\n\n/**\n * Inherit style values from the root to the leafs\n *\n * @param {Object} node document root\n * @returns {Object} document root with inheritance\n *\n */\nconst resolveInheritance = node => {\n if (isSvg$1(node)) return node;\n if (!node.children) return node;\n const inheritableProperties = isText$3(node) ? TEXT_INHERITABLE_PROPERTIES : BASE_INHERITABLE_PROPERTIES;\n const inheritStyles = pick(inheritableProperties, node.style || {});\n const resolveChild = compose(resolveInheritance, mergeStyles(inheritStyles));\n const children = node.children.map(resolveChild);\n return Object.assign({}, node, {\n children\n });\n};\n\nconst getComputedMargin = (node, edge) => {\n const {\n yogaNode\n } = node;\n return yogaNode ? yogaNode.getComputedMargin(edge) : null;\n};\n\n/**\n * Get Yoga computed magins. Zero otherwise\n *\n * @param {Object} node\n * @returns {{ marginTop: number, marginRight: number, marginBottom: number, marginLeft: number }} margins\n */\nconst getMargin = node => {\n const {\n style,\n box\n } = node;\n const marginTop = getComputedMargin(node, Yoga.Edge.Top) || (box === null || box === void 0 ? void 0 : box.marginTop) || (style === null || style === void 0 ? void 0 : style.marginTop) || (style === null || style === void 0 ? void 0 : style.marginVertical) || (style === null || style === void 0 ? void 0 : style.margin) || 0;\n const marginRight = getComputedMargin(node, Yoga.Edge.Right) || (box === null || box === void 0 ? void 0 : box.marginRight) || (style === null || style === void 0 ? void 0 : style.marginRight) || (style === null || style === void 0 ? void 0 : style.marginHorizontal) || (style === null || style === void 0 ? void 0 : style.margin) || 0;\n const marginBottom = getComputedMargin(node, Yoga.Edge.Bottom) || (box === null || box === void 0 ? void 0 : box.marginBottom) || (style === null || style === void 0 ? void 0 : style.marginBottom) || (style === null || style === void 0 ? void 0 : style.marginVertical) || (style === null || style === void 0 ? void 0 : style.margin) || 0;\n const marginLeft = getComputedMargin(node, Yoga.Edge.Left) || (box === null || box === void 0 ? void 0 : box.marginLeft) || (style === null || style === void 0 ? void 0 : style.marginLeft) || (style === null || style === void 0 ? void 0 : style.marginHorizontal) || (style === null || style === void 0 ? void 0 : style.margin) || 0;\n return {\n marginTop,\n marginRight,\n marginBottom,\n marginLeft\n };\n};\n\n/**\n * Get Yoga computed position. Zero otherwise\n *\n * @param {Object} node\n * @returns {{ top: number, right: number, bottom: number, left: number }} position\n */\nconst getPosition = node => {\n const {\n yogaNode\n } = node;\n return {\n top: (yogaNode === null || yogaNode === void 0 ? void 0 : yogaNode.getComputedTop()) || 0,\n right: (yogaNode === null || yogaNode === void 0 ? void 0 : yogaNode.getComputedRight()) || 0,\n bottom: (yogaNode === null || yogaNode === void 0 ? void 0 : yogaNode.getComputedBottom()) || 0,\n left: (yogaNode === null || yogaNode === void 0 ? void 0 : yogaNode.getComputedLeft()) || 0\n };\n};\n\nconst DEFAULT_DIMENSION = {\n width: 0,\n height: 0\n};\n\n/**\n * Get Yoga computed dimensions. Zero otherwise\n *\n * @param {Object} node\n * @returns {{ width: number, height: number }} dimensions\n */\nconst getDimension = node => {\n const {\n yogaNode\n } = node;\n if (!yogaNode) return DEFAULT_DIMENSION;\n return {\n width: yogaNode.getComputedWidth(),\n height: yogaNode.getComputedHeight()\n };\n};\n\nconst getComputedBorder = (yogaNode, edge) => yogaNode ? yogaNode.getComputedBorder(edge) : 0;\n\n/**\n * Get Yoga computed border width. Zero otherwise\n *\n * @param {Object} node\n * @returns {{ borderTopWidth: number, borderRightWidth: number, borderBottomWidth: number, borderLeftWidth: number }} border widths\n */\nconst getBorderWidth = node => {\n const {\n yogaNode\n } = node;\n return {\n borderTopWidth: getComputedBorder(yogaNode, Yoga.Edge.Top),\n borderRightWidth: getComputedBorder(yogaNode, Yoga.Edge.Right),\n borderBottomWidth: getComputedBorder(yogaNode, Yoga.Edge.Bottom),\n borderLeftWidth: getComputedBorder(yogaNode, Yoga.Edge.Left)\n };\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set display attribute to node's Yoga instance\n *\n * @param {string} value display\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setDisplay = value => node => {\n const {\n yogaNode\n } = node;\n if (yogaNode) {\n yogaNode.setDisplay(value === 'none' ? Yoga.Display.None : Yoga.Display.Flex);\n }\n return node;\n};\n\nconst OVERFLOW = {\n hidden: Yoga.Overflow.Hidden,\n scroll: Yoga.Overflow.Scroll\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set overflow attribute to node's Yoga instance\n *\n * @param {string} value overflow value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setOverflow = value => node => {\n const {\n yogaNode\n } = node;\n if (!isNil(value) && yogaNode) {\n const overflow = OVERFLOW[value] || Yoga.Overflow.Visible;\n yogaNode.setOverflow(overflow);\n }\n return node;\n};\n\nconst FLEX_WRAP = {\n wrap: Yoga.Wrap.Wrap,\n 'wrap-reverse': Yoga.Wrap.WrapReverse\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set flex wrap attribute to node's Yoga instance\n *\n * @param {string} value flex wrap value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setFlexWrap = value => node => {\n const {\n yogaNode\n } = node;\n if (yogaNode) {\n const flexWrap = FLEX_WRAP[value] || Yoga.Wrap.NoWrap;\n yogaNode.setFlexWrap(flexWrap);\n }\n return node;\n};\n\n/* eslint-disable no-unused-expressions */\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * @typedef {Function} YogaValueSetter\n * @param {any} value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\n\n/**\n * Set generic yoga attribute to node's Yoga instance, handing `auto`, edges and percentage cases\n *\n * @param {string} attr property\n * @param {number} [edge] edge\n * @returns {YogaValueSetter} node instance wrapper\n */\nconst setYogaValue = (attr, edge) => value => node => {\n const {\n yogaNode\n } = node;\n if (!isNil(value) && yogaNode) {\n const hasEdge = !isNil(edge);\n const fixedMethod = \"set\" + upperFirst(attr);\n const autoMethod = fixedMethod + \"Auto\";\n const percentMethod = fixedMethod + \"Percent\";\n const percent = matchPercent(value);\n if (percent && !yogaNode[percentMethod]) {\n throw new Error(\"You can't pass percentage values to \" + attr + \" property\");\n }\n if (percent) {\n if (hasEdge) {\n var _yogaNode$percentMeth;\n (_yogaNode$percentMeth = yogaNode[percentMethod]) === null || _yogaNode$percentMeth === void 0 ? void 0 : _yogaNode$percentMeth.call(yogaNode, edge, percent.value);\n } else {\n var _yogaNode$percentMeth2;\n (_yogaNode$percentMeth2 = yogaNode[percentMethod]) === null || _yogaNode$percentMeth2 === void 0 ? void 0 : _yogaNode$percentMeth2.call(yogaNode, percent.value);\n }\n } else if (value === 'auto') {\n if (hasEdge) {\n var _yogaNode$autoMethod;\n (_yogaNode$autoMethod = yogaNode[autoMethod]) === null || _yogaNode$autoMethod === void 0 ? void 0 : _yogaNode$autoMethod.call(yogaNode, edge);\n } else {\n var _yogaNode$autoMethod2;\n (_yogaNode$autoMethod2 = yogaNode[autoMethod]) === null || _yogaNode$autoMethod2 === void 0 ? void 0 : _yogaNode$autoMethod2.call(yogaNode);\n }\n } else if (hasEdge) {\n var _yogaNode$fixedMethod;\n (_yogaNode$fixedMethod = yogaNode[fixedMethod]) === null || _yogaNode$fixedMethod === void 0 ? void 0 : _yogaNode$fixedMethod.call(yogaNode, edge, value);\n } else {\n var _yogaNode$fixedMethod2;\n (_yogaNode$fixedMethod2 = yogaNode[fixedMethod]) === null || _yogaNode$fixedMethod2 === void 0 ? void 0 : _yogaNode$fixedMethod2.call(yogaNode, value);\n }\n }\n return node;\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set flex grow attribute to node's Yoga instance\n *\n * @param {number} value flex grow value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setFlexGrow = value => node => {\n return setYogaValue('flexGrow')(value || 0)(node);\n};\n\n/**\n * Set flex basis attribute to node's Yoga instance\n *\n * @param {number} flex basis value\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setFlexBasis = setYogaValue('flexBasis');\n\nconst ALIGN = {\n 'flex-start': Yoga.Align.FlexStart,\n center: Yoga.Align.Center,\n 'flex-end': Yoga.Align.FlexEnd,\n stretch: Yoga.Align.Stretch,\n baseline: Yoga.Align.Baseline,\n 'space-between': Yoga.Align.SpaceBetween,\n 'space-around': Yoga.Align.SpaceAround\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * @typedef {Function} AlignSetter\n * @param {string} value align value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\n\n/**\n * Set generic align attribute to node's Yoga instance\n *\n * @param {string} attr specific align property\n * @returns {AlignSetter} align setter\n */\nconst setAlign = attr => value => node => {\n const {\n yogaNode\n } = node;\n const defaultValue = attr === 'items' ? Yoga.Align.Stretch : Yoga.Align.Auto;\n if (yogaNode) {\n const align = ALIGN[value] || defaultValue;\n yogaNode[\"setAlign\" + upperFirst(attr)](align);\n }\n return node;\n};\n\n/**\n * Set align self attribute to node's Yoga instance\n *\n * @param {string} align value\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setAlignSelf = setAlign('self');\n\n/**\n * Set align items attribute to node's Yoga instance\n *\n * @param {string} align value\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setAlignItems = setAlign('items');\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set flex shrink attribute to node's Yoga instance\n *\n * @param {number} value flex shrink value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setFlexShrink = value => node => {\n return setYogaValue('flexShrink')(value || 1)(node);\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set aspect ratio attribute to node's Yoga instance\n *\n * @param {number} value ratio\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setAspectRatio = value => node => {\n const {\n yogaNode\n } = node;\n if (!isNil(value) && yogaNode) {\n yogaNode.setAspectRatio(value);\n }\n return node;\n};\n\n/**\n * Set align content attribute to node's Yoga instance\n *\n * @param {string} align value\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setAlignContent = setAlign('content');\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set position type attribute to node's Yoga instance\n *\n * @param {string} value position position type\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setPositionType = value => node => {\n const {\n yogaNode\n } = node;\n if (!isNil(value) && yogaNode) {\n yogaNode.setPositionType(value === 'absolute' ? Yoga.PositionType.Absolute : Yoga.PositionType.Relative);\n }\n return node;\n};\n\nconst FLEX_DIRECTIONS = {\n row: Yoga.FlexDirection.Row,\n 'row-reverse': Yoga.FlexDirection.RowReverse,\n 'column-reverse': Yoga.FlexDirection.ColumnReverse\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set flex direction attribute to node's Yoga instance\n *\n * @param {string} value flex direction value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setFlexDirection = value => node => {\n const {\n yogaNode\n } = node;\n if (yogaNode) {\n const flexDirection = FLEX_DIRECTIONS[value] || Yoga.FlexDirection.Column;\n yogaNode.setFlexDirection(flexDirection);\n }\n return node;\n};\n\nconst JUSTIFY_CONTENT = {\n center: Yoga.Justify.Center,\n 'flex-end': Yoga.Justify.FlexEnd,\n 'space-between': Yoga.Justify.SpaceBetween,\n 'space-around': Yoga.Justify.SpaceAround,\n 'space-evenly': Yoga.Justify.SpaceEvenly\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set justify content attribute to node's Yoga instance\n *\n * @param {string} value justify content value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setJustifyContent = value => node => {\n const {\n yogaNode\n } = node;\n if (!isNil(value) && yogaNode) {\n const justifyContent = JUSTIFY_CONTENT[value] || Yoga.Justify.FlexStart;\n yogaNode.setJustifyContent(justifyContent);\n }\n return node;\n};\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set margin top attribute to node's Yoga instance\n *\n * @param {number} margin margin top\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setMarginTop = setYogaValue('margin', Yoga.Edge.Top);\n\n/**\n * Set margin right attribute to node's Yoga instance\n *\n * @param {number} margin margin right\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setMarginRight = setYogaValue('margin', Yoga.Edge.Right);\n\n/**\n * Set margin bottom attribute to node's Yoga instance\n *\n * @param {number} margin margin bottom\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setMarginBottom = setYogaValue('margin', Yoga.Edge.Bottom);\n\n/**\n * Set margin left attribute to node's Yoga instance\n *\n * @param {number} margin margin left\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setMarginLeft = setYogaValue('margin', Yoga.Edge.Left);\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set padding top attribute to node's Yoga instance\n *\n * @param {number} padding padding top\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPaddingTop = setYogaValue('padding', Yoga.Edge.Top);\n\n/**\n * Set padding right attribute to node's Yoga instance\n *\n * @param {number} padding padding right\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPaddingRight = setYogaValue('padding', Yoga.Edge.Right);\n\n/**\n * Set padding bottom attribute to node's Yoga instance\n *\n * @param {number} padding padding bottom\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPaddingBottom = setYogaValue('padding', Yoga.Edge.Bottom);\n\n/**\n * Set padding left attribute to node's Yoga instance\n *\n * @param {number} padding padding left\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPaddingLeft = setYogaValue('padding', Yoga.Edge.Left);\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set border top attribute to node's Yoga instance\n *\n * @param {number} border border top width\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setBorderTop = setYogaValue('border', Yoga.Edge.Top);\n\n/**\n * Set border right attribute to node's Yoga instance\n *\n * @param {number} border border right width\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setBorderRight = setYogaValue('border', Yoga.Edge.Right);\n\n/**\n * Set border bottom attribute to node's Yoga instance\n *\n * @param {number} border border bottom width\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setBorderBottom = setYogaValue('border', Yoga.Edge.Bottom);\n\n/**\n * Set border left attribute to node's Yoga instance\n *\n * @param {number} border border left width\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setBorderLeft = setYogaValue('border', Yoga.Edge.Left);\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Set position top attribute to node's Yoga instance\n *\n * @param {number} position position top\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPositionTop = setYogaValue('position', Yoga.Edge.Top);\n\n/**\n * Set position right attribute to node's Yoga instance\n *\n * @param {number} position position right\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPositionRight = setYogaValue('position', Yoga.Edge.Right);\n\n/**\n * Set position bottom attribute to node's Yoga instance\n *\n * @param {number} position position bottom\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPositionBottom = setYogaValue('position', Yoga.Edge.Bottom);\n\n/**\n * Set position left attribute to node's Yoga instance\n *\n * @param {number} position position left\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\nconst setPositionLeft = setYogaValue('position', Yoga.Edge.Left);\n\n/**\n * Set width to node's Yoga instance\n *\n * @param {number} width\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setWidth = setYogaValue('width');\n\n/**\n * Set min width to node's Yoga instance\n *\n * @param {number} min width\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setMinWidth = setYogaValue('minWidth');\n\n/**\n * Set max width to node's Yoga instance\n *\n * @param {number} max width\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setMaxWidth = setYogaValue('maxWidth');\n\n/**\n * Set height to node's Yoga instance\n *\n * @param {number} height\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setHeight = setYogaValue('height');\n\n/**\n * Set min height to node's Yoga instance\n *\n * @param {number} min height\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setMinHeight = setYogaValue('minHeight');\n\n/**\n * Set max height to node's Yoga instance\n *\n * @param {number} max height\n * @param {Object} node instance\n * @returns {Object} node instance\n */\nconst setMaxHeight = setYogaValue('maxHeight');\n\n/**\n * @typedef {Function} NodeInstanceWrapper\n * @param {Object} node node instance\n * @returns {Object} node instance\n */\n\n/**\n * Check if value is a percentage and throw error if so\n *\n * @param {string} attr property\n * @param {unknown} value\n * @returns {void}\n */\nconst checkPercents = (attr, value) => {\n const percent = matchPercent(value);\n if (percent) {\n throw new Error(\"You can't pass percentage values to \" + attr + \" property\");\n }\n};\n\n/**\n * Set rowGap value to node's Yoga instance\n *\n * @param {number} value gap value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setRowGap = value => node => {\n const {\n yogaNode\n } = node;\n if (!isNil(value) && yogaNode) {\n checkPercents('rowGap', value);\n yogaNode.setGap(Yoga.Gutter.Row, value);\n }\n return node;\n};\n\n/**\n * Set columnGap value to node's Yoga instance\n *\n * @param {number} value gap value\n * @returns {NodeInstanceWrapper} node instance wrapper\n */\nconst setColumnGap = value => node => {\n const {\n yogaNode\n } = node;\n if (!isNil(value) && yogaNode) {\n checkPercents('columnGap', value);\n yogaNode.setGap(Yoga.Gutter.Column, value);\n }\n return node;\n};\n\nconst getAspectRatio = viewbox => {\n if (!viewbox) return null;\n return (viewbox.maxX - viewbox.minX) / (viewbox.maxY - viewbox.minY);\n};\n\n/**\n * @typedef {Function} MeasureSvg\n * @param {number} width\n * @param {number} widthMode\n * @param {number} height\n * @param {number} heightMode\n * @returns {{ width: number, height: number }} svg width and height\n */\n\n/**\n * Yoga svg measure function\n *\n * @param {Object} page\n * @param {Object} node\n * @returns {MeasureSvg} measure svg\n */\nconst measureCanvas$1 = (page, node) => (width, widthMode, height, heightMode) => {\n const aspectRatio = getAspectRatio(node.props.viewBox) || 1;\n if (widthMode === Yoga.MeasureMode.Exactly || widthMode === Yoga.MeasureMode.AtMost) {\n return {\n width,\n height: width / aspectRatio\n };\n }\n if (heightMode === Yoga.MeasureMode.Exactly) {\n return {\n width: height * aspectRatio\n };\n }\n return {};\n};\n\n/**\n * Get lines width (if any)\n *\n * @param {Object} node\n * @returns {number} lines width\n */\nconst linesWidth = node => {\n if (!node.lines) return 0;\n return Math.max(0, ...node.lines.map(line => line.xAdvance));\n};\n\n/**\n * Get lines height (if any)\n *\n * @param {Object} node\n * @returns {number} lines height\n */\nconst linesHeight = node => {\n if (!node.lines) return -1;\n return node.lines.reduce((acc, line) => acc + line.box.height, 0);\n};\n\n/* eslint-disable no-param-reassign */\n\nconst ALIGNMENT_FACTORS = {\n center: 0.5,\n right: 1\n};\n\n/**\n * @typedef {Function} MeasureText\n * @param {number} width\n * @param {number} widthMode\n * @param {number} height\n * @returns {{ width: number, height: number }} text width and height\n */\n\n/**\n * Yoga text measure function\n *\n * @param {Object} page\n * @param {Object} node\n * @param {Object} fontStore\n * @returns {MeasureText} measure text function\n */\nconst measureText = (page, node, fontStore) => (width, widthMode, height) => {\n if (widthMode === Yoga.MeasureMode.Exactly) {\n if (!node.lines) node.lines = layoutText(node, width, height, fontStore);\n return {\n height: linesHeight(node)\n };\n }\n if (widthMode === Yoga.MeasureMode.AtMost) {\n var _node$style;\n const alignFactor = ALIGNMENT_FACTORS[(_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.textAlign] || 0;\n if (!node.lines) {\n node.lines = layoutText(node, width, height, fontStore);\n node.alignOffset = (width - linesWidth(node)) * alignFactor; // Compensate align in variable width containers\n }\n return {\n height: linesHeight(node),\n width: Math.min(width, linesWidth(node))\n };\n }\n return {};\n};\n\n/**\n * Get image ratio\n *\n * @param {Object} node image node\n * @returns {number} image ratio\n */\nconst getRatio = node => {\n var _node$image;\n return (_node$image = node.image) !== null && _node$image !== void 0 && _node$image.data ? node.image.width / node.image.height : 1;\n};\n\n/**\n * Checks if page has auto height\n *\n * @param {Object} page\n * @returns {boolean} is page height auto\n */\nconst isHeightAuto = page => {\n var _page$box;\n return isNil((_page$box = page.box) === null || _page$box === void 0 ? void 0 : _page$box.height);\n};\n\nconst SAFETY_HEIGHT$1 = 10;\n\n/**\n * @typedef {Function} MeasureImage\n * @param {number} width\n * @param {number} widthMode\n * @param {number} height\n * @param {number} heightMode\n * @returns {{ width: number, height: number }} image width and height\n */\n\n/**\n * Yoga image measure function\n *\n * @param {Object} page page\n * @param {Object} node node\n * @returns {MeasureImage} measure image\n */\nconst measureImage = (page, node) => (width, widthMode, height, heightMode) => {\n const imageRatio = getRatio(node);\n const imageMargin = getMargin(node);\n const pagePadding = getPadding(page);\n const pageArea = isHeightAuto(page) ? Infinity : page.box.height - pagePadding.paddingTop - pagePadding.paddingBottom - imageMargin.marginTop - imageMargin.marginBottom - SAFETY_HEIGHT$1;\n\n // Skip measure if image data not present yet\n if (!node.image) return {\n width: 0,\n height: 0\n };\n if (widthMode === Yoga.MeasureMode.Exactly && heightMode === Yoga.MeasureMode.Undefined) {\n const scaledHeight = width / imageRatio;\n return {\n height: Math.min(pageArea, scaledHeight)\n };\n }\n if (heightMode === Yoga.MeasureMode.Exactly && (widthMode === Yoga.MeasureMode.AtMost || widthMode === Yoga.MeasureMode.Undefined)) {\n return {\n width: Math.min(height * imageRatio, width)\n };\n }\n if (widthMode === Yoga.MeasureMode.Exactly && heightMode === Yoga.MeasureMode.AtMost) {\n const scaledHeight = width / imageRatio;\n return {\n height: Math.min(height, pageArea, scaledHeight)\n };\n }\n if (widthMode === Yoga.MeasureMode.AtMost && heightMode === Yoga.MeasureMode.AtMost) {\n if (imageRatio > 1) {\n return {\n width,\n height: Math.min(width / imageRatio, height)\n };\n }\n return {\n height,\n width: Math.min(height * imageRatio, width)\n };\n }\n return {\n height,\n width\n };\n};\n\n/* eslint-disable no-param-reassign */\n\nconst SAFETY_HEIGHT = 10;\nconst getMax = values => Math.max(-Infinity, ...values);\n\n/**\n * Helper object to predict canvas size\n * TODO: Implement remaining functions (as close as possible);\n */\nconst measureCtx = () => {\n const ctx = {};\n const points = [];\n const nil = () => ctx;\n const addPoint = (x, y) => points.push([x, y]);\n const moveTo = function () {\n addPoint(...arguments);\n return ctx;\n };\n const rect = (x, y, w, h) => {\n addPoint(x, y);\n addPoint(x + w, y);\n addPoint(x, y + h);\n addPoint(x + w, y + h);\n return ctx;\n };\n const ellipse = (x, y, rx, ry) => {\n ry = ry || rx;\n addPoint(x - rx, y - ry);\n addPoint(x + rx, y - ry);\n addPoint(x + rx, y + ry);\n addPoint(x - rx, y + ry);\n return ctx;\n };\n const polygon = function () {\n points.push(...arguments);\n return ctx;\n };\n\n // Change dimensions\n ctx.rect = rect;\n ctx.moveTo = moveTo;\n ctx.lineTo = moveTo;\n ctx.circle = ellipse;\n ctx.polygon = polygon;\n ctx.ellipse = ellipse;\n ctx.roundedRect = rect;\n\n // To be implemented\n ctx.text = nil;\n ctx.path = nil;\n ctx.lineWidth = nil;\n ctx.bezierCurveTo = nil;\n ctx.quadraticCurveTo = nil;\n ctx.scale = nil;\n ctx.rotate = nil;\n ctx.translate = nil;\n\n // These don't change dimensions\n ctx.dash = nil;\n ctx.clip = nil;\n ctx.save = nil;\n ctx.fill = nil;\n ctx.font = nil;\n ctx.stroke = nil;\n ctx.lineCap = nil;\n ctx.opacity = nil;\n ctx.restore = nil;\n ctx.lineJoin = nil;\n ctx.fontSize = nil;\n ctx.fillColor = nil;\n ctx.miterLimit = nil;\n ctx.strokeColor = nil;\n ctx.fillOpacity = nil;\n ctx.strokeOpacity = nil;\n ctx.linearGradient = nil;\n ctx.radialGradient = nil;\n ctx.getWidth = () => getMax(points.map(p => p[0]));\n ctx.getHeight = () => getMax(points.map(p => p[1]));\n return ctx;\n};\n\n/**\n * @typedef {Function} MeasureCanvas\n * @returns {{ width: number, height: number }} canvas width and height\n */\n\n/**\n * Yoga canvas measure function\n *\n * @param {Object} page\n * @param {Object} node\n * @returns {MeasureCanvas} measure canvas\n */\nconst measureCanvas = (page, node) => () => {\n const imageMargin = getMargin(node);\n const pagePadding = getPadding(page);\n const pageArea = isHeightAuto(page) ? Infinity : page.box.height - pagePadding.paddingTop - pagePadding.paddingBottom - imageMargin.marginTop - imageMargin.marginBottom - SAFETY_HEIGHT;\n const ctx = measureCtx();\n node.props.paint(ctx);\n const width = ctx.getWidth();\n const height = Math.min(pageArea, ctx.getHeight());\n return {\n width,\n height\n };\n};\n\nconst isType$1 = type => node => node.type === type;\nconst isSvg = isType$1(P.Svg);\nconst isText$2 = isType$1(P.Text);\nconst isNote = isType$1(P.Note);\nconst isPage = isType$1(P.Page);\nconst isImage = isType$1(P.Image);\nconst isCanvas = isType$1(P.Canvas);\nconst isTextInstance$1 = isType$1(P.TextInstance);\nconst setNodeHeight = node => {\n const value = isPage(node) ? node.box.height : node.style.height;\n return setHeight(value);\n};\n\n/**\n * Set styles valeus into yoga node before layout calculation\n *\n * @param {Object} node\n * @returns {Object} node\n */\nconst setYogaValues = node => {\n compose(setNodeHeight(node), setWidth(node.style.width), setMinWidth(node.style.minWidth), setMaxWidth(node.style.maxWidth), setMinHeight(node.style.minHeight), setMaxHeight(node.style.maxHeight), setMarginTop(node.style.marginTop), setMarginRight(node.style.marginRight), setMarginBottom(node.style.marginBottom), setMarginLeft(node.style.marginLeft), setPaddingTop(node.style.paddingTop), setPaddingRight(node.style.paddingRight), setPaddingBottom(node.style.paddingBottom), setPaddingLeft(node.style.paddingLeft), setPositionType(node.style.position), setPositionTop(node.style.top), setPositionRight(node.style.right), setPositionBottom(node.style.bottom), setPositionLeft(node.style.left), setBorderTop(node.style.borderTopWidth), setBorderRight(node.style.borderRightWidth), setBorderBottom(node.style.borderBottomWidth), setBorderLeft(node.style.borderLeftWidth), setDisplay(node.style.display), setFlexDirection(node.style.flexDirection), setAlignSelf(node.style.alignSelf), setAlignContent(node.style.alignContent), setAlignItems(node.style.alignItems), setJustifyContent(node.style.justifyContent), setFlexWrap(node.style.flexWrap), setOverflow(node.style.overflow), setAspectRatio(node.style.aspectRatio), setFlexBasis(node.style.flexBasis), setFlexGrow(node.style.flexGrow), setFlexShrink(node.style.flexShrink), setRowGap(node.style.rowGap), setColumnGap(node.style.columnGap))(node);\n};\n\n/**\n * @typedef {Function} InsertYogaNodes\n * @param {Object} child child node\n * @returns {Object} node\n */\n\n/**\n * Inserts child into parent' yoga node\n *\n * @param {Object} parent parent\n * @returns {InsertYogaNodes} insert yoga nodes\n */\nconst insertYogaNodes = parent => child => {\n parent.insertChild(child.yogaNode, parent.getChildCount());\n return child;\n};\nconst setMeasureFunc = (node, page, fontStore) => {\n const {\n yogaNode\n } = node;\n if (isText$2(node)) {\n yogaNode.setMeasureFunc(measureText(page, node, fontStore));\n }\n if (isImage(node)) {\n yogaNode.setMeasureFunc(measureImage(page, node));\n }\n if (isCanvas(node)) {\n yogaNode.setMeasureFunc(measureCanvas(page, node));\n }\n if (isSvg(node)) {\n yogaNode.setMeasureFunc(measureCanvas$1(page, node));\n }\n return node;\n};\nconst isLayoutElement = node => !isText$2(node) && !isNote(node) && !isSvg(node);\n\n/**\n * @typedef {Function} CreateYogaNodes\n * @param {Object} node\n * @returns {Object} node with appended yoga node\n */\n\n/**\n * Creates and add yoga node to document tree\n * Handles measure function for text and image nodes\n *\n * @returns {CreateYogaNodes} create yoga nodes\n */\nconst createYogaNodes = (page, fontStore, yoga) => node => {\n const yogaNode = yoga.node.create();\n const result = Object.assign({}, node, {\n yogaNode\n });\n setYogaValues(result);\n if (isLayoutElement(node) && node.children) {\n const resolveChild = compose(insertYogaNodes(yogaNode), createYogaNodes(page, fontStore, yoga));\n result.children = node.children.map(resolveChild);\n }\n setMeasureFunc(result, page, fontStore);\n return result;\n};\n\n/**\n * Performs yoga calculation\n *\n * @param {Object} page page node\n * @returns {Object} page node\n */\nconst calculateLayout = page => {\n page.yogaNode.calculateLayout();\n return page;\n};\n\n/**\n * Saves Yoga layout result into 'box' attribute of node\n *\n * @param {Object} node\n * @returns {Object} node with box data\n */\nconst persistDimensions = node => {\n if (isTextInstance$1(node)) return node;\n const box = Object.assign(getPadding(node), getMargin(node), getBorderWidth(node), getPosition(node), getDimension(node));\n const newNode = Object.assign({}, node, {\n box\n });\n if (!node.children) return newNode;\n const children = node.children.map(persistDimensions);\n return Object.assign({}, newNode, {\n children\n });\n};\n\n/**\n * Removes yoga node from document tree\n *\n * @param {Object} node\n * @returns {Object} node without yoga node\n */\nconst destroyYogaNodes = node => {\n const newNode = Object.assign({}, node);\n delete newNode.yogaNode;\n if (!node.children) return newNode;\n const children = node.children.map(destroyYogaNodes);\n return Object.assign({}, newNode, {\n children\n });\n};\n\n/**\n * Free yoga node from document tree\n *\n * @param {Object} node\n * @returns {Object} node without yoga node\n */\nconst freeYogaNodes = node => {\n if (node.yogaNode) node.yogaNode.freeRecursive();\n return node;\n};\n\n/**\n * Calculates page object layout using Yoga.\n * Takes node values from 'box' and 'style' attributes, and persist them back into 'box'\n * Destroy yoga values at the end.\n *\n * @param {Object} page object\n * @returns {Object} page object with correct 'box' layout attributes\n */\nconst resolvePageDimensions = (page, fontStore, yoga) => {\n if (isNil(page)) return null;\n return compose(destroyYogaNodes, freeYogaNodes, persistDimensions, calculateLayout, createYogaNodes(page, fontStore, yoga))(page);\n};\n\n/**\n * Calculates root object layout using Yoga.\n *\n * @param {Object} node root object\n * @param {Object} fontStore font store\n * @returns {Object} root object with correct 'box' layout attributes\n */\nconst resolveDimensions = (node, fontStore) => {\n if (!node.children) return node;\n const resolveChild = child => resolvePageDimensions(child, fontStore, node.yoga);\n const children = node.children.map(resolveChild);\n return Object.assign({}, node, {\n children\n });\n};\n\n/* eslint-disable no-use-before-define */\n/* eslint-disable no-continue */\n/* eslint-disable prefer-destructuring */\n\nconst isText$1 = node => node.type === P.Text;\n\n// Prevent splitting elements by low decimal numbers\nconst SAFETY_THRESHOLD = 0.001;\nconst assingChildren = (children, node) => Object.assign({}, node, {\n children\n});\nconst getTop = node => {\n var _node$box;\n return ((_node$box = node.box) === null || _node$box === void 0 ? void 0 : _node$box.top) || 0;\n};\nconst allFixed = nodes => nodes.every(isFixed);\nconst isDynamic = node => {\n var _node$props;\n return !isNil((_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.render);\n};\nconst relayoutPage = compose(resolveTextLayout, resolvePageDimensions, resolveInheritance, resolvePageStyles);\nconst warnUnavailableSpace = node => {\n console.warn(\"Node of type \" + node.type + \" can't wrap between pages and it's bigger than available page height\");\n};\nconst splitNodes = (height, contentArea, nodes) => {\n const currentChildren = [];\n const nextChildren = [];\n for (let i = 0; i < nodes.length; i += 1) {\n const child = nodes[i];\n const futureNodes = nodes.slice(i + 1);\n const futureFixedNodes = futureNodes.filter(isFixed);\n const nodeTop = getTop(child);\n const nodeHeight = child.box.height;\n const isOutside = height <= nodeTop;\n const shouldBreak$1 = shouldBreak(child, futureNodes, height);\n const shouldSplit = height + SAFETY_THRESHOLD < nodeTop + nodeHeight;\n const canWrap = getWrap(child);\n const fitsInsidePage = nodeHeight <= contentArea;\n if (isFixed(child)) {\n nextChildren.push(child);\n currentChildren.push(child);\n continue;\n }\n if (isOutside) {\n const box = Object.assign({}, child.box, {\n top: child.box.top - height\n });\n const next = Object.assign({}, child, {\n box\n });\n nextChildren.push(next);\n continue;\n }\n if (!fitsInsidePage && !canWrap) {\n currentChildren.push(child);\n nextChildren.push(...futureNodes);\n warnUnavailableSpace(child);\n break;\n }\n if (shouldBreak$1) {\n const box = Object.assign({}, child.box, {\n top: child.box.top - height\n });\n const props = Object.assign({}, child.props, {\n wrap: true,\n break: false\n });\n const next = Object.assign({}, child, {\n box,\n props\n });\n currentChildren.push(...futureFixedNodes);\n nextChildren.push(next, ...futureNodes);\n break;\n }\n if (shouldSplit) {\n const [currentChild, nextChild] = split(child, height, contentArea);\n\n // All children are moved to the next page, it doesn't make sense to show the parent on the current page\n if (child.children.length > 0 && currentChild.children.length === 0) {\n // But if the current page is empty then we can just include the parent on the current page\n if (currentChildren.length === 0) {\n currentChildren.push(child, ...futureFixedNodes);\n nextChildren.push(...futureNodes);\n } else {\n const box = Object.assign({}, child.box, {\n top: child.box.top - height\n });\n const next = Object.assign({}, child, {\n box\n });\n currentChildren.push(...futureFixedNodes);\n nextChildren.push(next, ...futureNodes);\n }\n break;\n }\n if (currentChild) currentChildren.push(currentChild);\n if (nextChild) nextChildren.push(nextChild);\n continue;\n }\n currentChildren.push(child);\n }\n return [currentChildren, nextChildren];\n};\nconst splitChildren = (height, contentArea, node) => {\n const children = node.children || [];\n const availableHeight = height - getTop(node);\n return splitNodes(availableHeight, contentArea, children);\n};\nconst splitView = (node, height, contentArea) => {\n const [currentNode, nextNode] = splitNode(node, height);\n const [currentChilds, nextChildren] = splitChildren(height, contentArea, node);\n return [assingChildren(currentChilds, currentNode), assingChildren(nextChildren, nextNode)];\n};\nconst split = (node, height, contentArea) => isText$1(node) ? splitText(node, height) : splitView(node, height, contentArea);\nconst shouldResolveDynamicNodes = node => {\n const children = node.children || [];\n return isDynamic(node) || children.some(shouldResolveDynamicNodes);\n};\nconst resolveDynamicNodes = (props, node) => {\n const isNodeDynamic = isDynamic(node);\n\n // Call render prop on dynamic nodes and append result to children\n const resolveChildren = function (children) {\n if (children === void 0) {\n children = [];\n }\n if (isNodeDynamic) {\n const res = node.props.render(props);\n return createInstances(res).filter(Boolean).map(n => resolveDynamicNodes(props, n));\n }\n return children.map(c => resolveDynamicNodes(props, c));\n };\n\n // We reset dynamic text box so it can be computed again later on\n const resetHeight = isNodeDynamic && isText$1(node);\n const box = resetHeight ? {\n ...node.box,\n height: 0\n } : node.box;\n const children = resolveChildren(node.children);\n const lines = isNodeDynamic ? null : node.lines;\n return Object.assign({}, node, {\n box,\n lines,\n children\n });\n};\nconst resolveDynamicPage = (props, page, fontStore, yoga) => {\n if (shouldResolveDynamicNodes(page)) {\n const resolvedPage = resolveDynamicNodes(props, page);\n return relayoutPage(resolvedPage, fontStore, yoga);\n }\n return page;\n};\nconst splitPage = (page, pageNumber, fontStore, yoga) => {\n const wrapArea = getWrapArea(page);\n const contentArea = getContentArea(page);\n const dynamicPage = resolveDynamicPage({\n pageNumber\n }, page, fontStore, yoga);\n const height = page.style.height;\n const [currentChilds, nextChilds] = splitNodes(wrapArea, contentArea, dynamicPage.children);\n const relayout = node => relayoutPage(node, fontStore, yoga);\n const currentBox = {\n ...page.box,\n height\n };\n const currentPage = relayout(Object.assign({}, page, {\n box: currentBox,\n children: currentChilds\n }));\n if (nextChilds.length === 0 || allFixed(nextChilds)) return [currentPage, null];\n const nextBox = omit('height', page.box);\n const nextProps = omit('bookmark', page.props);\n const nextPage = relayout(Object.assign({}, page, {\n props: nextProps,\n box: nextBox,\n children: nextChilds\n }));\n return [currentPage, nextPage];\n};\nconst resolvePageIndices = (fontStore, yoga, page, pageNumber, pages) => {\n const totalPages = pages.length;\n const props = {\n totalPages,\n pageNumber: pageNumber + 1,\n subPageNumber: page.subPageNumber + 1,\n subPageTotalPages: page.subPageTotalPages\n };\n return resolveDynamicPage(props, page, fontStore, yoga);\n};\nconst assocSubPageData = subpages => {\n return subpages.map((page, i) => ({\n ...page,\n subPageNumber: i,\n subPageTotalPages: subpages.length\n }));\n};\nconst dissocSubPageData = page => {\n return omit(['subPageNumber', 'subPageTotalPages'], page);\n};\nconst paginate = (page, pageNumber, fontStore, yoga) => {\n var _page$props;\n if (!page) return [];\n if (((_page$props = page.props) === null || _page$props === void 0 ? void 0 : _page$props.wrap) === false) return [page];\n let splittedPage = splitPage(page, pageNumber, fontStore, yoga);\n const pages = [splittedPage[0]];\n let nextPage = splittedPage[1];\n while (nextPage !== null) {\n splittedPage = splitPage(nextPage, pageNumber + pages.length, fontStore, yoga);\n pages.push(splittedPage[0]);\n nextPage = splittedPage[1];\n }\n return pages;\n};\n\n/**\n * Performs pagination. This is the step responsible of breaking the whole document\n * into pages following pagiation rules, such as `fixed`, `break` and dynamic nodes.\n *\n * @param {Object} doc node\n * @param {Object} fontStore font store\n * @returns {Object} layout node\n */\nconst resolvePagination = (doc, fontStore) => {\n let pages = [];\n let pageNumber = 1;\n for (let i = 0; i < doc.children.length; i += 1) {\n const page = doc.children[i];\n let subpages = paginate(page, pageNumber, fontStore, doc.yoga);\n subpages = assocSubPageData(subpages);\n pageNumber += subpages.length;\n pages = pages.concat(subpages);\n }\n pages = pages.map(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return dissocSubPageData(resolvePageIndices(fontStore, doc.yoga, ...args));\n });\n return assingChildren(pages, doc);\n};\n\n/**\n * @typedef {Function} ResolvePageHorizontalPadding\n * @param {string} value padding value\n * @returns {Object} translated padding value\n */\n\n/**\n * Translates page percentage horizontal paddings in fixed ones\n *\n * @param {Object} container page container\n * @returns {ResolvePageHorizontalPadding} resolve page horizontal padding\n */\nconst resolvePageHorizontalPadding = container => value => {\n const match = matchPercent(value);\n return match ? match.percent * container.width : value;\n};\n\n/**\n * @typedef {Function} ResolvePageVerticalPadding\n * @param {string} padding value\n * @returns {Object} translated padding value\n */\n\n/**\n * Translates page percentage vertical paddings in fixed ones\n *\n * @param {Object} container page container\n * @returns {ResolvePageVerticalPadding} resolve page vertical padding\n */\nconst resolvePageVerticalPadding = container => value => {\n const match = matchPercent(value);\n return match ? match.percent * container.height : value;\n};\n\n/**\n * Translates page percentage paddings in fixed ones\n *\n * @param {Object} page\n * @returns {Object} page with fixed paddings\n */\nconst resolvePagePaddings = page => {\n const container = page.style;\n const style = evolve({\n paddingTop: resolvePageVerticalPadding(container),\n paddingLeft: resolvePageHorizontalPadding(container),\n paddingRight: resolvePageHorizontalPadding(container),\n paddingBottom: resolvePageVerticalPadding(container)\n }, page.style);\n return Object.assign({}, page, {\n style\n });\n};\n\n/**\n * Translates all pages percentage paddings in fixed ones\n * This has to be computed from pages calculated size and not by Yoga\n * because at this point we didn't performed pagination yet.\n *\n * @param {Object} root document root\n * @returns {Object} document root with translated page paddings\n */\nconst resolvePagesPaddings = root => {\n if (!root.children) return root;\n const children = root.children.map(resolvePagePaddings);\n return Object.assign({}, root, {\n children\n });\n};\n\n/**\n * @typedef {Function} ResolveRadius\n * @param {string | number} value border radius value\n * @returns {number} resolved radius value\n */\n\n/**\n *\n * @param {{ width: number, height: number }} container width and height\n * @returns {ResolveRadius} resolve radius function\n */\nconst resolveRadius = container => value => {\n if (!value) return undefined;\n const match = matchPercent(value);\n return match ? match.percent * Math.min(container.width, container.height) : value;\n};\n\n/**\n * Transforms percent border radius into fixed values\n *\n * @param {Object} node\n * @returns {Object} node\n */\nconst resolvePercentRadius = node => {\n const style = evolve({\n borderTopLeftRadius: resolveRadius(node.box),\n borderTopRightRadius: resolveRadius(node.box),\n borderBottomRightRadius: resolveRadius(node.box),\n borderBottomLeftRadius: resolveRadius(node.box)\n }, node.style || {});\n const newNode = Object.assign({}, node, {\n style\n });\n if (!node.children) return newNode;\n const children = node.children.map(resolvePercentRadius);\n return Object.assign({}, newNode, {\n children\n });\n};\n\n/**\n * Transform percent height into fixed\n *\n * @param {number} height\n * @returns {number} height\n */\nconst transformHeight = (pageArea, height) => {\n const match = matchPercent(height);\n return match ? match.percent * pageArea : height;\n};\n\n/**\n * Get page area (height minus paddings)\n *\n * @param {Object} page\n * @returns {number} page area\n */\nconst getPageArea = page => {\n var _page$style, _page$style2;\n const pageHeight = page.style.height;\n const pagePaddingTop = ((_page$style = page.style) === null || _page$style === void 0 ? void 0 : _page$style.paddingTop) || 0;\n const pagePaddingBottom = ((_page$style2 = page.style) === null || _page$style2 === void 0 ? void 0 : _page$style2.paddingBottom) || 0;\n return pageHeight - pagePaddingTop - pagePaddingBottom;\n};\n\n/**\n * Transform node percent height to fixed\n *\n * @param {Object} page\n * @param {Object} node\n * @returns {Object} transformed node\n */\nconst resolveNodePercentHeight = (page, node) => {\n var _page$style3, _node$style;\n if (isNil((_page$style3 = page.style) === null || _page$style3 === void 0 ? void 0 : _page$style3.height)) return node;\n if (isNil((_node$style = node.style) === null || _node$style === void 0 ? void 0 : _node$style.height)) return node;\n const pageArea = getPageArea(page);\n const height = transformHeight(pageArea, node.style.height);\n const style = Object.assign({}, node.style, {\n height\n });\n return Object.assign({}, node, {\n style\n });\n};\n\n/**\n * Transform page immediate children with percent height to fixed\n *\n * @param {Object} page\n * @returns {Object} transformed page\n */\nconst resolvePagePercentHeight = page => {\n if (!page.children) return page;\n const resolveChild = child => resolveNodePercentHeight(page, child);\n const children = page.children.map(resolveChild);\n return Object.assign({}, page, {\n children\n });\n};\n\n/**\n * Transform all page immediate children with percent height to fixed.\n * This is needed for computing correct dimensions on pre-pagination layout.\n *\n * @param {Object} root document root\n * @returns {Object} transformed document root\n */\nconst resolvePercentHeight = root => {\n if (!root.children) return root;\n const children = root.children.map(resolvePagePercentHeight);\n return Object.assign({}, root, {\n children\n });\n};\n\nconst isType = type => node => node.type === type;\nconst isLink = isType(P.Link);\nconst isText = isType(P.Text);\nconst isTextInstance = isType(P.TextInstance);\n\n/**\n * Checks if node has render prop\n *\n * @param {Object} node\n * @returns {boolean} has render prop?\n */\nconst hasRenderProp = node => {\n var _node$props;\n return !!((_node$props = node.props) !== null && _node$props !== void 0 && _node$props.render);\n};\n\n/**\n * Checks if node is text type (Text or TextInstance)\n *\n * @param {Object} node\n * @returns {boolean} are all children text instances?\n */\nconst isTextType = node => isText(node) || isTextInstance(node);\n\n/**\n * Checks if is tet link that needs to be wrapped in Text\n *\n * @param {Object} node\n * @returns {boolean} are all children text instances?\n */\nconst isTextLink = node => {\n const children = node.children || [];\n\n // Text string inside a Link\n if (children.every(isTextInstance)) return true;\n\n // Text node inside a Link\n if (children.every(isText)) return false;\n return children.every(isTextType);\n};\n\n/**\n * Wraps node children inside Text node\n *\n * @param {Object} node\n * @returns {boolean} node with intermediate Text child\n */\nconst wrapText = node => {\n const textElement = {\n type: P.Text,\n props: {},\n style: {},\n box: {},\n children: node.children\n };\n return Object.assign({}, node, {\n children: [textElement]\n });\n};\nconst transformLink = node => {\n if (!isLink(node)) return node;\n\n // If has render prop substitute the instance by a Text, that will\n // ultimately render the inline Link via the textkit PDF renderer.\n if (hasRenderProp(node)) return Object.assign({}, node, {\n type: P.Text\n });\n\n // If is a text link (either contains Text or TextInstalce), wrap it\n // inside a Text element so styles are applied correctly\n\n if (isTextLink(node)) return wrapText(node);\n return node;\n};\n\n/**\n * Transforms Link layout to correctly render text and dynamic rendered links\n *\n * @param {Object} node\n * @returns {Object} node with link substitution\n */\nconst resolveLinkSubstitution = node => {\n if (!node.children) return node;\n const resolveChild = compose(transformLink, resolveLinkSubstitution);\n const children = node.children.map(resolveChild);\n return Object.assign({}, node, {\n children\n });\n};\n\nconst layout = asyncCompose(resolveZIndex, resolveOrigin, resolveAssets, resolvePagination, resolveTextLayout, resolvePercentRadius, resolveDimensions, resolveSvg, resolveAssets, resolveInheritance, resolvePercentHeight, resolvePagesPaddings, resolveStyles, resolveLinkSubstitution, resolveBookmarks, resolvePageSizes, resolveYoga);\n\nexport { layout as default };\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","/** @license React v0.23.0\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nmodule.exports = function $$$reconciler($$$hostConfig) {\n'use strict';var aa=require(\"object-assign\"),ba=require(\"react\"),m=require(\"scheduler\");function n(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cCb||(a.current=Bb[Cb],Bb[Cb]=null,Cb--)}function z(a,b){Cb++;Bb[Cb]=a.current;a.current=b}\nvar Db={},A={current:Db},B={current:!1},Eb=Db;function Fb(a,b){var c=a.type.contextTypes;if(!c)return Db;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function C(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gb(a){y(B,a);y(A,a)}\nfunction Hb(a){y(B,a);y(A,a)}function Ib(a,b,c){if(A.current!==Db)throw Error(n(168));z(A,b,a);z(B,c,a)}function Jb(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(n(108,ta(b)||\"Unknown\",e));return aa({},c,{},d)}function Kb(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||Db;Eb=A.current;z(A,b,a);z(B,B.current,a);return!0}\nfunction Lb(a,b,c){var d=a.stateNode;if(!d)throw Error(n(169));c?(b=Jb(a,b,Eb),d.__reactInternalMemoizedMergedChildContext=b,y(B,a),y(A,a),z(A,b,a)):y(B,a);z(B,c,a)}\nvar Mb=m.unstable_runWithPriority,Nb=m.unstable_scheduleCallback,Ob=m.unstable_cancelCallback,Pb=m.unstable_shouldYield,Qb=m.unstable_requestPaint,Tb=m.unstable_now,Ub=m.unstable_getCurrentPriorityLevel,Vb=m.unstable_ImmediatePriority,Wb=m.unstable_UserBlockingPriority,Xb=m.unstable_NormalPriority,Yb=m.unstable_LowPriority,Zb=m.unstable_IdlePriority,$b={},ac=void 0!==Qb?Qb:function(){},bc=null,cc=null,dc=!1,ec=Tb(),E=1E4>ec?Tb:function(){return Tb()-ec};\nfunction fc(){switch(Ub()){case Vb:return 99;case Wb:return 98;case Xb:return 97;case Yb:return 96;case Zb:return 95;default:throw Error(n(332));}}function gc(a){switch(a){case 99:return Vb;case 98:return Wb;case 97:return Xb;case 96:return Yb;case 95:return Zb;default:throw Error(n(332));}}function hc(a,b){a=gc(a);return Mb(a,b)}function ic(a,b,c){a=gc(a);return Nb(a,b,c)}function jc(a){null===bc?(bc=[a],cc=Nb(Vb,kc)):bc.push(a);return $b}function F(){if(null!==cc){var a=cc;cc=null;Ob(a)}kc()}\nfunction kc(){if(!dc&&null!==bc){dc=!0;var a=0;try{var b=bc;hc(99,function(){for(;a=b&&(Bc=!0),a.firstContext=null)}function Cc(a,b){if(vc!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)vc=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===uc){if(null===tc)throw Error(n(308));uc=b;tc.dependencies={expirationTime:0,firstContext:b,responders:null}}else uc=uc.next=b}return Pa?a._currentValue:a._currentValue2}var Dc=!1;\nfunction Ec(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Fc(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction Gc(a,b){return{expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Hc(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction Ic(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=Ec(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=Ec(a.memoizedState),e=c.updateQueue=Ec(c.memoizedState)):d=a.updateQueue=Fc(e):null===e&&(e=c.updateQueue=Fc(d));null===e||d===e?Hc(d,b):null===d.lastUpdate||null===e.lastUpdate?(Hc(d,b),Hc(e,b)):(Hc(d,b),e.lastUpdate=b)}\nfunction Jc(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=Ec(a.memoizedState):Kc(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function Kc(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=Fc(b));return b}\nfunction Lc(a,b,c,d,e,f){switch(c.tag){case 1:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case 3:a.effectTag=a.effectTag&-4097|64;case 0:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return aa({},d,e);case 2:Dc=!0}return d}\nfunction Nc(a,b,c,d,e){Dc=!1;b=Kc(a,b);for(var f=b.baseState,g=null,l=0,h=b.firstUpdate,k=f;null!==h;){var p=h.expirationTime;pr?(p=t,t=null):p=t.sibling;var v=x(e,t,h[r],l);if(null===v){null===t&&(t=p);break}a&&\nt&&null===v.alternate&&b(e,t);g=f(v,g,r);null===w?k=v:w.sibling=v;w=v;t=p}if(r===h.length)return c(e,t),k;if(null===t){for(;rw?(p=r,r=null):p=r.sibling;var N=x(e,r,v.value,l);if(null===N){null===r&&(r=p);break}a&&r&&null===N.alternate&&b(e,r);g=f(N,g,w);null===t?k=N:t.sibling=N;t=N;r=p}if(v.done)return c(e,r),k;if(null===r){for(;!v.done;w++,v=h.next())v=D(e,v.value,l),null!==v&&(g=f(v,g,w),null===t?k=v:t.sibling=v,t=v);return k}for(r=d(e,r);!v.done;w++,v=h.next())v=K(r,e,w,v.value,l),null!==v&&(a&&null!==\nv.alternate&&r.delete(null===v.key?w:v.key),g=f(v,g,w),null===t?k=v:t.sibling=v,t=v);a&&r.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ea&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case ca:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===ea:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===ea?f.props.children:f.props,h);d.ref=cd(a,k,f);d.return=a;a=d;break a}else{c(a,\nk);break}else b(a,k);k=k.sibling}f.type===ea?(d=jd(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=hd(f.type,f.key,f.props,null,a.mode,h),h.ref=cd(a,d,f),h.return=a,a=h)}return g(a);case da:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=id(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===\ntypeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=gd(f,a.mode,h),d.return=a,a=d),g(a);if(bd(f))return Ha(a,d,f,h);if(ra(f))return O(a,d,f,h);l&&dd(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(n(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var kd=ed(!0),ld=ed(!1),md={},H={current:md},nd={current:md},od={current:md};function pd(a){if(a===md)throw Error(n(174));return a}\nfunction qd(a,b){z(od,b,a);z(nd,a,a);z(H,md,a);b=Aa(b);y(H,a);z(H,b,a)}function rd(a){y(H,a);y(nd,a);y(od,a)}function sd(a){var b=pd(od.current),c=pd(H.current);b=Ba(c,a.type,b);c!==b&&(z(nd,a,a),z(H,b,a))}function td(a){nd.current===a&&(y(H,a),y(nd,a))}var I={current:0};\nfunction ud(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||qb(c)||rb(c)))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function vd(a,b){return{responder:a,props:b}}\nvar wd=q.ReactCurrentDispatcher,J=q.ReactCurrentBatchConfig,xd=0,yd=null,L=null,zd=null,Ad=null,M=null,Bd=null,Cd=0,Dd=null,Ed=0,Fd=!1,Gd=null,Hd=0;function P(){throw Error(n(321));}function Id(a,b){if(null===b)return!1;for(var c=0;cCd&&(Cd=p,Pc(Cd))):(Oc(p,h.suspenseConfig),f=h.eagerReducer===a?h.eagerState:a(f,h.action));g=h;h=h.next}while(null!==h&&h!==d);k||(l=g,e=f);oc(f,b.memoizedState)||(Bc=!0);b.memoizedState=f;b.baseUpdate=l;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction Sd(a){var b=Od();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,lastRenderedReducer:Qd,lastRenderedState:a};a=a.dispatch=Td.bind(null,yd,a);return[b.memoizedState,a]}function Ud(a){return Rd(Qd,a)}function Vd(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===Dd?(Dd={lastEffect:null},Dd.lastEffect=a.next=a):(b=Dd.lastEffect,null===b?Dd.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,Dd.lastEffect=a));return a}\nfunction Wd(a,b,c,d){var e=Od();Ed|=a;e.memoizedState=Vd(b,c,void 0,void 0===d?null:d)}function Xd(a,b,c,d){var e=Pd();d=void 0===d?null:d;var f=void 0;if(null!==L){var g=L.memoizedState;f=g.destroy;if(null!==d&&Id(d,g.deps)){Vd(0,c,f,d);return}}Ed|=a;e.memoizedState=Vd(b,c,f,d)}function Yd(a,b){return Wd(516,192,a,b)}function Zd(a,b){return Xd(516,192,a,b)}\nfunction $d(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function ae(){}function be(a,b){Od().memoizedState=[a,void 0===b?null:b];return a}function ce(a,b){var c=Pd();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Id(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Td(a,b,c){if(!(25>Hd))throw Error(n(301));var d=a.alternate;if(a===yd||null!==d&&d===yd)if(Fd=!0,a={expirationTime:xd,suspenseConfig:null,action:c,eagerReducer:null,eagerState:null,next:null},null===Gd&&(Gd=new Map),c=Gd.get(b),void 0===c)Gd.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{var e=G(),f=Sc.suspense;e=Vc(e,a,f);f={expirationTime:e,suspenseConfig:f,action:c,eagerReducer:null,eagerState:null,next:null};var g=b.last;if(null===g)f.next=f;else{var l=g.next;null!==l&&(f.next=\nl);g.next=f}b.last=f;if(0===a.expirationTime&&(null===d||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var h=b.lastRenderedState,k=d(h,c);f.eagerReducer=d;f.eagerState=k;if(oc(k,h))return}catch(p){}finally{}Wc(a,e)}}\nvar Md={readContext:Cc,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useResponder:P,useDeferredValue:P,useTransition:P},Kd={readContext:Cc,useCallback:be,useContext:Cc,useEffect:Yd,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Wd(4,36,$d.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Wd(4,36,a,b)},useMemo:function(a,b){var c=Od();b=void 0===b?null:b;a=a();c.memoizedState=\n[a,b];return a},useReducer:function(a,b,c){var d=Od();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Td.bind(null,yd,a);return[d.memoizedState,a]},useRef:function(a){var b=Od();a={current:a};return b.memoizedState=a},useState:Sd,useDebugValue:ae,useResponder:vd,useDeferredValue:function(a,b){var c=Sd(a),d=c[0],e=c[1];Yd(function(){m.unstable_next(function(){var c=J.suspense;J.suspense=void 0===b?null:b;try{e(a)}finally{J.suspense=\nc}})},[a,b]);return d},useTransition:function(a){var b=Sd(!1),c=b[0],d=b[1];return[be(function(b){d(!0);m.unstable_next(function(){var c=J.suspense;J.suspense=void 0===a?null:a;try{d(!1),b()}finally{J.suspense=c}})},[a,c]),c]}},Ld={readContext:Cc,useCallback:ce,useContext:Cc,useEffect:Zd,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Xd(4,36,$d.bind(null,b,a),c)},useLayoutEffect:function(a,b){return Xd(4,36,a,b)},useMemo:function(a,b){var c=Pd();b=void 0===b?\nnull:b;var d=c.memoizedState;if(null!==d&&null!==b&&Id(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:Rd,useRef:function(){return Pd().memoizedState},useState:Ud,useDebugValue:ae,useResponder:vd,useDeferredValue:function(a,b){var c=Ud(a),d=c[0],e=c[1];Zd(function(){m.unstable_next(function(){var c=J.suspense;J.suspense=void 0===b?null:b;try{e(a)}finally{J.suspense=c}})},[a,b]);return d},useTransition:function(a){var b=Ud(!1),c=b[0],d=b[1];return[ce(function(b){d(!0);m.unstable_next(function(){var c=\nJ.suspense;J.suspense=void 0===a?null:a;try{d(!1),b()}finally{J.suspense=c}})},[a,c]),c]}},de=null,ee=null,fe=!1;function ge(a,b){var c=he(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}\nfunction ie(a,b){switch(a.tag){case 5:return b=ob(b,a.type,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;case 6:return b=pb(b,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}function je(a){if(fe){var b=ee;if(b){var c=b;if(!ie(a,b)){b=sb(c);if(!b||!ie(a,b)){a.effectTag=a.effectTag&-1025|2;fe=!1;de=a;return}ge(de,c)}de=a;ee=tb(b)}else a.effectTag=a.effectTag&-1025|2,fe=!1,de=a}}\nfunction ke(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;de=a}function ne(a){if(!Sa||a!==de)return!1;if(!fe)return ke(a),fe=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!Ja(b,a.memoizedProps))for(b=ee;b;)ge(a,b),b=sb(b);ke(a);if(13===a.tag){if(!Sa)throw Error(n(316));a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(n(317));ee=wb(a)}else ee=de?sb(a.stateNode):null;return!0}function oe(){Sa&&(ee=de=null,fe=!1)}var pe=q.ReactCurrentOwner,Bc=!1;\nfunction Q(a,b,c,d){b.child=null===a?ld(b,null,c,d):kd(b,a.child,c,d)}function qe(a,b,c,d,e){c=c.render;var f=b.ref;Ac(b,e);d=Jd(a,b,c,d,f,e);if(null!==a&&!Bc)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),re(a,b,e);b.effectTag|=1;Q(a,b,d,e);return b.child}\nfunction se(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!te(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ue(a,b,g,d,e,f);a=hd(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(eb)&&Jf.set(a,b)))}}\nfunction Nf(a,b){a.expirationTimea?b:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=jc(Of.bind(null,a));else{var b=Rf(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=G();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==$b&&Ob(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?jc(Of.bind(null,a)):ic(d,Tf.bind(null,a),{timeout:10*(1073741821-b)-E()});a.callbackNode=b}}}\nfunction Tf(a,b){Mf=0;if(b)return b=G(),Uf(a,b),Z(a),null;var c=Rf(a);if(0!==c){b=a.callbackNode;if((T&(S|sf))!==R)throw Error(n(327));Vf();a===U&&c===W||Wf(a,c);if(null!==V){var d=T;T|=S;var e=Xf(a);do try{Yf();break}catch(l){Zf(a,l)}while(1);wc();T=d;pf.current=e;if(X===uf)throw b=zf,Wf(a,c),Pf(a,c),Z(a),b;if(null===V)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=X,U=null,d){case tf:case uf:throw Error(n(345));case vf:Uf(a,2=c){a.lastPingedTime=c;Wf(a,c);break}}f=Rf(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Ma(ag.bind(null,a),e);break}ag(a);break;case xf:Pf(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=$f(e));if(Ef&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Wf(a,c);break}e=Rf(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==Bf?d=10*(1073741821-Bf)-E():1073741823===Af?d=0:(d=10*(1073741821-Af)-5E3,e=E(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*of(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=E()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+Ab(e))}X!==yf&&(X=vf);f=Ne(f,e);h=d;do{switch(h.tag){case 3:g=f;h.effectTag|=4096;h.expirationTime=b;var r=jf(h,g,b);Jc(h,r);break a;case 1:g=f;var t=h.type,N=h.stateNode;if(0===(h.effectTag&64)&&(\"function\"===typeof t.getDerivedStateFromError||null!==N&&\"function\"===typeof N.componentDidCatch&&\n(null===nf||!nf.has(N)))){h.effectTag|=4096;h.expirationTime=b;var Mc=mf(h,g,b);Jc(h,Mc);break a}}h=h.return}while(null!==h)}V=gg(V)}catch(Rb){b=Rb;continue}break}while(1)}function Xf(){var a=pf.current;pf.current=Md;return null===a?Md:a}function Oc(a,b){aDf&&(Df=a)}function bg(){for(;null!==V;)V=hg(V)}function Yf(){for(;null!==V&&!Pb();)V=hg(V)}\nfunction hg(a){var b=ig(a.alternate,a,W);a.memoizedProps=a.pendingProps;null===b&&(b=gg(a));qf.current=null;return b}\nfunction gg(a){V=a;do{var b=V.alternate;a=V.return;if(0===(V.effectTag&2048)){a:{var c=b;b=V;var d=W,e=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:C(b.type)&&Gb(b);break;case 3:rd(b);Hb(b);e=b.stateNode;e.pendingContext&&(e.context=e.pendingContext,e.pendingContext=null);(null===c||null===c.child)&&ne(b)&&Fe(b);He(b);break;case 5:td(b);var f=pd(od.current);d=b.type;if(null!==c&&null!=b.stateNode)Ie(c,b,d,e,f),c.ref!==b.ref&&(b.effectTag|=128);else if(e){c=pd(H.current);\nif(ne(b)){e=b;if(!Sa)throw Error(n(175));c=ub(e.stateNode,e.type,e.memoizedProps,f,c,e);e.updateQueue=c;c=null!==c?!0:!1;c&&Fe(b)}else{var g=Ea(d,e,f,c,b);Ge(g,b,!1,!1);b.stateNode=g;Ga(g,d,e,f,c)&&Fe(b)}null!==b.ref&&(b.effectTag|=128)}else if(null===b.stateNode)throw Error(n(166));break;case 6:if(c&&null!=b.stateNode)Je(c,b,c.memoizedProps,e);else{if(\"string\"!==typeof e&&null===b.stateNode)throw Error(n(166));c=pd(od.current);f=pd(H.current);if(ne(b)){c=b;if(!Sa)throw Error(n(176));(c=vb(c.stateNode,\nc.memoizedProps,c))&&Fe(b)}else b.stateNode=La(e,c,f,b)}break;case 11:break;case 13:y(I,b);e=b.memoizedState;if(0!==(b.effectTag&64)){b.expirationTime=d;break a}e=null!==e;f=!1;null===c?void 0!==b.memoizedProps.fallback&&ne(b):(d=c.memoizedState,f=null!==d,e||null===d||(d=c.child.sibling,null!==d&&(g=b.firstEffect,null!==g?(b.firstEffect=d,d.nextEffect=g):(b.firstEffect=b.lastEffect=d,d.nextEffect=null),d.effectTag=8)));if(e&&!f&&0!==(b.mode&2))if(null===c&&!0!==b.memoizedProps.unstable_avoidThisFallback||\n0!==(I.current&1))X===tf&&(X=wf);else{if(X===tf||X===wf)X=xf;0!==Df&&null!==U&&(Pf(U,W),Qf(U,Df))}Ra&&e&&(b.effectTag|=4);Qa&&(e||f)&&(b.effectTag|=4);break;case 7:break;case 8:break;case 12:break;case 4:rd(b);He(b);break;case 10:yc(b);break;case 9:break;case 14:break;case 17:C(b.type)&&Gb(b);break;case 19:y(I,b);e=b.memoizedState;if(null===e)break;f=0!==(b.effectTag&64);g=e.rendering;if(null===g)if(f)Le(e,!1);else{if(X!==tf||null!==c&&0!==(c.effectTag&64))for(c=b.child;null!==c;){g=ud(c);if(null!==\ng){b.effectTag|=64;Le(e,!1);c=g.updateQueue;null!==c&&(b.updateQueue=c,b.effectTag|=4);null===e.lastEffect&&(b.firstEffect=null);b.lastEffect=e.lastEffect;c=d;for(e=b.child;null!==e;)f=e,d=c,f.effectTag&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childExpirationTime=0,f.expirationTime=d,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null):(f.childExpirationTime=g.childExpirationTime,f.expirationTime=g.expirationTime,\nf.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,d=g.dependencies,f.dependencies=null===d?null:{expirationTime:d.expirationTime,firstContext:d.firstContext,responders:d.responders}),e=e.sibling;z(I,I.current&1|2,b);b=b.child;break a}c=c.sibling}}else{if(!f)if(c=ud(g),null!==c){if(b.effectTag|=64,f=!0,c=c.updateQueue,null!==c&&(b.updateQueue=c,b.effectTag|=4),Le(e,!0),null===e.tail&&\"hidden\"===e.tailMode){b=b.lastEffect=e.lastEffect;null!==\nb&&(b.nextEffect=null);break}}else E()>e.tailExpiration&&1e&&(e=d),g>e&&(e=g),f=f.sibling;c.childExpirationTime=e}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=V.firstEffect),null!==V.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=V.firstEffect),a.lastEffect=V.lastEffect),1a?b:a}function ag(a){var b=fc();hc(99,jg.bind(null,a,b));return null}\nfunction jg(a,b){Vf();if((T&(S|sf))!==R)throw Error(n(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(n(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=$f(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=d-1);d<=a.lastPingedTime&&\n(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===U&&(V=U=null,W=0);1=c)return Be(a,b,c);z(I,I.current&\n1,b);b=re(a,b,c);return null!==b?b.sibling:null}z(I,I.current&1,b);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return Ee(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);z(I,I.current,b);if(!d)return null}return re(a,b,c)}Bc=!1}}else Bc=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Fb(b,A.current);Ac(b,c);e=Jd(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;Nd();if(C(d)){var f=!0;Kb(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Uc(b,d,g,a);e.updater=Xc;b.stateNode=e;e._reactInternalFiber=b;ad(b,d,a,c);b=ye(null,b,d,!0,f,c)}else b.tag=0,Q(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;sa(e);if(1!==e._status)throw e._result;\ne=e._result;b.type=e;f=b.tag=og(e);a=rc(e,a);switch(f){case 0:b=ve(null,b,e,a,c);break;case 1:b=xe(null,b,e,a,c);break;case 11:b=qe(null,b,e,a,c);break;case 14:b=se(null,b,e,rc(e.type,a),d,c);break;default:throw Error(n(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:rc(d,e),ve(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:rc(d,e),xe(a,b,d,e,c);case 3:ze(b);d=b.updateQueue;if(null===d)throw Error(n(282));e=b.memoizedState;e=null!==e?e.element:\nnull;Nc(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)oe(),b=re(a,b,c);else{if(e=b.stateNode.hydrate)Sa?(ee=tb(b.stateNode.containerInfo),de=b,e=fe=!0):e=!1;if(e)for(c=ld(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else Q(a,b,d,c),oe();b=b.child}return b;case 5:return sd(b),null===a&&je(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ja(d,e)?g=null:null!==f&&Ja(d,f)&&(b.effectTag|=16),we(a,b),b.mode&4&&1!==c&&Ka(d,e)?(b.expirationTime=\nb.childExpirationTime=1,b=null):(Q(a,b,g,c),b=b.child),b;case 6:return null===a&&je(b),null;case 13:return Be(a,b,c);case 4:return qd(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=kd(b,null,d,c):Q(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:rc(d,e),qe(a,b,d,e,c);case 7:return Q(a,b,b.pendingProps,c),b.child;case 8:return Q(a,b,b.pendingProps.children,c),b.child;case 12:return Q(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;\ne=b.pendingProps;g=b.memoizedProps;f=e.value;xc(b,f);if(null!==g){var l=g.value;f=oc(l,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(l,f):1073741823)|0;if(0===f){if(g.children===e.children&&!B.current){b=re(a,b,c);break a}}else for(l=b.child,null!==l&&(l.return=b);null!==l;){var h=l.dependencies;if(null!==h){g=l.child;for(var k=h.firstContext;null!==k;){if(k.context===d&&0!==(k.observedBits&f)){1===l.tag&&(k=Gc(c,null),k.tag=2,Ic(l,k));l.expirationTime=b&&a<=b}function Pf(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction Qf(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Uf(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction sg(a){var b=a._reactInternalFiber;if(void 0===b){if(\"function\"===typeof a.render)throw Error(n(188));throw Error(n(268,Object.keys(a)));}a=xa(b);return null===a?null:a.stateNode}function tg(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime {\n const oldPropsKeys = Object.keys(a);\n const newPropsKeys = Object.keys(b);\n\n if (oldPropsKeys.length !== newPropsKeys.length) {\n return false;\n }\n\n for (let i = 0; i < oldPropsKeys.length; i += 1) {\n const propName = oldPropsKeys[i];\n\n if (propName === 'render' && !a[propName] !== !b[propName]) {\n return false;\n }\n\n if (propName !== 'children' && a[propName] !== b[propName]) {\n if (\n typeof a[propName] === 'object' &&\n typeof b[propName] === 'object' &&\n propsEqual(a[propName], b[propName])\n ) {\n continue;\n }\n\n return false;\n }\n\n if (\n propName === 'children' &&\n (typeof a[propName] === 'string' || typeof b[propName] === 'string')\n ) {\n return a[propName] === b[propName];\n }\n }\n\n return true;\n};\n\nexport default propsEqual;\n","/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n\nimport ReactFiberReconciler from 'react-reconciler';\nimport * as scheduler from 'scheduler';\n\nimport propsEqual from './utils/propsEqual';\n\nconst emptyObject = {};\n\nconst appendChild = (parentInstance, child) => {\n const isParentText =\n parentInstance.type === 'TEXT' ||\n parentInstance.type === 'LINK' ||\n parentInstance.type === 'TSPAN';\n const isChildTextInstance = child.type === 'TEXT_INSTANCE';\n const isOrphanTextInstance = isChildTextInstance && !isParentText;\n\n // Ignore orphan text instances.\n // Caused by cases such as <>{name && {name}}\n if (isOrphanTextInstance) {\n console.warn(\n `Invalid '${child.value}' string child outside component`,\n );\n return;\n }\n\n parentInstance.children.push(child);\n};\n\nconst createRenderer = ({ onChange = () => {} }) => {\n return ReactFiberReconciler({\n schedulePassiveEffects: scheduler.unstable_scheduleCallback,\n cancelPassiveEffects: scheduler.unstable_cancelCallback,\n\n supportsMutation: true,\n\n isPrimaryRenderer: false,\n\n warnsIfNotActing: false,\n\n appendInitialChild: appendChild,\n\n createInstance(type, { style, children, ...props }) {\n return {\n type,\n box: {},\n style: style || {},\n props: props || {},\n children: [],\n };\n },\n\n createTextInstance(text, rootContainerInstance) {\n return { type: 'TEXT_INSTANCE', value: text };\n },\n\n finalizeInitialChildren(element, type, props) {\n return false;\n },\n\n getPublicInstance(instance) {\n return instance;\n },\n\n prepareForCommit() {\n // Noop\n },\n\n clearContainer() {\n // Noop\n },\n\n prepareUpdate(element, type, oldProps, newProps) {\n return !propsEqual(oldProps, newProps);\n },\n\n resetAfterCommit: onChange,\n\n resetTextContent(element) {\n // Noop\n },\n\n getRootHostContext() {\n return emptyObject;\n },\n\n getChildHostContext() {\n return emptyObject;\n },\n\n shouldSetTextContent(type, props) {\n return false;\n },\n\n now: Date.now,\n\n useSyncScheduling: true,\n\n appendChild,\n\n appendChildToContainer(parentInstance, child) {\n if (parentInstance.type === 'ROOT') {\n parentInstance.document = child;\n } else {\n appendChild(parentInstance, child);\n }\n },\n\n insertBefore(parentInstance, child, beforeChild) {\n const index = parentInstance.children?.indexOf(beforeChild);\n\n if (index === undefined) return;\n\n if (index !== -1 && child)\n parentInstance.children.splice(index, 0, child);\n },\n\n removeChild(parentInstance, child) {\n const index = parentInstance.children?.indexOf(child);\n\n if (index === undefined) return;\n\n if (index !== -1) parentInstance.children.splice(index, 1);\n },\n\n removeChildFromContainer(parentInstance, child) {\n const index = parentInstance.children?.indexOf(child);\n\n if (index === undefined) return;\n\n if (index !== -1) parentInstance.children.splice(index, 1);\n },\n\n commitTextUpdate(textInstance, oldText, newText) {\n textInstance.value = newText;\n },\n\n commitUpdate(instance, updatePayload, type, oldProps, newProps) {\n const { style, ...props } = newProps;\n instance.props = props;\n instance.style = style;\n },\n });\n};\n\nexport default createRenderer;\n","import FontStore from '@react-pdf/font';\nimport renderPDF from '@react-pdf/render';\nimport PDFDocument from '@react-pdf/pdfkit';\nimport layoutDocument from '@react-pdf/layout';\n\nimport createRenderer from './renderer';\nimport packageJson from '../package.json';\n\nconst { version } = packageJson;\n\nconst fontStore = new FontStore();\n\n// We must keep a single renderer instance, otherwise React will complain\nlet renderer;\n\n// The pdf instance acts as an event emitter for DOM usage.\n// We only want to trigger an update when PDF content changes\nconst events = {};\n\nconst pdf = (initialValue) => {\n const onChange = () => {\n const listeners = events.change?.slice() || [];\n for (let i = 0; i < listeners.length; i += 1) listeners[i]();\n };\n\n const container = { type: 'ROOT', document: null };\n renderer = renderer || createRenderer({ onChange });\n const mountNode = renderer.createContainer(container);\n\n const updateContainer = (doc, callback) => {\n renderer.updateContainer(doc, mountNode, null, callback);\n };\n\n if (initialValue) updateContainer(initialValue);\n\n const render = async (compress = true) => {\n const props = container.document.props || {};\n const { pdfVersion, language, pageLayout, pageMode } = props;\n\n const ctx = new PDFDocument({\n compress,\n pdfVersion,\n lang: language,\n displayTitle: true,\n autoFirstPage: false,\n pageLayout,\n pageMode,\n });\n\n const layout = await layoutDocument(container.document, fontStore);\n const fileStream = renderPDF(ctx, layout);\n return { layout, fileStream };\n };\n\n const callOnRender = (params = {}) => {\n if (container.document.props.onRender) {\n container.document.props.onRender(params);\n }\n };\n\n const toBlob = async () => {\n const chunks = [];\n const { layout: _INTERNAL__LAYOUT__DATA_, fileStream: instance } =\n await render();\n\n return new Promise((resolve, reject) => {\n instance.on('data', (chunk) => {\n chunks.push(\n chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk),\n );\n });\n\n instance.on('end', () => {\n try {\n const blob = new Blob(chunks, { type: 'application/pdf' });\n callOnRender({ blob, _INTERNAL__LAYOUT__DATA_ });\n resolve(blob);\n } catch (error) {\n reject(error);\n }\n });\n });\n };\n\n // TODO: rename this method to `toStream` in next major release, because it return stream not a buffer\n const toBuffer = async () => {\n const {\n layout: _INTERNAL__LAYOUT__DATA_,\n fileStream,\n } = await render();\n callOnRender({_INTERNAL__LAYOUT__DATA_});\n\n return fileStream;\n };\n\n /*\n * TODO: remove this method in next major release. it is buggy\n * see\n * - https://github.com/diegomura/react-pdf/issues/2112\n * - https://github.com/diegomura/react-pdf/issues/2095\n */\n const toString = async () => {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n '`toString` is deprecated and will be removed in next major release',\n );\n }\n\n let result = '';\n const { fileStream: instance } = await render(false); // For some reason, when rendering to string if compress=true the document is blank\n\n return new Promise((resolve, reject) => {\n try {\n instance.on('data', (buffer) => {\n result += buffer;\n });\n\n instance.on('end', () => {\n callOnRender();\n resolve(result);\n });\n } catch (error) {\n reject(error);\n }\n });\n };\n\n const on = (event, listener) => {\n if (!events[event]) events[event] = [];\n events[event].push(listener);\n };\n\n const removeListener = (event, listener) => {\n if (!events[event]) return;\n const idx = events[event].indexOf(listener);\n if (idx > -1) events[event].splice(idx, 1);\n };\n\n return {\n on,\n container,\n toBlob,\n toBuffer,\n toString,\n removeListener,\n updateContainer,\n };\n};\n\nconst Font = fontStore;\n\nconst StyleSheet = {\n create: (s) => s,\n};\n\nexport { version, Font, StyleSheet, pdf, createRenderer };\n","/* eslint-disable no-console */\n\nimport queue from 'queue';\nimport { useState, useRef, useEffect, useCallback } from 'react';\n\nimport { pdf } from '../index';\n\n/**\n * PDF hook\n *\n * @param {Object} [options] hook options\n * @returns {[Object, Function]} pdf state and update function\n */\nexport const usePDF = ({ document } = {}) => {\n const pdfInstance = useRef(null);\n\n const [state, setState] = useState({\n url: null,\n blob: null,\n error: null,\n loading: !!document,\n });\n\n // Setup rendering queue\n useEffect(() => {\n const renderQueue = queue({ autostart: true, concurrency: 1 });\n\n const queueDocumentRender = () => {\n setState((prev) => ({ ...prev, loading: true }));\n\n renderQueue.splice(0, renderQueue.length, () =>\n state.error ? Promise.resolve() : pdfInstance.current.toBlob(),\n );\n };\n\n const onRenderFailed = (error) => {\n console.error(error);\n setState((prev) => ({ ...prev, loading: false, error }));\n };\n\n const onRenderSuccessful = (blob) => {\n setState({\n blob,\n error: null,\n loading: false,\n url: URL.createObjectURL(blob),\n });\n };\n\n pdfInstance.current = pdf();\n pdfInstance.current.on('change', queueDocumentRender);\n if (document) {\n pdfInstance.current.updateContainer(document);\n }\n\n renderQueue.on('error', onRenderFailed);\n renderQueue.on('success', onRenderSuccessful);\n\n return () => {\n renderQueue.end();\n pdfInstance.current.removeListener('change', queueDocumentRender);\n };\n }, []);\n\n // Revoke old unused url instances\n useEffect(() => {\n return () => {\n if (state.url) {\n URL.revokeObjectURL(state.url);\n }\n };\n }, [state.url]);\n\n const update = useCallback((newDoc) => {\n pdfInstance.current.updateContainer(newDoc);\n }, []);\n\n return [state, update];\n};\n\nexport default usePDF;\n","/* eslint-disable no-console */\n/* eslint-disable react/jsx-props-no-spreading */\n\nimport { useEffect } from 'react';\n\nimport usePDF from './usePDF';\n\nexport const PDFViewer = ({\n title,\n style,\n className,\n children,\n innerRef,\n showToolbar = true,\n ...props\n}) => {\n const [instance, updateInstance] = usePDF();\n\n useEffect(() => updateInstance(children), [children]);\n\n const src = instance.url\n ? `${instance.url}#toolbar=${showToolbar ? 1 : 0}`\n : null;\n\n return (\n \n );\n};\n\nexport default PDFViewer;\n","import * as primitives from '@react-pdf/primitives';\n\nimport usePDF from './usePDF';\nimport PDFViewer from './PDFViewer';\nimport BlobProvider from './BlobProvider';\nimport PDFDownloadLink from './PDFDownloadLink';\nimport { pdf, version, Font, StyleSheet } from '../index';\n\nconst throwEnvironmentError = (name) => {\n throw new Error(\n `${name} is a Node specific API. You're either using this method in a browser, or your bundler is not loading react-pdf from the appropriate web build.`,\n );\n};\n\nexport const renderToStream = () => {\n throwEnvironmentError('renderToStream');\n};\n\nexport const renderToBuffer = () => {\n throwEnvironmentError('renderToBuffer');\n};\n\nexport const renderToString = () => {\n throwEnvironmentError('renderToString');\n};\n\nexport const renderToFile = () => {\n throwEnvironmentError('renderToFile');\n};\n\nexport const render = () => {\n throwEnvironmentError('render');\n};\n\nexport * from '../index';\n\nexport * from './usePDF';\n\nexport * from './PDFViewer';\n\nexport * from './BlobProvider';\n\nexport * from './PDFDownloadLink';\n\nexport * from '@react-pdf/primitives';\n\n// TODO: remove this default export in next major release because it breaks tree-shacking\nexport default {\n pdf,\n usePDF,\n Font,\n version,\n StyleSheet,\n PDFViewer,\n BlobProvider,\n PDFDownloadLink,\n renderToStream,\n renderToString,\n renderToFile,\n render,\n ...primitives,\n};\n","module.exports = require('./dec/decode').BrotliDecompressBuffer;\n","var base64 = require('base64-js');\n\n/**\n * The normal dictionary-data.js is quite large, which makes it \n * unsuitable for browser usage. In order to make it smaller, \n * we read dictionary.bin, which is a compressed version of\n * the dictionary, and on initial load, Brotli decompresses \n * it's own dictionary. 😜\n */\nexports.init = function() {\n var BrotliDecompressBuffer = require('./decode').BrotliDecompressBuffer;\n var compressed = base64.toByteArray(require('./dictionary.bin.js'));\n return BrotliDecompressBuffer(compressed);\n};\n","/* Copyright 2013 Google Inc. All Rights Reserved.\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 Lookup table to map the previous two bytes to a context id.\n\n There are four different context modeling modes defined here:\n CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,\n CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,\n CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,\n CONTEXT_SIGNED: second-order context model tuned for signed integers.\n\n The context id for the UTF8 context model is calculated as follows. If p1\n and p2 are the previous two bytes, we calcualte the context as\n\n context = kContextLookup[p1] | kContextLookup[p2 + 256].\n\n If the previous two bytes are ASCII characters (i.e. < 128), this will be\n equivalent to\n\n context = 4 * context1(p1) + context2(p2),\n\n where context1 is based on the previous byte in the following way:\n\n 0 : non-ASCII control\n 1 : \\t, \\n, \\r\n 2 : space\n 3 : other punctuation\n 4 : \" '\n 5 : %\n 6 : ( < [ {\n 7 : ) > ] }\n 8 : , ; :\n 9 : .\n 10 : =\n 11 : number\n 12 : upper-case vowel\n 13 : upper-case consonant\n 14 : lower-case vowel\n 15 : lower-case consonant\n\n and context2 is based on the second last byte:\n\n 0 : control, space\n 1 : punctuation\n 2 : upper-case letter, number\n 3 : lower-case letter\n\n If the last byte is ASCII, and the second last byte is not (in a valid UTF8\n stream it will be a continuation byte, value between 128 and 191), the\n context is the same as if the second last byte was an ASCII control or space.\n\n If the last byte is a UTF8 lead byte (value >= 192), then the next byte will\n be a continuation byte and the context id is 2 or 3 depending on the LSB of\n the last byte and to a lesser extent on the second last byte if it is ASCII.\n\n If the last byte is a UTF8 continuation byte, the second last byte can be:\n - continuation byte: the next byte is probably ASCII or lead byte (assuming\n 4-byte UTF8 characters are rare) and the context id is 0 or 1.\n - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1\n - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3\n\n The possible value combinations of the previous two bytes, the range of\n context ids and the type of the next byte is summarized in the table below:\n\n |--------\\-----------------------------------------------------------------|\n | \\ Last byte |\n | Second \\---------------------------------------------------------------|\n | last byte \\ ASCII | cont. byte | lead byte |\n | \\ (0-127) | (128-191) | (192-) |\n |=============|===================|=====================|==================|\n | ASCII | next: ASCII/lead | not valid | next: cont. |\n | (0-127) | context: 4 - 63 | | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |\n | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: ASCII/lead | not valid |\n | (192-207) | | context: 0 - 1 | |\n |-------------|-------------------|---------------------|------------------|\n | lead byte | not valid | next: cont. | not valid |\n | (208-) | | context: 2 - 3 | |\n |-------------|-------------------|---------------------|------------------|\n\n The context id for the signed context mode is calculated as:\n\n context = (kContextLookup[512 + p1] << 3) | kContextLookup[512 + p2].\n\n For any context modeling modes, the context ids can be calculated by |-ing\n together two lookups from one table using context model dependent offsets:\n\n context = kContextLookup[offset1 + p1] | kContextLookup[offset2 + p2].\n\n where offset1 and offset2 are dependent on the context mode.\n*/\n\nvar CONTEXT_LSB6 = 0;\nvar CONTEXT_MSB6 = 1;\nvar CONTEXT_UTF8 = 2;\nvar CONTEXT_SIGNED = 3;\n\n/* Common context lookup table for all context modes. */\nexports.lookup = new Uint8Array([\n /* CONTEXT_UTF8, last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,\n 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,\n 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,\n 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,\n 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,\n 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,\n /* UTF8 continuation byte range. */\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,\n /* UTF8 lead byte range. */\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,\n /* CONTEXT_UTF8 second last byte. */\n /* ASCII range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,\n 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,\n 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,\n /* UTF8 continuation byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n /* UTF8 lead byte range. */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n /* CONTEXT_SIGNED, second last byte. */\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7,\n /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */\n 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,\n 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,\n /* CONTEXT_LSB6, last byte. */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,\n /* CONTEXT_MSB6, last byte. */\n 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,\n 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,\n 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,\n 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,\n 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,\n 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,\n 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,\n 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,\n 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,\n 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,\n 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,\n 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,\n 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,\n 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,\n 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,\n 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,\n /* CONTEXT_{M,L}SB6, second last byte, */\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n]);\n\nexports.lookupOffsets = new Uint16Array([\n /* CONTEXT_LSB6 */\n 1024, 1536,\n /* CONTEXT_MSB6 */\n 1280, 1536,\n /* CONTEXT_UTF8 */\n 0, 256,\n /* CONTEXT_SIGNED */\n 768, 512,\n]);\n","/* Copyright 2013 Google Inc. All Rights Reserved.\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 Lookup tables to map prefix codes to value ranges. This is used during\n decoding of the block lengths, literal insertion lengths and copy lengths.\n*/\n\n/* Represents the range of values belonging to a prefix code: */\n/* [offset, offset + 2^nbits) */\nfunction PrefixCodeRange(offset, nbits) {\n this.offset = offset;\n this.nbits = nbits;\n}\n\nexports.kBlockLengthPrefixCode = [\n new PrefixCodeRange(1, 2), new PrefixCodeRange(5, 2), new PrefixCodeRange(9, 2), new PrefixCodeRange(13, 2),\n new PrefixCodeRange(17, 3), new PrefixCodeRange(25, 3), new PrefixCodeRange(33, 3), new PrefixCodeRange(41, 3),\n new PrefixCodeRange(49, 4), new PrefixCodeRange(65, 4), new PrefixCodeRange(81, 4), new PrefixCodeRange(97, 4),\n new PrefixCodeRange(113, 5), new PrefixCodeRange(145, 5), new PrefixCodeRange(177, 5), new PrefixCodeRange(209, 5),\n new PrefixCodeRange(241, 6), new PrefixCodeRange(305, 6), new PrefixCodeRange(369, 7), new PrefixCodeRange(497, 8),\n new PrefixCodeRange(753, 9), new PrefixCodeRange(1265, 10), new PrefixCodeRange(2289, 11), new PrefixCodeRange(4337, 12),\n new PrefixCodeRange(8433, 13), new PrefixCodeRange(16625, 24)\n];\n\nexports.kInsertLengthPrefixCode = [\n new PrefixCodeRange(0, 0), new PrefixCodeRange(1, 0), new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0),\n new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0), new PrefixCodeRange(6, 1), new PrefixCodeRange(8, 1),\n new PrefixCodeRange(10, 2), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 3), new PrefixCodeRange(26, 3),\n new PrefixCodeRange(34, 4), new PrefixCodeRange(50, 4), new PrefixCodeRange(66, 5), new PrefixCodeRange(98, 5),\n new PrefixCodeRange(130, 6), new PrefixCodeRange(194, 7), new PrefixCodeRange(322, 8), new PrefixCodeRange(578, 9),\n new PrefixCodeRange(1090, 10), new PrefixCodeRange(2114, 12), new PrefixCodeRange(6210, 14), new PrefixCodeRange(22594, 24),\n];\n\nexports.kCopyLengthPrefixCode = [\n new PrefixCodeRange(2, 0), new PrefixCodeRange(3, 0), new PrefixCodeRange(4, 0), new PrefixCodeRange(5, 0),\n new PrefixCodeRange(6, 0), new PrefixCodeRange(7, 0), new PrefixCodeRange(8, 0), new PrefixCodeRange(9, 0),\n new PrefixCodeRange(10, 1), new PrefixCodeRange(12, 1), new PrefixCodeRange(14, 2), new PrefixCodeRange(18, 2),\n new PrefixCodeRange(22, 3), new PrefixCodeRange(30, 3), new PrefixCodeRange(38, 4), new PrefixCodeRange(54, 4),\n new PrefixCodeRange(70, 5), new PrefixCodeRange(102, 5), new PrefixCodeRange(134, 6), new PrefixCodeRange(198, 7),\n new PrefixCodeRange(326, 8), new PrefixCodeRange(582, 9), new PrefixCodeRange(1094, 10), new PrefixCodeRange(2118, 24),\n];\n\nexports.kInsertRangeLut = [\n 0, 0, 8, 8, 0, 16, 8, 16, 16,\n];\n\nexports.kCopyRangeLut = [\n 0, 8, 0, 8, 16, 0, 16, 8, 16,\n];\n","/* Copyright 2013 Google Inc. All Rights Reserved.\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 Transformations on dictionary words.\n*/\n\nvar BrotliDictionary = require('./dictionary');\n\nvar kIdentity = 0;\nvar kOmitLast1 = 1;\nvar kOmitLast2 = 2;\nvar kOmitLast3 = 3;\nvar kOmitLast4 = 4;\nvar kOmitLast5 = 5;\nvar kOmitLast6 = 6;\nvar kOmitLast7 = 7;\nvar kOmitLast8 = 8;\nvar kOmitLast9 = 9;\nvar kUppercaseFirst = 10;\nvar kUppercaseAll = 11;\nvar kOmitFirst1 = 12;\nvar kOmitFirst2 = 13;\nvar kOmitFirst3 = 14;\nvar kOmitFirst4 = 15;\nvar kOmitFirst5 = 16;\nvar kOmitFirst6 = 17;\nvar kOmitFirst7 = 18;\nvar kOmitFirst8 = 19;\nvar kOmitFirst9 = 20;\n\nfunction Transform(prefix, transform, suffix) {\n this.prefix = new Uint8Array(prefix.length);\n this.transform = transform;\n this.suffix = new Uint8Array(suffix.length);\n \n for (var i = 0; i < prefix.length; i++)\n this.prefix[i] = prefix.charCodeAt(i);\n \n for (var i = 0; i < suffix.length; i++)\n this.suffix[i] = suffix.charCodeAt(i);\n}\n\nvar kTransforms = [\n new Transform( \"\", kIdentity, \"\" ),\n new Transform( \"\", kIdentity, \" \" ),\n new Transform( \" \", kIdentity, \" \" ),\n new Transform( \"\", kOmitFirst1, \"\" ),\n new Transform( \"\", kUppercaseFirst, \" \" ),\n new Transform( \"\", kIdentity, \" the \" ),\n new Transform( \" \", kIdentity, \"\" ),\n new Transform( \"s \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \" of \" ),\n new Transform( \"\", kUppercaseFirst, \"\" ),\n new Transform( \"\", kIdentity, \" and \" ),\n new Transform( \"\", kOmitFirst2, \"\" ),\n new Transform( \"\", kOmitLast1, \"\" ),\n new Transform( \", \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \", \" ),\n new Transform( \" \", kUppercaseFirst, \" \" ),\n new Transform( \"\", kIdentity, \" in \" ),\n new Transform( \"\", kIdentity, \" to \" ),\n new Transform( \"e \", kIdentity, \" \" ),\n new Transform( \"\", kIdentity, \"\\\"\" ),\n new Transform( \"\", kIdentity, \".\" ),\n new Transform( \"\", kIdentity, \"\\\">\" ),\n new Transform( \"\", kIdentity, \"\\n\" ),\n new Transform( \"\", kOmitLast3, \"\" ),\n new Transform( \"\", kIdentity, \"]\" ),\n new Transform( \"\", kIdentity, \" for \" ),\n new Transform( \"\", kOmitFirst3, \"\" ),\n new Transform( \"\", kOmitLast2, \"\" ),\n new Transform( \"\", kIdentity, \" a \" ),\n new Transform( \"\", kIdentity, \" that \" ),\n new Transform( \" \", kUppercaseFirst, \"\" ),\n new Transform( \"\", kIdentity, \". \" ),\n new Transform( \".\", kIdentity, \"\" ),\n new Transform( \" \", kIdentity, \", \" ),\n new Transform( \"\", kOmitFirst4, \"\" ),\n new Transform( \"\", kIdentity, \" with \" ),\n new Transform( \"\", kIdentity, \"'\" ),\n new Transform( \"\", kIdentity, \" from \" ),\n new Transform( \"\", kIdentity, \" by \" ),\n new Transform( \"\", kOmitFirst5, \"\" ),\n new Transform( \"\", kOmitFirst6, \"\" ),\n new Transform( \" the \", kIdentity, \"\" ),\n new Transform( \"\", kOmitLast4, \"\" ),\n new Transform( \"\", kIdentity, \". The \" ),\n new Transform( \"\", kUppercaseAll, \"\" ),\n new Transform( \"\", kIdentity, \" on \" ),\n new Transform( \"\", kIdentity, \" as \" ),\n new Transform( \"\", kIdentity, \" is \" ),\n new Transform( \"\", kOmitLast7, \"\" ),\n new Transform( \"\", kOmitLast1, \"ing \" ),\n new Transform( \"\", kIdentity, \"\\n\\t\" ),\n new Transform( \"\", kIdentity, \":\" ),\n new Transform( \" \", kIdentity, \". \" ),\n new Transform( \"\", kIdentity, \"ed \" ),\n new Transform( \"\", kOmitFirst9, \"\" ),\n new Transform( \"\", kOmitFirst7, \"\" ),\n new Transform( \"\", kOmitLast6, \"\" ),\n new Transform( \"\", kIdentity, \"(\" ),\n new Transform( \"\", kUppercaseFirst, \", \" ),\n new Transform( \"\", kOmitLast8, \"\" ),\n new Transform( \"\", kIdentity, \" at \" ),\n new Transform( \"\", kIdentity, \"ly \" ),\n new Transform( \" the \", kIdentity, \" of \" ),\n new Transform( \"\", kOmitLast5, \"\" ),\n new Transform( \"\", kOmitLast9, \"\" ),\n new Transform( \" \", kUppercaseFirst, \", \" ),\n new Transform( \"\", kUppercaseFirst, \"\\\"\" ),\n new Transform( \".\", kIdentity, \"(\" ),\n new Transform( \"\", kUppercaseAll, \" \" ),\n new Transform( \"\", kUppercaseFirst, \"\\\">\" ),\n new Transform( \"\", kIdentity, \"=\\\"\" ),\n new Transform( \" \", kIdentity, \".\" ),\n new Transform( \".com/\", kIdentity, \"\" ),\n new Transform( \" the \", kIdentity, \" of the \" ),\n new Transform( \"\", kUppercaseFirst, \"'\" ),\n new Transform( \"\", kIdentity, \". This \" ),\n new Transform( \"\", kIdentity, \",\" ),\n new Transform( \".\", kIdentity, \" \" ),\n new Transform( \"\", kUppercaseFirst, \"(\" ),\n new Transform( \"\", kUppercaseFirst, \".\" ),\n new Transform( \"\", kIdentity, \" not \" ),\n new Transform( \" \", kIdentity, \"=\\\"\" ),\n new Transform( \"\", kIdentity, \"er \" ),\n new Transform( \" \", kUppercaseAll, \" \" ),\n new Transform( \"\", kIdentity, \"al \" ),\n new Transform( \" \", kUppercaseAll, \"\" ),\n new Transform( \"\", kIdentity, \"='\" ),\n new Transform( \"\", kUppercaseAll, \"\\\"\" ),\n new Transform( \"\", kUppercaseFirst, \". \" ),\n new Transform( \" \", kIdentity, \"(\" ),\n new Transform( \"\", kIdentity, \"ful \" ),\n new Transform( \" \", kUppercaseFirst, \". \" ),\n new Transform( \"\", kIdentity, \"ive \" ),\n new Transform( \"\", kIdentity, \"less \" ),\n new Transform( \"\", kUppercaseAll, \"'\" ),\n new Transform( \"\", kIdentity, \"est \" ),\n new Transform( \" \", kUppercaseFirst, \".\" ),\n new Transform( \"\", kUppercaseAll, \"\\\">\" ),\n new Transform( \" \", kIdentity, \"='\" ),\n new Transform( \"\", kUppercaseFirst, \",\" ),\n new Transform( \"\", kIdentity, \"ize \" ),\n new Transform( \"\", kUppercaseAll, \".\" ),\n new Transform( \"\\xc2\\xa0\", kIdentity, \"\" ),\n new Transform( \" \", kIdentity, \",\" ),\n new Transform( \"\", kUppercaseFirst, \"=\\\"\" ),\n new Transform( \"\", kUppercaseAll, \"=\\\"\" ),\n new Transform( \"\", kIdentity, \"ous \" ),\n new Transform( \"\", kUppercaseAll, \", \" ),\n new Transform( \"\", kUppercaseFirst, \"='\" ),\n new Transform( \" \", kUppercaseFirst, \",\" ),\n new Transform( \" \", kUppercaseAll, \"=\\\"\" ),\n new Transform( \" \", kUppercaseAll, \", \" ),\n new Transform( \"\", kUppercaseAll, \",\" ),\n new Transform( \"\", kUppercaseAll, \"(\" ),\n new Transform( \"\", kUppercaseAll, \". \" ),\n new Transform( \" \", kUppercaseAll, \".\" ),\n new Transform( \"\", kUppercaseAll, \"='\" ),\n new Transform( \" \", kUppercaseAll, \". \" ),\n new Transform( \" \", kUppercaseFirst, \"=\\\"\" ),\n new Transform( \" \", kUppercaseAll, \"='\" ),\n new Transform( \" \", kUppercaseFirst, \"='\" )\n];\n\nexports.kTransforms = kTransforms;\nexports.kNumTransforms = kTransforms.length;\n\nfunction ToUpperCase(p, i) {\n if (p[i] < 0xc0) {\n if (p[i] >= 97 && p[i] <= 122) {\n p[i] ^= 32;\n }\n return 1;\n }\n \n /* An overly simplified uppercasing model for utf-8. */\n if (p[i] < 0xe0) {\n p[i + 1] ^= 32;\n return 2;\n }\n \n /* An arbitrary transform for three byte characters. */\n p[i + 2] ^= 5;\n return 3;\n}\n\nexports.transformDictionaryWord = function(dst, idx, word, len, transform) {\n var prefix = kTransforms[transform].prefix;\n var suffix = kTransforms[transform].suffix;\n var t = kTransforms[transform].transform;\n var skip = t < kOmitFirst1 ? 0 : t - (kOmitFirst1 - 1);\n var i = 0;\n var start_idx = idx;\n var uppercase;\n \n if (skip > len) {\n skip = len;\n }\n \n var prefix_pos = 0;\n while (prefix_pos < prefix.length) {\n dst[idx++] = prefix[prefix_pos++];\n }\n \n word += skip;\n len -= skip;\n \n if (t <= kOmitLast9) {\n len -= t;\n }\n \n for (i = 0; i < len; i++) {\n dst[idx++] = BrotliDictionary.dictionary[word + i];\n }\n \n uppercase = idx - len;\n \n if (t === kUppercaseFirst) {\n ToUpperCase(dst, uppercase);\n } else if (t === kUppercaseAll) {\n while (len > 0) {\n var step = ToUpperCase(dst, uppercase);\n uppercase += step;\n len -= step;\n }\n }\n \n var suffix_pos = 0;\n while (suffix_pos < suffix.length) {\n dst[idx++] = suffix[suffix_pos++];\n }\n \n return idx - start_idx;\n}\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @format\n */\n\nimport YGEnums, {Unit, Direction} from './generated/YGEnums';\n\nexport default function wrapAssembly(lib) {\n function patch(prototype, name, fn) {\n const original = prototype[name];\n\n prototype[name] = function (...args) {\n return fn.call(this, original, ...args);\n };\n }\n\n for (const fnName of [\n 'setPosition',\n 'setMargin',\n 'setFlexBasis',\n 'setWidth',\n 'setHeight',\n 'setMinWidth',\n 'setMinHeight',\n 'setMaxWidth',\n 'setMaxHeight',\n 'setPadding',\n ]) {\n const methods = {\n [Unit.Point]: lib.Node.prototype[fnName],\n [Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],\n [Unit.Auto]: lib.Node.prototype[`${fnName}Auto`],\n };\n\n patch(lib.Node.prototype, fnName, function (original, ...args) {\n // We patch all these functions to add support for the following calls:\n // .setWidth(100) / .setWidth(\"100%\") / .setWidth(.getWidth()) / .setWidth(\"auto\")\n\n const value = args.pop();\n let unit, asNumber;\n\n if (value === 'auto') {\n unit = Unit.Auto;\n asNumber = undefined;\n } else if (typeof value === 'object') {\n unit = value.unit;\n asNumber = value.valueOf();\n } else {\n unit =\n typeof value === 'string' && value.endsWith('%')\n ? Unit.Percent\n : Unit.Point;\n asNumber = parseFloat(value);\n if (!Number.isNaN(value) && Number.isNaN(asNumber)) {\n throw new Error(`Invalid value ${value} for ${fnName}`);\n }\n }\n\n if (!methods[unit])\n throw new Error(\n `Failed to execute \"${fnName}\": Unsupported unit '${value}'`,\n );\n\n if (asNumber !== undefined) {\n return methods[unit].call(this, ...args, asNumber);\n } else {\n return methods[unit].call(this, ...args);\n }\n });\n }\n\n function wrapMeasureFunction(measureFunction) {\n return lib.MeasureCallback.implement({\n measure: (...args) => {\n const {width, height} = measureFunction(...args);\n return {\n width: width ?? NaN,\n height: height ?? NaN,\n };\n },\n });\n }\n\n patch(lib.Node.prototype, 'setMeasureFunc', function (original, measureFunc) {\n // This patch is just a convenience patch, since it helps write more\n // idiomatic source code (such as .setMeasureFunc(null))\n if (measureFunc) {\n return original.call(this, wrapMeasureFunction(measureFunc));\n } else {\n return this.unsetMeasureFunc();\n }\n });\n\n function wrapDirtiedFunc(dirtiedFunction) {\n return lib.DirtiedCallback.implement({dirtied: dirtiedFunction});\n }\n\n patch(lib.Node.prototype, 'setDirtiedFunc', function (original, dirtiedFunc) {\n original.call(this, wrapDirtiedFunc(dirtiedFunc));\n });\n\n patch(lib.Config.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Config.create),\n // we also need to handle the deallocation\n lib.Config.destroy(this);\n });\n\n patch(lib.Node, 'create', (_, config) => {\n // We decide the constructor we want to call depending on the parameters\n return config\n ? lib.Node.createWithConfig(config)\n : lib.Node.createDefault();\n });\n\n patch(lib.Node.prototype, 'free', function () {\n // Since we handle the memory allocation ourselves (via lib.Node.create),\n // we also need to handle the deallocation\n lib.Node.destroy(this);\n });\n\n patch(lib.Node.prototype, 'freeRecursive', function () {\n for (let t = 0, T = this.getChildCount(); t < T; ++t) {\n this.getChild(0).freeRecursive();\n }\n this.free();\n });\n\n patch(\n lib.Node.prototype,\n 'calculateLayout',\n function (original, width = NaN, height = NaN, direction = Direction.LTR) {\n // Just a small patch to add support for the function default parameters\n return original.call(this, width, height, direction);\n },\n );\n\n return {\n Config: lib.Config,\n Node: lib.Node,\n ...YGEnums,\n };\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","\"use strict\";\nexports.format = exports.formatDate = format;\nObject.defineProperty(exports, \"formatters\", {\n enumerable: true,\n get: function () {\n return _index3.formatters;\n },\n});\nObject.defineProperty(exports, \"longFormatters\", {\n enumerable: true,\n get: function () {\n return _index4.longFormatters;\n },\n});\nvar _index = require(\"./_lib/defaultLocale.js\");\nvar _index2 = require(\"./_lib/defaultOptions.js\");\nvar _index3 = require(\"./_lib/format/formatters.js\");\nvar _index4 = require(\"./_lib/format/longFormatters.js\");\nvar _index5 = require(\"./_lib/protectedTokens.js\");\n\nvar _index6 = require(\"./isValid.js\");\nvar _index7 = require(\"./toDate.js\");\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nfunction format(date, formatStr, options) {\n const defaultOptions = (0, _index2.getDefaultOptions)();\n const locale =\n options?.locale ?? defaultOptions.locale ?? _index.defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = (0, _index7.toDate)(date);\n\n if (!(0, _index6.isValid)(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = _index4.longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (_index3.formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n (0, _index5.isProtectedWeekYearToken)(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n (0, _index5.isProtectedDayOfYearToken)(token))\n ) {\n (0, _index5.warnOrThrowProtectedError)(token, formatStr, String(date));\n }\n\n const formatter = _index3.formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n","\"use strict\";\nexports.enUS = void 0;\nvar _index = require(\"./en-US/_lib/formatDistance.js\");\nvar _index2 = require(\"./en-US/_lib/formatLong.js\");\nvar _index3 = require(\"./en-US/_lib/formatRelative.js\");\nvar _index4 = require(\"./en-US/_lib/localize.js\");\nvar _index5 = require(\"./en-US/_lib/match.js\");\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nconst enUS = (exports.enUS = {\n code: \"en-US\",\n formatDistance: _index.formatDistance,\n formatLong: _index2.formatLong,\n formatRelative: _index3.formatRelative,\n localize: _index4.localize,\n match: _index5.match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n});\n","\"use strict\";\nexports.formatDistance = void 0;\n\nconst formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nconst formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\nexports.formatDistance = formatDistance;\n","\"use strict\";\nexports.formatLong = void 0;\nvar _index = require(\"../../_lib/buildFormatLongFn.js\");\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nconst formatLong = (exports.formatLong = {\n date: (0, _index.buildFormatLongFn)({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: (0, _index.buildFormatLongFn)({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: (0, _index.buildFormatLongFn)({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n});\n","\"use strict\";\nexports.buildFormatLongFn = buildFormatLongFn;\n\nfunction buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","\"use strict\";\nexports.formatRelative = void 0;\n\nconst formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nconst formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\nexports.formatRelative = formatRelative;\n","\"use strict\";\nexports.localize = void 0;\nvar _index = require(\"../../_lib/buildLocalizeFn.js\");\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nconst localize = (exports.localize = {\n ordinalNumber,\n\n era: (0, _index.buildLocalizeFn)({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: (0, _index.buildLocalizeFn)({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: (0, _index.buildLocalizeFn)({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: (0, _index.buildLocalizeFn)({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: (0, _index.buildLocalizeFn)({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n});\n","\"use strict\";\nexports.buildLocalizeFn = buildLocalizeFn; /* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nfunction buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","\"use strict\";\nexports.match = void 0;\n\nvar _index = require(\"../../_lib/buildMatchFn.js\");\nvar _index2 = require(\"../../_lib/buildMatchPatternFn.js\");\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nconst match = (exports.match = {\n ordinalNumber: (0, _index2.buildMatchPatternFn)({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: (0, _index.buildMatchFn)({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: (0, _index.buildMatchFn)({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: (0, _index.buildMatchFn)({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: (0, _index.buildMatchFn)({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: (0, _index.buildMatchFn)({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n});\n","\"use strict\";\nexports.buildMatchFn = buildMatchFn;\n\nfunction buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","\"use strict\";\nexports.buildMatchPatternFn = buildMatchPatternFn;\n\nfunction buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","\"use strict\";\nexports.formatters = void 0;\nvar _index = require(\"../../getDayOfYear.js\");\nvar _index2 = require(\"../../getISOWeek.js\");\nvar _index3 = require(\"../../getISOWeekYear.js\");\nvar _index4 = require(\"../../getWeek.js\");\nvar _index5 = require(\"../../getWeekYear.js\");\n\nvar _index6 = require(\"../addLeadingZeros.js\");\nvar _index7 = require(\"./lightFormatters.js\");\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nconst formatters = (exports.formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return _index7.lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = (0, _index5.getWeekYear)(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return (0, _index6.addLeadingZeros)(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return (0, _index6.addLeadingZeros)(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = (0, _index3.getISOWeekYear)(date);\n\n // Padding\n return (0, _index6.addLeadingZeros)(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return (0, _index6.addLeadingZeros)(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return (0, _index6.addLeadingZeros)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return (0, _index6.addLeadingZeros)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return _index7.lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return (0, _index6.addLeadingZeros)(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = (0, _index4.getWeek)(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return (0, _index6.addLeadingZeros)(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = (0, _index2.getISOWeek)(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return (0, _index6.addLeadingZeros)(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return _index7.lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = (0, _index.getDayOfYear)(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return (0, _index6.addLeadingZeros)(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return (0, _index6.addLeadingZeros)(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return (0, _index6.addLeadingZeros)(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return (0, _index6.addLeadingZeros)(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return _index7.lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return _index7.lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return (0, _index6.addLeadingZeros)(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return (0, _index6.addLeadingZeros)(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return _index7.lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return _index7.lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return _index7.lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return (0, _index6.addLeadingZeros)(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return (0, _index6.addLeadingZeros)(timestamp, token.length);\n },\n});\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return (\n sign + String(hours) + delimiter + (0, _index6.addLeadingZeros)(minutes, 2)\n );\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + (0, _index6.addLeadingZeros)(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = (0, _index6.addLeadingZeros)(Math.trunc(absOffset / 60), 2);\n const minutes = (0, _index6.addLeadingZeros)(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","\"use strict\";\nexports.getDayOfYear = getDayOfYear;\nvar _index = require(\"./differenceInCalendarDays.js\");\nvar _index2 = require(\"./startOfYear.js\");\nvar _index3 = require(\"./toDate.js\");\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nfunction getDayOfYear(date) {\n const _date = (0, _index3.toDate)(date);\n const diff = (0, _index.differenceInCalendarDays)(\n _date,\n (0, _index2.startOfYear)(_date),\n );\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n","\"use strict\";\nexports.startOfISOWeekYear = startOfISOWeekYear;\nvar _index = require(\"./getISOWeekYear.js\");\nvar _index2 = require(\"./startOfISOWeek.js\");\nvar _index3 = require(\"./constructFrom.js\");\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nfunction startOfISOWeekYear(date) {\n const year = (0, _index.getISOWeekYear)(date);\n const fourthOfJanuary = (0, _index3.constructFrom)(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return (0, _index2.startOfISOWeek)(fourthOfJanuary);\n}\n","\"use strict\";\nexports.startOfWeekYear = startOfWeekYear;\nvar _index = require(\"./constructFrom.js\");\nvar _index2 = require(\"./getWeekYear.js\");\nvar _index3 = require(\"./startOfWeek.js\");\n\nvar _index4 = require(\"./_lib/defaultOptions.js\");\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nfunction startOfWeekYear(date, options) {\n const defaultOptions = (0, _index4.getDefaultOptions)();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = (0, _index2.getWeekYear)(date, options);\n const firstWeek = (0, _index.constructFrom)(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = (0, _index3.startOfWeek)(firstWeek, options);\n return _date;\n}\n","\"use strict\";\nexports.lightFormatters = void 0;\nvar _index = require(\"../addLeadingZeros.js\");\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nconst lightFormatters = (exports.lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return (0, _index.addLeadingZeros)(\n token === \"yy\" ? year % 100 : year,\n token.length,\n );\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\"\n ? String(month + 1)\n : (0, _index.addLeadingZeros)(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return (0, _index.addLeadingZeros)(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return (0, _index.addLeadingZeros)(\n date.getHours() % 12 || 12,\n token.length,\n );\n },\n\n // Hour [0-23]\n H(date, token) {\n return (0, _index.addLeadingZeros)(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return (0, _index.addLeadingZeros)(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return (0, _index.addLeadingZeros)(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return (0, _index.addLeadingZeros)(fractionalSeconds, token.length);\n },\n});\n","\"use strict\";\nexports.addMinutes = addMinutes;\nvar _index = require(\"./addMilliseconds.js\");\nvar _index2 = require(\"./constants.js\");\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes(date, amount) {\n return (0, _index.addMilliseconds)(\n date,\n amount * _index2.millisecondsInMinute,\n );\n}\n","\"use strict\";\nexports.addHours = addHours;\nvar _index = require(\"./addMilliseconds.js\");\nvar _index2 = require(\"./constants.js\");\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added.\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nfunction addHours(date, amount) {\n return (0, _index.addMilliseconds)(date, amount * _index2.millisecondsInHour);\n}\n","\"use strict\";\nexports.subDays = subDays;\nvar _index = require(\"./addDays.js\");\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nfunction subDays(date, amount) {\n return (0, _index.addDays)(date, -amount);\n}\n","\"use strict\";\nexports.subWeeks = subWeeks;\nvar _index = require(\"./addWeeks.js\");\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nfunction subWeeks(date, amount) {\n return (0, _index.addWeeks)(date, -amount);\n}\n","\"use strict\";\nexports.subMonths = subMonths;\nvar _index = require(\"./addMonths.js\");\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction subMonths(date, amount) {\n return (0, _index.addMonths)(date, -amount);\n}\n","\"use strict\";\nexports.subQuarters = subQuarters;\nvar _index = require(\"./addQuarters.js\");\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be subtracted.\n *\n * @returns The new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nfunction subQuarters(date, amount) {\n return (0, _index.addQuarters)(date, -amount);\n}\n","\"use strict\";\nexports.subYears = subYears;\nvar _index = require(\"./addYears.js\");\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nfunction subYears(date, amount) {\n return (0, _index.addYears)(date, -amount);\n}\n","\"use strict\";\nexports.getSeconds = getSeconds;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nfunction getSeconds(date) {\n const _date = (0, _index.toDate)(date);\n const seconds = _date.getSeconds();\n return seconds;\n}\n","\"use strict\";\nexports.getMinutes = getMinutes;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nfunction getMinutes(date) {\n const _date = (0, _index.toDate)(date);\n const minutes = _date.getMinutes();\n return minutes;\n}\n","\"use strict\";\nexports.getHours = getHours;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nfunction getHours(date) {\n const _date = (0, _index.toDate)(date);\n const hours = _date.getHours();\n return hours;\n}\n","\"use strict\";\nexports.getDay = getDay;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nfunction getDay(date) {\n const _date = (0, _index.toDate)(date);\n const day = _date.getDay();\n return day;\n}\n","\"use strict\";\nexports.getDate = getDate;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of month\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nfunction getDate(date) {\n const _date = (0, _index.toDate)(date);\n const dayOfMonth = _date.getDate();\n return dayOfMonth;\n}\n","\"use strict\";\nexports.getMonth = getMonth;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nfunction getMonth(date) {\n const _date = (0, _index.toDate)(date);\n const month = _date.getMonth();\n return month;\n}\n","\"use strict\";\nexports.getQuarter = getQuarter;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nfunction getQuarter(date) {\n const _date = (0, _index.toDate)(date);\n const quarter = Math.trunc(_date.getMonth() / 3) + 1;\n return quarter;\n}\n","\"use strict\";\nexports.getYear = getYear;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nfunction getYear(date) {\n return (0, _index.toDate)(date).getFullYear();\n}\n","\"use strict\";\nexports.getTime = getTime;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The timestamp\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * const result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nfunction getTime(date) {\n const _date = (0, _index.toDate)(date);\n const timestamp = _date.getTime();\n return timestamp;\n}\n","\"use strict\";\nexports.setSeconds = setSeconds;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param seconds - The seconds of the new date\n *\n * @returns The new date with the seconds set\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nfunction setSeconds(date, seconds) {\n const _date = (0, _index.toDate)(date);\n _date.setSeconds(seconds);\n return _date;\n}\n","\"use strict\";\nexports.setMinutes = setMinutes;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param minutes - The minutes of the new date\n *\n * @returns The new date with the minutes set\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nfunction setMinutes(date, minutes) {\n const _date = (0, _index.toDate)(date);\n _date.setMinutes(minutes);\n return _date;\n}\n","\"use strict\";\nexports.setHours = setHours;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param hours - The hours of the new date\n *\n * @returns The new date with the hours set\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nfunction setHours(date, hours) {\n const _date = (0, _index.toDate)(date);\n _date.setHours(hours);\n return _date;\n}\n","\"use strict\";\nexports.getDaysInMonth = getDaysInMonth;\nvar _index = require(\"./toDate.js\");\nvar _index2 = require(\"./constructFrom.js\");\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nfunction getDaysInMonth(date) {\n const _date = (0, _index.toDate)(date);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = (0, _index2.constructFrom)(date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n","\"use strict\";\nexports.setQuarter = setQuarter;\nvar _index = require(\"./setMonth.js\");\nvar _index2 = require(\"./toDate.js\");\n\n/**\n * @name setQuarter\n * @category Quarter Helpers\n * @summary Set the year quarter to the given date.\n *\n * @description\n * Set the year quarter to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param quarter - The quarter of the new date\n *\n * @returns The new date with the quarter set\n *\n * @example\n * // Set the 2nd quarter to 2 July 2014:\n * const result = setQuarter(new Date(2014, 6, 2), 2)\n * //=> Wed Apr 02 2014 00:00:00\n */\nfunction setQuarter(date, quarter) {\n const _date = (0, _index2.toDate)(date);\n const oldQuarter = Math.trunc(_date.getMonth() / 3) + 1;\n const diff = quarter - oldQuarter;\n return (0, _index.setMonth)(_date, _date.getMonth() + diff * 3);\n}\n","\"use strict\";\nexports.setYear = setYear;\nvar _index = require(\"./constructFrom.js\");\nvar _index2 = require(\"./toDate.js\");\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param year - The year of the new date\n *\n * @returns The new date with the year set\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nfunction setYear(date, year) {\n const _date = (0, _index2.toDate)(date);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+_date)) {\n return (0, _index.constructFrom)(date, NaN);\n }\n\n _date.setFullYear(year);\n return _date;\n}\n","\"use strict\";\nexports.min = min;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Returns the earliest of the given dates.\n *\n * @description\n * Returns the earliest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dates - The dates to compare\n *\n * @returns The earliest of the dates\n *\n * @example\n * // Which of these dates is the earliest?\n * const result = min([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Wed Feb 11 1987 00:00:00\n */\nfunction min(dates) {\n let result;\n\n dates.forEach((dirtyDate) => {\n const date = (0, _index.toDate)(dirtyDate);\n if (!result || result > date || isNaN(+date)) {\n result = date;\n }\n });\n\n return result || new Date(NaN);\n}\n","\"use strict\";\nexports.max = max;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dates - The dates to compare\n *\n * @returns The latest of the dates\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\nfunction max(dates) {\n let result;\n dates.forEach(function (dirtyDate) {\n const currentDate = (0, _index.toDate)(dirtyDate);\n\n if (\n result === undefined ||\n result < currentDate ||\n isNaN(Number(currentDate))\n ) {\n result = currentDate;\n }\n });\n\n return result || new Date(NaN);\n}\n","\"use strict\";\nexports.differenceInCalendarMonths = differenceInCalendarMonths;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nfunction differenceInCalendarMonths(dateLeft, dateRight) {\n const _dateLeft = (0, _index.toDate)(dateLeft);\n const _dateRight = (0, _index.toDate)(dateRight);\n\n const yearDiff = _dateLeft.getFullYear() - _dateRight.getFullYear();\n const monthDiff = _dateLeft.getMonth() - _dateRight.getMonth();\n\n return yearDiff * 12 + monthDiff;\n}\n","\"use strict\";\nexports.differenceInCalendarYears = differenceInCalendarYears;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nfunction differenceInCalendarYears(dateLeft, dateRight) {\n const _dateLeft = (0, _index.toDate)(dateLeft);\n const _dateRight = (0, _index.toDate)(dateRight);\n\n return _dateLeft.getFullYear() - _dateRight.getFullYear();\n}\n","\"use strict\";\nexports.startOfMonth = startOfMonth;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfMonth(date) {\n const _date = (0, _index.toDate)(date);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n","\"use strict\";\nexports.endOfDay = endOfDay;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nfunction endOfDay(date) {\n const _date = (0, _index.toDate)(date);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n","\"use strict\";\nexports.endOfWeek = endOfWeek;\nvar _index = require(\"./toDate.js\");\n\nvar _index2 = require(\"./_lib/defaultOptions.js\");\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfWeek(date, options) {\n const defaultOptions = (0, _index2.getDefaultOptions)();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = (0, _index.toDate)(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n","\"use strict\";\nexports.endOfMonth = endOfMonth;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nfunction endOfMonth(date) {\n const _date = (0, _index.toDate)(date);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n","\"use strict\";\nexports.endOfYear = endOfYear;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nfunction endOfYear(date) {\n const _date = (0, _index.toDate)(date);\n const year = _date.getFullYear();\n _date.setFullYear(year + 1, 0, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n","\"use strict\";\nexports.isEqual = isEqual;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual(leftDate, rightDate) {\n const _dateLeft = (0, _index.toDate)(leftDate);\n const _dateRight = (0, _index.toDate)(rightDate);\n return +_dateLeft === +_dateRight;\n}\n","\"use strict\";\nexports.isSameDay = isSameDay;\nvar _index = require(\"./startOfDay.js\");\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same day (and year and month)\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nfunction isSameDay(dateLeft, dateRight) {\n const dateLeftStartOfDay = (0, _index.startOfDay)(dateLeft);\n const dateRightStartOfDay = (0, _index.startOfDay)(dateRight);\n\n return +dateLeftStartOfDay === +dateRightStartOfDay;\n}\n","\"use strict\";\nexports.isSameMonth = isSameMonth;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n *\n * @returns The dates are in the same month (and year)\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nfunction isSameMonth(dateLeft, dateRight) {\n const _dateLeft = (0, _index.toDate)(dateLeft);\n const _dateRight = (0, _index.toDate)(dateRight);\n return (\n _dateLeft.getFullYear() === _dateRight.getFullYear() &&\n _dateLeft.getMonth() === _dateRight.getMonth()\n );\n}\n","\"use strict\";\nexports.isSameYear = isSameYear;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n *\n * @returns The dates are in the same year\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nfunction isSameYear(dateLeft, dateRight) {\n const _dateLeft = (0, _index.toDate)(dateLeft);\n const _dateRight = (0, _index.toDate)(dateRight);\n return _dateLeft.getFullYear() === _dateRight.getFullYear();\n}\n","\"use strict\";\nexports.isSameQuarter = isSameQuarter;\nvar _index = require(\"./startOfQuarter.js\");\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to check\n * @param dateRight - The second date to check\n\n * @returns The dates are in the same quarter (and year)\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nfunction isSameQuarter(dateLeft, dateRight) {\n const dateLeftStartOfQuarter = (0, _index.startOfQuarter)(dateLeft);\n const dateRightStartOfQuarter = (0, _index.startOfQuarter)(dateRight);\n\n return +dateLeftStartOfQuarter === +dateRightStartOfQuarter;\n}\n","\"use strict\";\nexports.isAfter = isAfter;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter(date, dateToCompare) {\n const _date = (0, _index.toDate)(date);\n const _dateToCompare = (0, _index.toDate)(dateToCompare);\n return _date.getTime() > _dateToCompare.getTime();\n}\n","\"use strict\";\nexports.isBefore = isBefore;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore(date, dateToCompare) {\n const _date = (0, _index.toDate)(date);\n const _dateToCompare = (0, _index.toDate)(dateToCompare);\n return +_date < +_dateToCompare;\n}\n","\"use strict\";\nexports.isWithinInterval = isWithinInterval;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n * @param interval - The interval to check\n *\n * @returns The date is within the interval\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date })\n * // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end })\n * // => true\n */\nfunction isWithinInterval(date, interval) {\n const time = +(0, _index.toDate)(date);\n const [startTime, endTime] = [\n +(0, _index.toDate)(interval.start),\n +(0, _index.toDate)(interval.end),\n ].sort((a, b) => a - b);\n\n return time >= startTime && time <= endTime;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"longFormatters\", {\n enumerable: true,\n get: function () {\n return _index5.longFormatters;\n },\n});\nexports.parse = parse;\nObject.defineProperty(exports, \"parsers\", {\n enumerable: true,\n get: function () {\n return _index7.parsers;\n },\n});\nvar _index = require(\"./constructFrom.js\");\nvar _index2 = require(\"./getDefaultOptions.js\");\nvar _index3 = require(\"./_lib/defaultLocale.js\");\nvar _index4 = require(\"./toDate.js\");\n\nvar _index5 = require(\"./_lib/format/longFormatters.js\");\nvar _index6 = require(\"./_lib/protectedTokens.js\");\n\nvar _index7 = require(\"./parse/_lib/parsers.js\");\n\nvar _Setter = require(\"./parse/_lib/Setter.js\");\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(dateStr, formatStr, referenceDate, options) {\n const defaultOptions = (0, _index2.getDefaultOptions)();\n const locale =\n options?.locale ?? defaultOptions.locale ?? _index3.defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (formatStr === \"\") {\n if (dateStr === \"\") {\n return (0, _index4.toDate)(referenceDate);\n } else {\n return (0, _index.constructFrom)(referenceDate, NaN);\n }\n }\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n const setters = [new _Setter.DateToSystemTimezoneSetter()];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in _index5.longFormatters) {\n const longFormatter = _index5.longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n (0, _index6.isProtectedWeekYearToken)(token)\n ) {\n (0, _index6.warnOrThrowProtectedError)(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n (0, _index6.isProtectedDayOfYearToken)(token)\n ) {\n (0, _index6.warnOrThrowProtectedError)(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = _index7.parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return (0, _index.constructFrom)(referenceDate, NaN);\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return (0, _index.constructFrom)(referenceDate, NaN);\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return (0, _index.constructFrom)(referenceDate, NaN);\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = (0, _index4.toDate)(referenceDate);\n\n if (isNaN(date.getTime())) {\n return (0, _index.constructFrom)(referenceDate, NaN);\n }\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return (0, _index.constructFrom)(referenceDate, NaN);\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return (0, _index.constructFrom)(referenceDate, date);\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n","\"use strict\";\nexports.getDefaultOptions = getDefaultOptions;\n\nvar _index = require(\"./_lib/defaultOptions.js\");\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nfunction getDefaultOptions() {\n return Object.assign({}, (0, _index.getDefaultOptions)());\n}\n","\"use strict\";\nexports.parsers = void 0;\nvar _EraParser = require(\"./parsers/EraParser.js\");\nvar _YearParser = require(\"./parsers/YearParser.js\");\nvar _LocalWeekYearParser = require(\"./parsers/LocalWeekYearParser.js\");\nvar _ISOWeekYearParser = require(\"./parsers/ISOWeekYearParser.js\");\nvar _ExtendedYearParser = require(\"./parsers/ExtendedYearParser.js\");\nvar _QuarterParser = require(\"./parsers/QuarterParser.js\");\nvar _StandAloneQuarterParser = require(\"./parsers/StandAloneQuarterParser.js\");\nvar _MonthParser = require(\"./parsers/MonthParser.js\");\nvar _StandAloneMonthParser = require(\"./parsers/StandAloneMonthParser.js\");\nvar _LocalWeekParser = require(\"./parsers/LocalWeekParser.js\");\nvar _ISOWeekParser = require(\"./parsers/ISOWeekParser.js\");\nvar _DateParser = require(\"./parsers/DateParser.js\");\nvar _DayOfYearParser = require(\"./parsers/DayOfYearParser.js\");\nvar _DayParser = require(\"./parsers/DayParser.js\");\nvar _LocalDayParser = require(\"./parsers/LocalDayParser.js\");\nvar _StandAloneLocalDayParser = require(\"./parsers/StandAloneLocalDayParser.js\");\nvar _ISODayParser = require(\"./parsers/ISODayParser.js\");\nvar _AMPMParser = require(\"./parsers/AMPMParser.js\");\nvar _AMPMMidnightParser = require(\"./parsers/AMPMMidnightParser.js\");\nvar _DayPeriodParser = require(\"./parsers/DayPeriodParser.js\");\nvar _Hour1to12Parser = require(\"./parsers/Hour1to12Parser.js\");\nvar _Hour0to23Parser = require(\"./parsers/Hour0to23Parser.js\");\nvar _Hour0To11Parser = require(\"./parsers/Hour0To11Parser.js\");\nvar _Hour1To24Parser = require(\"./parsers/Hour1To24Parser.js\");\nvar _MinuteParser = require(\"./parsers/MinuteParser.js\");\nvar _SecondParser = require(\"./parsers/SecondParser.js\");\nvar _FractionOfSecondParser = require(\"./parsers/FractionOfSecondParser.js\");\nvar _ISOTimezoneWithZParser = require(\"./parsers/ISOTimezoneWithZParser.js\");\nvar _ISOTimezoneParser = require(\"./parsers/ISOTimezoneParser.js\");\nvar _TimestampSecondsParser = require(\"./parsers/TimestampSecondsParser.js\");\nvar _TimestampMillisecondsParser = require(\"./parsers/TimestampMillisecondsParser.js\");\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- It's ok, we want any here\nconst parsers = (exports.parsers = {\n G: new _EraParser.EraParser(),\n y: new _YearParser.YearParser(),\n Y: new _LocalWeekYearParser.LocalWeekYearParser(),\n R: new _ISOWeekYearParser.ISOWeekYearParser(),\n u: new _ExtendedYearParser.ExtendedYearParser(),\n Q: new _QuarterParser.QuarterParser(),\n q: new _StandAloneQuarterParser.StandAloneQuarterParser(),\n M: new _MonthParser.MonthParser(),\n L: new _StandAloneMonthParser.StandAloneMonthParser(),\n w: new _LocalWeekParser.LocalWeekParser(),\n I: new _ISOWeekParser.ISOWeekParser(),\n d: new _DateParser.DateParser(),\n D: new _DayOfYearParser.DayOfYearParser(),\n E: new _DayParser.DayParser(),\n e: new _LocalDayParser.LocalDayParser(),\n c: new _StandAloneLocalDayParser.StandAloneLocalDayParser(),\n i: new _ISODayParser.ISODayParser(),\n a: new _AMPMParser.AMPMParser(),\n b: new _AMPMMidnightParser.AMPMMidnightParser(),\n B: new _DayPeriodParser.DayPeriodParser(),\n h: new _Hour1to12Parser.Hour1to12Parser(),\n H: new _Hour0to23Parser.Hour0to23Parser(),\n K: new _Hour0To11Parser.Hour0To11Parser(),\n k: new _Hour1To24Parser.Hour1To24Parser(),\n m: new _MinuteParser.MinuteParser(),\n s: new _SecondParser.SecondParser(),\n S: new _FractionOfSecondParser.FractionOfSecondParser(),\n X: new _ISOTimezoneWithZParser.ISOTimezoneWithZParser(),\n x: new _ISOTimezoneParser.ISOTimezoneParser(),\n t: new _TimestampSecondsParser.TimestampSecondsParser(),\n T: new _TimestampMillisecondsParser.TimestampMillisecondsParser(),\n});\n","\"use strict\";\nexports.EraParser = void 0;\n\nvar _Parser = require(\"../Parser.js\");\n\nclass EraParser extends _Parser.Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\nexports.EraParser = EraParser;\n","\"use strict\";\nexports.transpose = transpose;\nvar _index = require(\"./constructFrom.js\");\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam DateInputType - The input `Date` type derived from the passed argument.\n * @typeParam DateOutputType - The output `Date` type derived from the passed constructor.\n *\n * @param fromDate - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nfunction transpose(fromDate, constructor) {\n const date =\n constructor instanceof Date\n ? (0, _index.constructFrom)(constructor, 0)\n : new constructor(0);\n date.setFullYear(\n fromDate.getFullYear(),\n fromDate.getMonth(),\n fromDate.getDate(),\n );\n date.setHours(\n fromDate.getHours(),\n fromDate.getMinutes(),\n fromDate.getSeconds(),\n fromDate.getMilliseconds(),\n );\n return date;\n}\n","\"use strict\";\nexports.YearParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nclass YearParser extends _Parser.Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(4, dateString),\n valueCallback,\n );\n case \"yo\":\n return (0, _utils.mapValue)(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(token.length, dateString),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = (0, _utils.normalizeTwoDigitYear)(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nexports.YearParser = YearParser;\n","\"use strict\";\nexports.LocalWeekYearParser = void 0;\nvar _index = require(\"../../../getWeekYear.js\");\n\nvar _index2 = require(\"../../../startOfWeek.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// Local week-numbering year\nclass LocalWeekYearParser extends _Parser.Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(4, dateString),\n valueCallback,\n );\n case \"Yo\":\n return (0, _utils.mapValue)(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(token.length, dateString),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = (0, _index.getWeekYear)(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = (0, _utils.normalizeTwoDigitYear)(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return (0, _index2.startOfWeek)(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return (0, _index2.startOfWeek)(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\nexports.LocalWeekYearParser = LocalWeekYearParser;\n","\"use strict\";\nexports.ISOWeekYearParser = void 0;\nvar _index = require(\"../../../startOfISOWeek.js\");\nvar _index2 = require(\"../../../constructFrom.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// ISO week-numbering year\nclass ISOWeekYearParser extends _Parser.Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return (0, _utils.parseNDigitsSigned)(4, dateString);\n }\n\n return (0, _utils.parseNDigitsSigned)(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = (0, _index2.constructFrom)(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return (0, _index.startOfISOWeek)(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.ISOWeekYearParser = ISOWeekYearParser;\n","\"use strict\";\nexports.ExtendedYearParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass ExtendedYearParser extends _Parser.Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return (0, _utils.parseNDigitsSigned)(4, dateString);\n }\n\n return (0, _utils.parseNDigitsSigned)(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\nexports.ExtendedYearParser = ExtendedYearParser;\n","\"use strict\";\nexports.QuarterParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass QuarterParser extends _Parser.Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return (0, _utils.parseNDigits)(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.QuarterParser = QuarterParser;\n","\"use strict\";\nexports.StandAloneQuarterParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass StandAloneQuarterParser extends _Parser.Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return (0, _utils.parseNDigits)(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.StandAloneQuarterParser = StandAloneQuarterParser;\n","\"use strict\";\nexports.MonthParser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass MonthParser extends _Parser.Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return (0, _utils.mapValue)(\n (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.month,\n dateString,\n ),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(2, dateString),\n valueCallback,\n );\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return (0, _utils.mapValue)(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\nexports.MonthParser = MonthParser;\n","\"use strict\";\nexports.StandAloneMonthParser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass StandAloneMonthParser extends _Parser.Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return (0, _utils.mapValue)(\n (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.month,\n dateString,\n ),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(2, dateString),\n valueCallback,\n );\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return (0, _utils.mapValue)(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.StandAloneMonthParser = StandAloneMonthParser;\n","\"use strict\";\nexports.LocalWeekParser = void 0;\nvar _index = require(\"../../../setWeek.js\");\nvar _index2 = require(\"../../../startOfWeek.js\");\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// Local week of year\nclass LocalWeekParser extends _Parser.Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.week,\n dateString,\n );\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return (0, _index2.startOfWeek)(\n (0, _index.setWeek)(date, value, options),\n options,\n );\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\nexports.LocalWeekParser = LocalWeekParser;\n","\"use strict\";\nexports.setWeek = setWeek;\nvar _index = require(\"./getWeek.js\");\nvar _index2 = require(\"./toDate.js\");\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nfunction setWeek(date, week, options) {\n const _date = (0, _index2.toDate)(date);\n const diff = (0, _index.getWeek)(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n","\"use strict\";\nexports.ISOWeekParser = void 0;\nvar _index = require(\"../../../setISOWeek.js\");\nvar _index2 = require(\"../../../startOfISOWeek.js\");\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// ISO week of year\nclass ISOWeekParser extends _Parser.Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.week,\n dateString,\n );\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return (0, _index2.startOfISOWeek)((0, _index.setISOWeek)(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.ISOWeekParser = ISOWeekParser;\n","\"use strict\";\nexports.setISOWeek = setISOWeek;\nvar _index = require(\"./getISOWeek.js\");\nvar _index2 = require(\"./toDate.js\");\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nfunction setISOWeek(date, week) {\n const _date = (0, _index2.toDate)(date);\n const diff = (0, _index.getISOWeek)(_date) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n","\"use strict\";\nexports.DateParser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nclass DateParser extends _Parser.Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.date,\n dateString,\n );\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = (0, _utils.isLeapYearIndex)(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.DateParser = DateParser;\n","\"use strict\";\nexports.DayOfYearParser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass DayOfYearParser extends _Parser.Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.dayOfYear,\n dateString,\n );\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = (0, _utils.isLeapYearIndex)(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.DayOfYearParser = DayOfYearParser;\n","\"use strict\";\nexports.DayParser = void 0;\nvar _index = require(\"../../../setDay.js\");\nvar _Parser = require(\"../Parser.js\");\n\n// Day of week\nclass DayParser extends _Parser.Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = (0, _index.setDay)(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\nexports.DayParser = DayParser;\n","\"use strict\";\nexports.LocalDayParser = void 0;\nvar _index = require(\"../../../setDay.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// Local day of week\nclass LocalDayParser extends _Parser.Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(token.length, dateString),\n valueCallback,\n );\n // 3rd\n case \"eo\":\n return (0, _utils.mapValue)(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = (0, _index.setDay)(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.LocalDayParser = LocalDayParser;\n","\"use strict\";\nexports.StandAloneLocalDayParser = void 0;\nvar _index = require(\"../../../setDay.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// Stand-alone local day of week\nclass StandAloneLocalDayParser extends _Parser.Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(token.length, dateString),\n valueCallback,\n );\n // 3rd\n case \"co\":\n return (0, _utils.mapValue)(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = (0, _index.setDay)(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\nexports.StandAloneLocalDayParser = StandAloneLocalDayParser;\n","\"use strict\";\nexports.ISODayParser = void 0;\nvar _index = require(\"../../../setISODay.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// ISO day of week\nclass ISODayParser extends _Parser.Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return (0, _utils.parseNDigits)(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return (0, _utils.mapValue)(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return (0, _utils.mapValue)(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return (0, _utils.mapValue)(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return (0, _utils.mapValue)(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = (0, _index.setISODay)(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\nexports.ISODayParser = ISODayParser;\n","\"use strict\";\nexports.setISODay = setISODay;\nvar _index = require(\"./addDays.js\");\nvar _index2 = require(\"./getISODay.js\");\nvar _index3 = require(\"./toDate.js\");\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nfunction setISODay(date, day) {\n const _date = (0, _index3.toDate)(date);\n const currentDay = (0, _index2.getISODay)(_date);\n const diff = day - currentDay;\n return (0, _index.addDays)(_date, diff);\n}\n","\"use strict\";\nexports.getISODay = getISODay;\nvar _index = require(\"./toDate.js\");\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nfunction getISODay(date) {\n const _date = (0, _index.toDate)(date);\n let day = _date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n}\n","\"use strict\";\nexports.AMPMParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass AMPMParser extends _Parser.Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\nexports.AMPMParser = AMPMParser;\n","\"use strict\";\nexports.AMPMMidnightParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass AMPMMidnightParser extends _Parser.Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\nexports.AMPMMidnightParser = AMPMMidnightParser;\n","\"use strict\";\nexports.DayPeriodParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// in the morning, in the afternoon, in the evening, at night\nclass DayPeriodParser extends _Parser.Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours((0, _utils.dayPeriodEnumToHours)(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\nexports.DayPeriodParser = DayPeriodParser;\n","\"use strict\";\nexports.Hour1to12Parser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass Hour1to12Parser extends _Parser.Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.hour12h,\n dateString,\n );\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\nexports.Hour1to12Parser = Hour1to12Parser;\n","\"use strict\";\nexports.Hour0to23Parser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass Hour0to23Parser extends _Parser.Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.hour23h,\n dateString,\n );\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\nexports.Hour0to23Parser = Hour0to23Parser;\n","\"use strict\";\nexports.Hour0To11Parser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass Hour0To11Parser extends _Parser.Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.hour11h,\n dateString,\n );\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\nexports.Hour0To11Parser = Hour0To11Parser;\n","\"use strict\";\nexports.Hour1To24Parser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass Hour1To24Parser extends _Parser.Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.hour24h,\n dateString,\n );\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\nexports.Hour1To24Parser = Hour1To24Parser;\n","\"use strict\";\nexports.MinuteParser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass MinuteParser extends _Parser.Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.minute,\n dateString,\n );\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\nexports.MinuteParser = MinuteParser;\n","\"use strict\";\nexports.SecondParser = void 0;\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass SecondParser extends _Parser.Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return (0, _utils.parseNumericPattern)(\n _constants.numericPatterns.second,\n dateString,\n );\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return (0, _utils.parseNDigits)(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\nexports.SecondParser = SecondParser;\n","\"use strict\";\nexports.FractionOfSecondParser = void 0;\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass FractionOfSecondParser extends _Parser.Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return (0, _utils.mapValue)(\n (0, _utils.parseNDigits)(token.length, dateString),\n valueCallback,\n );\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\nexports.FractionOfSecondParser = FractionOfSecondParser;\n","\"use strict\";\nexports.ISOTimezoneWithZParser = void 0;\nvar _index = require(\"../../../constructFrom.js\");\nvar _index2 = require(\"../../../_lib/getTimezoneOffsetInMilliseconds.js\");\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nclass ISOTimezoneWithZParser extends _Parser.Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.basic,\n dateString,\n );\n case \"XXXX\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.extended,\n dateString,\n );\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return (0, _index.constructFrom)(\n date,\n date.getTime() -\n (0, _index2.getTimezoneOffsetInMilliseconds)(date) -\n value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\nexports.ISOTimezoneWithZParser = ISOTimezoneWithZParser;\n","\"use strict\";\nexports.ISOTimezoneParser = void 0;\nvar _index = require(\"../../../constructFrom.js\");\nvar _index2 = require(\"../../../_lib/getTimezoneOffsetInMilliseconds.js\");\nvar _constants = require(\"../constants.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\n// Timezone (ISO-8601)\nclass ISOTimezoneParser extends _Parser.Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.basic,\n dateString,\n );\n case \"xxxx\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return (0, _utils.parseTimezonePattern)(\n _constants.timezonePatterns.extended,\n dateString,\n );\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return (0, _index.constructFrom)(\n date,\n date.getTime() -\n (0, _index2.getTimezoneOffsetInMilliseconds)(date) -\n value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\nexports.ISOTimezoneParser = ISOTimezoneParser;\n","\"use strict\";\nexports.TimestampSecondsParser = void 0;\nvar _index = require(\"../../../constructFrom.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass TimestampSecondsParser extends _Parser.Parser {\n priority = 40;\n\n parse(dateString) {\n return (0, _utils.parseAnyDigitsSigned)(dateString);\n }\n\n set(date, _flags, value) {\n return [\n (0, _index.constructFrom)(date, value * 1000),\n { timestampIsSet: true },\n ];\n }\n\n incompatibleTokens = \"*\";\n}\nexports.TimestampSecondsParser = TimestampSecondsParser;\n","\"use strict\";\nexports.TimestampMillisecondsParser = void 0;\nvar _index = require(\"../../../constructFrom.js\");\nvar _Parser = require(\"../Parser.js\");\n\nvar _utils = require(\"../utils.js\");\n\nclass TimestampMillisecondsParser extends _Parser.Parser {\n priority = 20;\n\n parse(dateString) {\n return (0, _utils.parseAnyDigitsSigned)(dateString);\n }\n\n set(date, _flags, value) {\n return [(0, _index.constructFrom)(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\nexports.TimestampMillisecondsParser = TimestampMillisecondsParser;\n","\"use strict\";\nexports.parseISO = parseISO;\nvar _index = require(\"./constants.js\");\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction parseISO(argument, options) {\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n const timestamp = date.getTime();\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n const dirtyDate = new Date(timestamp + time);\n // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n const result = new Date(0);\n result.setFullYear(\n dirtyDate.getUTCFullYear(),\n dirtyDate.getUTCMonth(),\n dirtyDate.getUTCDate(),\n );\n result.setHours(\n dirtyDate.getUTCHours(),\n dirtyDate.getUTCMinutes(),\n dirtyDate.getUTCSeconds(),\n dirtyDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * _index.millisecondsInHour +\n minutes * _index.millisecondsInMinute +\n seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return (\n sign *\n (hours * _index.millisecondsInHour + minutes * _index.millisecondsInMinute)\n );\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n","import {createElement,Component}from'react';import {findDOMNode}from'react-dom';function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n // Also cover shadowRoot node by checking current.host\n\n\n while (current.parentNode || current.host) {\n // Only check normal node without shadowRoot\n if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode || current.host;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};function autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();var passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = {};\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions.passive = !instance.props.preventDefault;\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n var componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a handleClickOutside(event) function for processing outside click events.\");\n };\n\n _this.__getComponentNode = function () {\n var instance = _this.getInstance();\n\n if (config && typeof config.setClickOutsideRef === 'function') {\n return config.setClickOutsideRef()(instance);\n }\n\n if (typeof instance.setClickOutsideRef === 'function') {\n return instance.setClickOutsideRef();\n }\n\n return findDOMNode(instance);\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.componentNode === null) return;\n if (_this.initTimeStamp > event.timeStamp) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n _this.initTimeStamp = performance.now();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error(\"WrappedComponent: \" + componentName + \" lacks a function for processing outside click events specified by the handleClickOutside config option.\");\n }\n }\n\n this.componentNode = this.__getComponentNode(); // return early so we dont initiate onClickOutside\n\n if (this.props.disableOnClickOutside) return;\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = this.__getComponentNode();\n }\n /**\n * Remove all document's event listeners for this component\n */\n ;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n }\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n ;\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _this$props = this.props;\n _this$props.excludeScrollbar;\n var props = _objectWithoutPropertiesLoose(_this$props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + componentName + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}export default onClickOutsideHOC;export{IGNORE_CLASS_NAME};","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\n\nexport { TYPEABLE_SELECTOR, activeElement, contains, getDocument, getPlatform, getTarget, getUserAgent, isAndroid, isEventTargetWithin, isJSDOM, isMac, isMouseLikePointerType, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, stopEvent };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n let htmlX = 0;\n let htmlY = 0;\n if (documentElement && !isOffsetParentAnElement && !isFixed) {\n const htmlRect = documentElement.getBoundingClientRect();\n htmlY = htmlRect.top + scroll.scrollTop;\n htmlX = htmlRect.left + scroll.scrollLeft -\n // RTL scrollbar.\n getWindowScrollBarX(documentElement, htmlRect);\n }\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlX;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlY;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle