{"version":3,"file":"static/chunks/7755.1dfcb85cf8bd63fd.js","mappings":"2XAUA,IAAMA,EAAa,OAAC,CAAEC,KAAAA,CAAI,CAAEC,MAAAA,CAAK,CAAEC,KAAAA,CAAI,CAAEC,KAAAA,CAAI,CAAE,CAAAC,EACrC,CAAEC,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,EAAe,UACvBC,EAAkBC,CAAAA,EAAAA,EAAAA,CAAAA,EAAeP,GACjC,CAACQ,EAAUC,EAAY,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAAS,IACnCC,EAAmBC,CAAAA,EAAAA,EAAAA,MAAAA,EAAO,MAI1BC,EAAUC,IAAWC,IAAAA,UAAoB,CAAE,CAC7C,CAACA,GAAAA,CAAAA,uBAA8B,CAAC,CAAEP,CACtC,GAEA,MACI,GAAAQ,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWN,YACZ,GAAAG,EAAAI,GAAA,EAACC,IAAAA,CAAEF,UAAWJ,IAAAA,gBAA0B,CAAEhB,KAAMA,WAC5C,GAAAiB,EAAAI,GAAA,EAACE,OAAAA,CAAKH,UAAU,mBAAWlB,MAE/B,GAAAe,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWJ,IAAAA,qBAA+B,WAC3C,GAAAC,EAAAI,GAAA,EAACF,MAAAA,CAAIC,UAAWJ,IAAAA,iBAA2B,UACtCT,GACG,GAAAU,EAAAI,GAAA,EAACG,EAAAA,CAAeA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAKjB,GAAAA,CAAiBkB,QAAS,QAGvD,GAAAR,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWJ,IAAAA,mBAA6B,WACzC,GAAAC,EAAAI,GAAA,EAACE,OAAAA,CAAKH,UAAWJ,IAAAA,eAAyB,UACrCX,EAAE,gBAEP,GAAAY,EAAAI,GAAA,EAACK,KAAAA,CAAGN,UAAWJ,IAAAA,iBAA2B,UAAGd,IAC7C,GAAAe,EAAAI,GAAA,EAACM,IAAAA,CAAEP,UAAWJ,IAAAA,gBAA0B,UAAGb,IAC3C,GAAAc,EAAAI,GAAA,EAACO,EAAAA,CAAaA,CAAAA,CACVC,SAAU,IACVC,OAAQrB,EAAW,OAAS,WAC5B,GAAAQ,EAAAI,GAAA,EAACF,MAAAA,CACGY,GAAI,cACJX,UAAWJ,IAAAA,0BAAoC,CAC/CgB,KAAK,SACLC,IAAKrB,WACJT,MAGT,GAAAc,EAAAI,GAAA,EAACa,SAAAA,CACGd,UAAWJ,IAAAA,kBAA4B,CACvCmB,QApCG,IAAMzB,EAAY,CAACD,GAqCtB2B,gBAAe,cACfC,gBAAe5B,EACf6B,gBAAc,OACdC,YAAAA,CACelC,EAAE,iBAAoB,yBAM7D,CAEAN,CAAAA,EAAWyC,SAAS,CAAG,CACnBxC,KAAMyC,IAAAA,MAAgB,CACtBxC,MAAOwC,IAAAA,MAAgB,CACvBvC,KAAMuC,IAAAA,MAAgB,CACtBtC,KAAMsC,IAAAA,MAAgB,EAG1B1C,EAAW2C,YAAY,CAAG,CACtB1C,KAAM,GACNC,MAAO,CAAC,EACRC,KAAM,GACNC,KAAM,EACV,6CExEA,IAAMwC,EAAqB,QAEnBC,EAFoB,CAAEC,MAAAA,CAAK,CAAEC,UAAAA,CAAS,CAAEC,QAAAA,CAAO,CAAEC,IAAAA,CAAG,CAAEC,KAAAA,CAAI,CAAE,CAAA7C,EAC1D,CAAEC,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,EAAe,UAW7B,OANIsC,EADA,QAASM,QAAUF,EACP,IAAIG,IAAIH,GAAKI,IAAI,CAGjBJ,EAAIK,OAAO,CAAC,gBAAiB,IAIzC,GAAApC,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWJ,IAAAA,kBAA4B,WACxC,GAAAC,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWJ,IAAAA,wBAAkC,WAC9C,GAAAC,EAAAI,GAAA,EAACiC,KAAAA,CAAGlC,UAAWJ,IAAAA,0BAAoC,UAC9CX,EAAE,+BAGP,GAAAY,EAAAC,IAAA,EAACqC,KAAAA,WACIV,GACG,GAAA5B,EAAAC,IAAA,EAACsC,KAAAA,CAAGpC,UAAWJ,IAAAA,wBAAkC,WAC7C,GAAAC,EAAAC,IAAA,EAACI,IAAAA,CACGF,UACIJ,IAAAA,4BAAsC,CAE1ChB,KAAM,SAAeyD,MAAA,CAANZ,aACf,GAAA5B,EAAAI,GAAA,EAACE,OAAAA,CACGH,UACIJ,IAAAA,wBAAkC,CAClC,IACAA,GAAAA,CAAAA,kCAEC,CAEL0C,cAAa,KAEhBb,KAEJC,GACG,GAAA7B,EAAAI,GAAA,EAACM,IAAAA,CACGP,UACIJ,IAAAA,wBAAkC,UAErC8B,OAKhBG,GACG,GAAAhC,EAAAI,GAAA,EAACmC,KAAAA,CAAGpC,UAAWJ,IAAAA,wBAAkC,UAC7C,GAAAC,EAAAC,IAAA,EAACI,IAAAA,CACGF,UACIJ,IAAAA,4BAAsC,CAE1ChB,KAAM,UAAeyD,MAAA,CAALR,aAChB,GAAAhC,EAAAI,GAAA,EAACE,OAAAA,CACGH,UACIJ,IAAAA,wBAAkC,CAClC,IACAA,GAAAA,CAAAA,iCAAwC,CAE5C0C,cAAa,KAEhBT,OAIZF,GACG,GAAA9B,EAAAI,GAAA,EAACmC,KAAAA,CAAGpC,UAAWJ,IAAAA,wBAAkC,UAC7C,GAAAC,EAAAC,IAAA,EAACI,IAAAA,CACGF,UACIJ,IAAAA,4BAAsC,CAE1ChB,KAAM+C,YACN,GAAA9B,EAAAI,GAAA,EAACE,OAAAA,CACGH,UACIJ,IAAAA,wBAAkC,CAClC,IACAA,GAAAA,CAAAA,mCAEC,CAEL0C,cAAa,KAEhBrD,EAAE,4CAOvB,GAAAY,EAAAI,GAAA,EAACF,MAAAA,CAAIC,UAAWJ,IAAAA,4BAAsC,UAClD,GAAAC,EAAAC,IAAA,EAACI,IAAAA,CAAEF,UAAWJ,IAAAA,wBAAkC,CAAEhB,KAAMgD,YACnDJ,EACD,GAAA3B,EAAAI,GAAA,EAACF,MAAAA,CACGC,UACIJ,IAAAA,wBAAkC,CAClC,IACAA,GAAAA,CAAAA,kCAAyC,CAE7C0C,cAAa,YAMrC,CAEAf,CAAAA,EAAmBH,SAAS,CAAG,CAC3BK,MAAOJ,IAAAA,MAAgB,CACvBQ,KAAMR,IAAAA,MAAgB,CACtBK,UAAWL,IAAAA,MAAgB,CAC3BM,QAASN,IAAAA,MAAgB,CACzBO,IAAKP,IAAAA,MAAgB,EAGzBE,EAAmBD,YAAY,CAAG,CAC9BG,MAAO,GACPI,KAAM,GACNH,UAAW,GACXC,QAAS,GACTC,IAAK,EACT,mCE3GA,IAAMW,EAAc,QAyCMC,KAzCL,CACjB7B,GAAAA,EAAK,CAAC,CACNiB,IAAAA,EAAM,EAAE,CACRa,MAAAA,EAAQ,EAAE,CACVC,cAAAA,EAAgB,EAAE,CAClBC,KAAAA,EAAO,CAAC,CAAC,CACTC,YAAAA,EAAc,CAAC,CAAC,CAChBC,SAAAA,EAAW,EAAE,CACbC,oBAAAA,EAAsB,EAAE,CACxBC,UAAAA,EAAY,CAAC,CAAC,CACdC,OAAAA,EAAS,CAAC,CAAC,CACXC,IAAAA,EAAM,CAAC,CAAC,CACRC,QAAAA,EAAU,CAAC,CAAC,CACZC,WAAAA,EAAa,CAAC,CAAC,CACfC,UAAAA,EAAY,EAAK,CACjBC,eAAAA,EAAiB,CAAC,CAAC,CACnBC,KAAAA,EAAO,CAAC,CAAC,CACZ,CAAAtE,EACS,CAAEC,EAAAA,CAAC,CAAE,CAAGC,CAAAA,EAAAA,EAAAA,EAAAA,IAEMwD,EAAca,IAAI,CAAC,GAAaC,QAAAA,EAAQC,IAAI,EAChE,IAAMC,EAAShB,EAAcO,GAAG,CAAC,GAC7BO,QAAAA,EAAQC,IAAI,CACN,GAAAE,EAAAC,CAAA,KAAAC,EAAAD,CAAA,KACOJ,GAAAA,CACHM,MAAO,CACHC,MAAOd,EAAIe,MAAM,CAACf,GAAG,CAAC,GAAW,GAAAU,EAAAC,CAAA,KAAAC,EAAAD,CAAA,KAC1BK,GAAAA,CACHC,SAAUD,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAMrC,GAAG,EAAG,KAAO3C,EAAE,uBAC/BL,KACIqF,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAMrC,GAAG,GACT,oCAAgDqC,MAAAA,CAAZA,EAAKE,GAAG,CAAC,KAAgBF,MAAAA,CAAbA,EAAKG,GAAG,CAAC,MAAgBH,MAAAA,CAAZA,EAAKE,GAAG,CAAC,KAAY9B,MAAA,CAAT4B,EAAKG,GAAG,CAAC,WAE1FC,OAAQpB,EAAIqB,gBAAgB,CAC5BC,OAAQ,EACZ,IAEJf,GAGJ,CAAEhB,MAAAA,CAAK,CAAE,CAAGgC,CAAAA,EAAAA,EAAAA,UAAAA,EAAWC,EAAAA,CAAkBA,GAAK,CAAC,EAC/CC,EAAgBlC,MAAAA,EAAAA,KAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EAAOmC,UAAU,GAAjBnC,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAmBoC,QAAQ,CAAC,iBAElDC,CAAAA,EAAAA,EAAAA,eAAAA,EAAgB,KAGR/C,OAAOgD,QAAQ,CAACC,MAAM,CAACC,OAAO,CAAC,YAAc,IAE7ClD,OAAOmD,OAAO,CAACC,YAAY,CAAC,CAAC,EAAG,GAAIpD,OAAOgD,QAAQ,CAACK,QAAQ,EAI5DrD,OAAOgD,QAAQ,CAACC,MAAM,CAACC,OAAO,CAAC,cAAgB,IAE/ClD,OAAOmD,OAAO,CAACC,YAAY,CAAC,GAAI,GAAIpD,OAAOgD,QAAQ,CAACK,QAAQ,CAEpE,EAAG,EAAE,EAELxC,EAAO,GAAAgB,EAAAC,CAAA,KAAAC,EAAAD,CAAA,KACAjB,GAAAA,CACHyC,mBACIxC,GAAeA,EAAYmB,KAAK,EAAInB,EAAYmB,KAAK,CAACsB,MAAM,CAAG,IAGvE,IAAMC,EAAW,CACb3E,GAAAA,EACAiB,IAAAA,CACJ,EAEMlC,EAAUC,IAAWC,IAAAA,WAAqB,CAAE,CAC9C,CAACA,GAAAA,CAAAA,sBAA6B,CAAC,CAAEqD,GAAO,CAACsC,CAAAA,EAAAA,EAAAA,CAAAA,EAAQtC,EAAIe,MAAM,EAC3D,CAACpE,GAAAA,CAAAA,yBAAgC,CAAC,CAAE+C,GAAQ4C,CAAAA,EAAAA,EAAAA,CAAAA,EAAQ5C,EAAK9D,KAAK,CAClE,GAEM2G,EAAiB,CAACD,CAAAA,EAAAA,EAAAA,CAAAA,EAAQtC,EAAIe,MAAM,EAE1C,MACI,GAAAnE,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWN,YACZ,GAAAG,EAAAI,GAAA,EAACwF,EAAAA,CAAWA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK7C,IACjB,GAAA/C,EAAAI,GAAA,EAACyF,EAAAA,CAAIA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK/C,GAAAA,CAAMgD,MAAO,MACvB,GAAA9F,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWJ,IAAAA,iBAA2B,WACvC,GAAAC,EAAAI,GAAA,EAACF,MAAAA,CAAIY,GAAG,iBACR,GAAAd,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWJ,IAAAA,sBAAgC,WAC5C,GAAAC,EAAAI,GAAA,EAAC2F,KAAAA,CAAG5F,UAAWJ,IAAAA,kBAA4B,UAAG6C,IAC7CI,GACG,GAAAhD,EAAAI,GAAA,EAACF,MAAAA,CACGC,UAAWJ,IAAAA,qBAA+B,CAC1CiG,wBAAyB,CAAEC,OAAQjD,CAAS,IAInDS,GAAQ,GAAAzD,EAAAI,GAAA,EAAC8F,EAAAA,CAAWA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAKzC,OAG9B,GAAAzD,EAAAC,IAAA,EAACC,MAAAA,CAAIC,UAAWJ,IAAAA,oBAA8B,WACzC8E,GACG,GAAA7E,EAAAI,GAAA,EAAC+F,EAAAA,CAAcA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CACXC,4BACIT,EACM,CAAC,gCAAgC,CACjC,EAAE,EAERF,IAGXE,GACG,GAAA3F,EAAAI,GAAA,EAACiG,EAAAA,CAAWA,CAAAA,CACR5B,iBAAkBrB,EAAIqB,gBAAgB,CACtCP,MAAOd,EAAIe,MAAM,CACjBmC,UAAWlD,EAAIkD,SAAS,MAKnC,CAACZ,CAAAA,EAAAA,EAAAA,CAAAA,EAAQpC,IAAeA,EAAWvE,IAAI,EACpC,GAAAiB,EAAAI,GAAA,EAACmG,EAAAA,CAAUA,CAAAA,CACPhD,UAAW,GACXrE,KAAMoE,EAAWV,KAAK,CACtB7D,KAAMuE,EAAWvE,IAAI,GAI5ByE,GAAkB,CAACkC,CAAAA,EAAAA,EAAAA,CAAAA,EAAQlC,IACxB,GAAAxD,EAAAI,GAAA,EAACmG,EAAAA,CAAUA,CAAAA,CACPhD,UAAW,GACXrE,KAAMsE,EAAeZ,KAAK,CAC1B7D,KAAMyE,EAAezE,IAAI,GAGhCwE,GAAa,GAAAvD,EAAAI,GAAA,EAACmG,EAAAA,CAAUA,CAAAA,CAAChD,UAAW,KAEpCN,GAAuBA,EAAoBuC,MAAM,CAAG,GACjD,GAAAxF,EAAAI,GAAA,EAACF,MAAAA,CACGC,UACIJ,IAAAA,kBAA4B,CAC5B,IACAA,GAAAA,CAAAA,8BAAqC,UAEzC,GAAAC,EAAAI,GAAA,EAACoG,EAAAA,CAAQA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAKvD,CAAmB,CAAC,EAAE,CAACgB,KAAK,QAKrDwC,MAAMC,OAAO,CAAC7C,IACX,GAAA7D,EAAAI,GAAA,EAACuG,EAAAA,CAAWA,CAAAA,CAACzC,MAAOL,EAAQ+C,SAAU,YAGzC3D,GAAuBA,EAAoBuC,MAAM,CAAG,GACjD,GAAAxF,EAAAI,GAAA,EAACF,MAAAA,CAAIC,UAAWJ,IAAAA,sBAAgC,UAC5C,GAAAC,EAAAI,GAAA,EAACF,MAAAA,CACGC,UACIJ,IAAAA,kBAA4B,CAC5B,IACAA,GAAAA,CAAAA,6BAAoC,UAExC,GAAAC,EAAAI,GAAA,EAACoG,EAAAA,CAAQA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAKvD,CAAmB,CAAC,EAAE,CAACgB,KAAK,OAKrD,CAACyB,CAAAA,EAAAA,EAAAA,CAAAA,EAAQvC,IAAW,GAAAnD,EAAAI,GAAA,EJtGlBtB,EIsG6BA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAKqE,IAEpC,CAACuC,CAAAA,EAAAA,EAAAA,CAAAA,EAAQrC,IAAY,CAACqC,CAAAA,EAAAA,EAAAA,CAAAA,EAAQrC,EAAQtB,GAAG,GACtC,GAAA/B,EAAAI,GAAA,EFtDDsB,EEsDoBA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK2B,IAG5B,GAAArD,EAAAI,GAAA,EAACyG,EAAAA,CAAoBA,CAAAA,CAACpB,SAAUA,EAAUqB,UAAWhG,IAEpD,CAAC4E,CAAAA,EAAAA,EAAAA,CAAAA,EAAQxC,IAAc,GAAAlD,EAAAI,GAAA,EAAC2G,EAAAA,CAAQA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,CAAAA,EAAK7D,MAGlD,CAEAR,CAAAA,EAAYnB,SAAS,CAAG,CACpBT,GAAIU,IAAAA,MAAgB,CAACwF,UAAU,CAC/BjF,IAAKP,IAAAA,MAAgB,CAACwF,UAAU,CAChCpE,MAAOpB,IAAAA,MAAgB,CAACwF,UAAU,CAClChE,SAAUxB,IAAAA,MAAgB,CAACwF,UAAU,CACrCxD,eAAgBhC,IAAAA,SAAmB,CAAC,CAACA,IAAAA,MAAgB,CAAEA,IAAAA,IAAc,CAAC,EACtEsB,KAAMtB,IAAAA,MAAgB,CACtB4B,IAAK5B,IAAAA,MAAgB,CACrBuB,YAAavB,IAAAA,MAAgB,CAC7BqB,cAAerB,IAAAA,SAAmB,CAAC,CAACA,IAAAA,KAAe,CAAEA,IAAAA,MAAgB,CAAC,EACtEyB,oBAAqBzB,IAAAA,KAAe,CACpC0B,UAAW1B,IAAAA,MAAgB,CAC3B6B,QAAS7B,IAAAA,MAAgB,CACzB2B,OAAQ3B,IAAAA,MAAgB,CACxB8B,WAAY9B,IAAAA,MAAgB,CAC5BiC,KAAMjC,IAAAA,SAAmB,CAAC,CAACA,IAAAA,MAAgB,CAAEA,IAAAA,IAAc,CAAC,EAC5D+B,UAAW/B,IAAAA,IAAc,EChN7B,IAAAyF,EDmNeC,CAAAA,EAAAA,EAAAA,YAAAA,EAAaxE,qBEpN5ByE,EAAAC,OAAA,EAAkB,6oBCAlBD,EAAAC,OAAA,EAAkB,ilCCAlBD,EAAAC,OAAA,EAAkB,0xBCKlB,SAAAC,EAAAxG,CAAA,EAEA,uBAAAA,GACAA,MAAAA,CAAA,CAAAA,EAAA2E,MAAA,KACA8B,SARAC,CAAA,EACA,IAAAC,EAAAC,WAAAF,GACA,OAAAG,MAAAF,IAAAG,SAAAH,EACA,EAKA3G,EAAA+G,SAAA,GAAA/G,EAAA2E,MAAA,IACA,CACA,SAAAqC,EAAAC,CAAA,CAAAjH,CAAA,CAAAkH,CAAA,EAGA,IAAAlH,GACA,CAAAkH,GACAD,CAAAA,MAAAA,EAAA,OAAAA,EAAAE,KAAA,GACA,CAAAF,MAAAA,EAAA,OAAAA,EAAAG,QAAA,CAAAzC,MAAA,KACAsC,CAAAA,EAAAE,KAAA,CAAAE,OAAA,QAEA,CAQA,IAAAC,EAAA,CACAC,UAAA,gBACAC,YAAA,oBACAC,cAAA,sBACAC,sBAAA,gCACAC,sBAAA,gCACAC,0BAAA,oCACAC,OAAA,aACAC,iBAAA,0BACAC,iBAAA,0BACAC,qBAAA,6BACA,EACA,SAAAC,EAAAC,CAAA,CAAAlI,CAAA,EACA,OACAkI,EAAAL,MAAA,CACA7H,IAAAA,GAAAkI,EAAAJ,gBAAA,CACA,iBAAA9H,GAAAA,EAAA,EACAkI,EAAAF,oBAAA,CACA,KACAhI,SAAAA,GAAAkI,EAAAH,gBAAA,CACA,CACAI,MAAA,IAAAC,GACAC,IAAA,KACA,CAEA,IAAAC,EAAA,CACA,iBACA,wBACA,yBACA,WACA,YACA,mBACA,aACA,QACA,WACA,SACA,SACA,uBACA,yBACA,QACA,qBACA,CACAxI,EAAsByI,EAAAC,UAAgB,EAAAC,EAAAtI,KAGtC,IAAYuI,eAAAA,EAAA,GAAAR,sBAAAA,EAAA,EAAkD,CAAAS,uBAAAA,EAAA,GAAAvB,SAAAA,CAAA,CAAA9H,UAAAA,EAAA,GAAAsJ,iBAAAA,CAAA,CAAAC,MAAAC,EAAA,EAAA5B,mBAAAA,EAAA,GAAAnH,SAAAgJ,EAAA,IAAAC,OAAAA,EAAA,OAAAhJ,OAAAA,CAAA,CAAAiJ,qBAAAA,CAAA,CAAAC,uBAAAA,CAAA,CAAA/B,MAAAA,CAAA,CAAAgC,WAAAA,CAAA,EAAyPV,EACvTW,EAAAC,OAAAC,MAAA,IAAqCb,GACrCH,EAAAiB,OAAA,KACA,OAAAH,CAAA,CAAAI,EAAA,GAGA,IAAAC,EAAuB,GAAAlB,EAAAxJ,MAAA,EAAMiB,GAC7B0J,EAA2B,GAAAnB,EAAAxJ,MAAA,EAAM,MACjC4K,EAAsC,GAAApB,EAAAxJ,MAAA,IACtC6K,EAAsB,GAAArB,EAAAxJ,MAAA,IACtB8K,EAAyB,GAAAtB,EAAAxJ,MAAA,EAAMsK,OAAAC,MAAA,CAAAD,OAAAC,MAAA,IAA+BhC,GAAAY,IAC9D4B,EAAA,oBAAA1I,OACA2I,EAAiC,GAAAxB,EAAAxJ,MAAA,EAAM+K,EAAAA,KAAA1I,OAAA4I,UAAA,EACvC5I,OAAA4I,UAAA,6BAAAC,OAAA,EAEApB,EAAAkB,EAAAG,OAAA,GAAApB,EACA/I,EAAAgK,EAAAG,OAAA,GAAAnB,EACAoB,EAAAnK,EACAoK,EAAA,SACA,kBAAApK,GAEAmK,EAAAnK,EAAA,IAAAA,EACAoK,EAAA,UAEA5D,EAAA2D,KAEAA,EAAAnK,OAAAA,EAAA,EAAAA,EACAoK,EAAA,UAEA,IAAAC,EAAAC,EAAA,CAA8C,GAAA/B,EAAA1J,QAAA,EAAQsL,GACtD,CAAAI,EAAAC,EAAA,CAAoC,GAAAjC,EAAA1J,QAAA,EAAQuL,GAC5C,CAAAK,EAAAC,EAAA,CAAgD,GAAAnC,EAAA1J,QAAA,EAAQ,IACxD,CAAA8L,EAAAC,EAAA,CAAoE,GAAArC,EAAA1J,QAAA,EAAQoJ,EAAA4B,EAAAK,OAAA,CAAAlK,IAExE,GAAAuI,EAAAsC,SAAA,EAAS,KAEb7D,EAAA0C,EAAAQ,OAAA,CAAAG,EAAAnD,EAGA,EAAK,IAED,GAAAqB,EAAAsC,SAAA,EAAS,KACb,GAAA7K,IAAAyJ,EAAAS,OAAA,EAAAR,EAAAQ,OAAA,MA9FAjD,MAsGA6D,EACAC,EAvGA9D,EA+FAyC,EAAAQ,OAAA,CA5FA,IA4FAT,EAAAS,OAAA,EA5FAjD,CAAAA,MAAAA,EAAA,OAAAA,EAAAE,KAAA,GACAF,CAAAA,EAAAE,KAAA,CAAAE,OAAA,KA6FAqC,EAAAQ,OAAA,CAAA/C,KAAA,CAAAoD,QAAA,UACA,IAAAS,EAAAtB,EAAAQ,OAAA,CAAAe,YAAA,CACAvB,EAAAQ,OAAA,CAAA/C,KAAA,CAAAoD,QAAA,IAEA,IAAAW,EAAAnL,EAAA8I,EAGAsC,EAAA,SAEAC,EAAA3B,SAAAA,EAAAS,OAAA,CACA,iBAAAlK,EAGA+K,EADAD,EAAA9K,EAAA,IAAAA,EAGAwG,EAAAxG,GAGA+K,EADAD,EAAA9K,OAAAA,EAAA,EAAAA,GAMA8K,EAAAE,EACAD,EAAA,OACAI,EAAAE,KAAAA,GAEAD,IAEAL,EAAAD,EAGAA,EAAAE,GAGA,IAAAM,EAAA,CACAzB,EAAAK,OAAA,CAAA3C,SAAA,CACA,CAAAkC,SAAAA,EAAAS,OAAA,EAAAlK,EAAAyJ,EAAAS,OAAA,GACAL,EAAAK,OAAA,CAAA1C,WAAA,CACA,CAAAxH,SAAAA,GAAAA,EAAAyJ,EAAAS,OAAA,GACAL,EAAAK,OAAA,CAAAzC,aAAA,CACAsD,IAAAA,GAAAlB,EAAAK,OAAA,CAAAxC,qBAAA,CACAqD,SAAAA,GACAlB,EAAAK,OAAA,CAAAvC,qBAAA,CACA,iBAAAoD,GAAAA,EAAA,EACAlB,EAAAK,OAAA,CAAAtC,yBAAA,CACA,KACA,CACAO,MAAA,IAAAC,GACAC,IAAA,MAEAkD,EAAAtD,EAAA4B,EAAAK,OAAA,CAAAa,GAIAT,EAAAQ,GACAN,EAAA,UACAE,EAAA,CAAAU,GACAR,EAAAU,GAEAE,aAAA5B,EAAAM,OAAA,EACAsB,aAAA7B,EAAAO,OAAA,EACAkB,GAKAxB,EAAAM,OAAA,CAAAuB,WAAA,KACAnB,EAAAS,GACAP,EAAAW,GACAT,EALA,IAOAxB,MAAAA,GAAAA,EAAA6B,EACA,EAAiB,IAEjBpB,EAAAO,OAAA,CAAAuB,WAAA,KACAf,EAAA,IACAE,EAAAW,GAGAvE,EAAA0C,EAAAQ,OAAA,CAAAa,EAAA7D,GAEA+B,MAAAA,GAAAA,EAAA8B,EACA,EAAiBG,KAIjBhC,MAAAA,GAAAA,EAAA4B,GAEAlB,EAAAM,OAAA,CAAAuB,WAAA,KACAnB,EAAAS,GACAP,EAAAW,GACAT,EAAA,IACAE,EAAAW,GAIA,SAAAvL,GAEAgH,EAAA0C,EAAAQ,OAAA,CAAAY,EAAA5D,GAGA+B,MAAAA,GAAAA,EAAA6B,EACA,EAAiBI,GAEjB,CAEA,OADAzB,EAAAS,OAAA,CAAAlK,EACA,KACAwL,aAAA5B,EAAAM,OAAA,EACAsB,aAAA7B,EAAAO,OAAA,CACA,CAGA,EAAK,CAAAlK,EAAA,EAEL,IAAA0L,EAAArC,OAAAC,MAAA,CAAAD,OAAAC,MAAA,IAAyDnC,GAAA,CAAYnH,OAAAqK,EAAAE,SAAAA,GAAApD,CAAAA,MAAAA,EAAA,OAAAA,EAAAoD,QAAA,IACrEE,GAAA9B,IACA+C,EAAAC,UAAA,WAA8C5L,EAAS,KAAKiJ,EAAA,CAAQ,EAAEH,EAAM,IAE5E1B,CAAAA,MAAAA,EAAA,OAAAA,EAAAwE,UAAA,GACAD,CAAAA,EAAAC,UAAA,IAA2CxE,EAAAwE,UAAA,CAAiB,IAAID,EAAAC,UAAA,CAA0B,GAG1FD,EAAAE,gBAAA,CAAAF,EAAAC,UAAA,EAEA,IAAAE,EAAA,GACAnD,IACAmD,EAAAF,UAAA,YAA6C5L,EAAS,KAAKiJ,EAAA,CAAQ,EAAEH,EAAM,IAE3EgD,EAAAD,gBAAA,CAAAC,EAAAF,UAAA,CACA,IAAAtB,GACAwB,CAAAA,EAAAC,OAAA,KAKA,IAAAC,EAAAC,KADA,IAAA5C,CAAA,gBAEAA,CAAA,gBACApJ,IAAAA,EACA,OAAYuI,EAAA0D,aAAmB,OAAA5C,OAAAC,MAAA,IAAwBF,EAAA,CAAc,cAAA2C,EAAAzM,UAAA,GAAyCqL,EAAA,CAA0B,EAAErL,EAAU,EAAA6H,MAAAuE,EAAAvL,IAAAA,CAAA,GAC5IoI,EAAA0D,aAAmB,QAAU3M,UAAAsJ,EAAAzB,MAAA0E,EAAA1L,IAAA,IACrCuJ,EAAAQ,OAAA,CAAAgC,EACA/C,GACAA,CAAAA,EAAAe,OAAA,CAAAgC,CAAA,CAEA,GAAe9E,GACf,EACA+E,CAAAA,EAAAC,CAAA,CAAetM","sources":["webpack://_N_E/./components/AuthorCard/AuthorCard.js","webpack://_N_E/./components/AuthorCard/index.js","webpack://_N_E/./components/PartnerInformation/PartnerInformation.js","webpack://_N_E/./components/PartnerInformation/index.js","webpack://_N_E/./containers/ArticlePage/ArticlePage.js","webpack://_N_E/./containers/ArticlePage/index.js","webpack://_N_E/./components/AuthorCard/AuthorCard.module.scss","webpack://_N_E/./components/PartnerInformation/PartnerInformation.module.scss","webpack://_N_E/./containers/ArticlePage/ArticlePage.module.scss","webpack://_N_E/./node_modules/react-animate-height/dist/esm/index.js"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'next-i18next';\nimport AnimateHeight from 'react-animate-height';\nimport classNames from 'classnames';\n\nimport { serializeImage } from '../../utils/SerializeImage';\nimport BackgroundImage from '../BackgroundImage';\nimport styles from './AuthorCard.module.scss';\n\nconst AuthorCard = ({ href, image, name, text }) => {\n    const { t } = useTranslation('common');\n    const serializedImage = serializeImage(image);\n    const [expanded, setExpanded] = useState(false);\n    const itemContainerRef = useRef(null);\n\n    const toggleExpanded = () => setExpanded(!expanded);\n\n    const classes = classNames(styles['AuthorCard'], {\n        [styles['AuthorCard--expanded']]: expanded,\n    });\n\n    return (\n        <div className={classes}>\n            <a className={styles['AuthorCard__Link']} href={href}>\n                <span className=\"sr-only\">{name}</span>\n            </a>\n            <div className={styles['AuthorCard__Container']}>\n                <div className={styles['AuthorCard__Image']}>\n                    {serializedImage && (\n                        <BackgroundImage {...serializedImage} quality={60} />\n                    )}\n                </div>\n                <div className={styles['AuthorCard__Content']}>\n                    <span className={styles['AuthorCard__Tag']}>\n                        {t('author.tag')}\n                    </span>\n                    <h3 className={styles['AuthorCard__Title']}>{name}</h3>\n                    <p className={styles['AuthorCard__Text']}>{text}</p>\n                    <AnimateHeight\n                        duration={350}\n                        height={expanded ? 'auto' : 0}>\n                        <div\n                            id={'author-text'}\n                            className={styles['AuthorCard__ExpandableText']}\n                            role=\"region\"\n                            ref={itemContainerRef}>\n                            {text}\n                        </div>\n                    </AnimateHeight>\n                    <button\n                        className={styles['AuthorCard__Toggle']}\n                        onClick={toggleExpanded}\n                        aria-controls={'author-text'}\n                        aria-expanded={expanded}\n                        aria-haspopup=\"true\"\n                        aria-label={\n                            expanded ? t('author.close') : t('author.open')\n                        }></button>\n                </div>\n            </div>\n        </div>\n    );\n};\n\nAuthorCard.propTypes = {\n    href: PropTypes.string,\n    image: PropTypes.object,\n    name: PropTypes.string,\n    text: PropTypes.string,\n};\n\nAuthorCard.defaultProps = {\n    href: '',\n    image: {},\n    name: '',\n    text: '',\n};\n\nexport default AuthorCard;\n","import AuthorCard from './AuthorCard';\n\nexport default AuthorCard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'next-i18next';\nimport styles from './PartnerInformation.module.scss';\n\nconst PartnerInformation = ({ phone, phoneText, address, url, mail }) => {\n    const { t } = useTranslation('common');\n    let prettyUrl;\n\n    // prettyUrl = from protocol://some.com/url/hello/ -> some.com/url/hello/\n    if ('URL' in window && url) {\n        prettyUrl = new URL(url).host;\n    } else {\n        // IE 11\n        prettyUrl = url.replace(/(^\\w+:|^)\\/\\//, '');\n    }\n\n    return (\n        <div className={styles['PartnerInformation']}>\n            <div className={styles['PartnerInformation__Info']}>\n                <h2 className={styles['PartnerInformation__Header']}>\n                    {t('partnerInformation.header')}\n                </h2>\n\n                <ul>\n                    {phone && (\n                        <li className={styles['PartnerInformation__Item']}>\n                            <a\n                                className={\n                                    styles['PartnerInformation__ListLink']\n                                }\n                                href={`tel://${phone}`}>\n                                <span\n                                    className={\n                                        styles['PartnerInformation__Icon'] +\n                                        ' ' +\n                                        styles[\n                                            'PartnerInformation__Icon--Phone'\n                                        ]\n                                    }\n                                    aria-hidden={true}\n                                />\n                                {phone}\n                            </a>\n                            {phoneText && (\n                                <p\n                                    className={\n                                        styles['PartnerInformation__Text']\n                                    }>\n                                    {phoneText}\n                                </p>\n                            )}\n                        </li>\n                    )}\n                    {mail && (\n                        <li className={styles['PartnerInformation__Item']}>\n                            <a\n                                className={\n                                    styles['PartnerInformation__ListLink']\n                                }\n                                href={`mailto:${mail}`}>\n                                <span\n                                    className={\n                                        styles['PartnerInformation__Icon'] +\n                                        ' ' +\n                                        styles['PartnerInformation__Icon--Mail']\n                                    }\n                                    aria-hidden={true}\n                                />\n                                {mail}\n                            </a>\n                        </li>\n                    )}\n                    {address && (\n                        <li className={styles['PartnerInformation__Item']}>\n                            <a\n                                className={\n                                    styles['PartnerInformation__ListLink']\n                                }\n                                href={address}>\n                                <span\n                                    className={\n                                        styles['PartnerInformation__Icon'] +\n                                        ' ' +\n                                        styles[\n                                            'PartnerInformation__Icon--Marker'\n                                        ]\n                                    }\n                                    aria-hidden={true}\n                                />\n                                {t('partnerInformation.directions')}\n                            </a>\n                        </li>\n                    )}\n                </ul>\n            </div>\n\n            <div className={styles['PartnerInformation__LinkWrap']}>\n                <a className={styles['PartnerInformation__Link']} href={url}>\n                    {prettyUrl}\n                    <div\n                        className={\n                            styles['PartnerInformation__Icon'] +\n                            ' ' +\n                            styles['PartnerInformation__Icon--Arrow']\n                        }\n                        aria-hidden={true}\n                    />\n                </a>\n            </div>\n        </div>\n    );\n};\n\nPartnerInformation.propTypes = {\n    phone: PropTypes.string,\n    mail: PropTypes.string,\n    phoneText: PropTypes.string,\n    address: PropTypes.string,\n    url: PropTypes.string,\n};\n\nPartnerInformation.defaultProps = {\n    phone: '',\n    mail: '',\n    phoneText: '',\n    address: '',\n    url: '',\n};\n\nexport default PartnerInformation;\n","import PartnerInformation from './PartnerInformation';\n\nexport default PartnerInformation;\n","import React, { useLayoutEffect, useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { useTranslation } from 'next-i18next';\nimport { basePageWrap } from '../BasePage';\nimport styles from './ArticlePage.module.scss';\nimport isEmpty from '../../utils/isEmpty';\nimport { CookieStateContext } from '../BasePage/state';\nimport Hero from '../../components/Hero';\nimport BookmarkButton from '../../components/BookmarkButton';\nimport ShareFeedbackSegment from '../../components/ShareFeedbackSegment';\nimport StreamField from '../../components/StreamField';\nimport Breadcrumbs from '../../components/Breadcrumbs';\nimport AuthorCard from '../../components/AuthorCard';\nimport LinkList from '../../components/LinkList';\nimport Sponsors from '../../components/Sponsors';\nimport PartnerInformation from '../../components/PartnerInformation';\nimport BackBanner from '../../components/BackBanner';\nimport MapExpander from '../../components/MapExpander';\nimport ArticleDate from '../../components/ArticleDate';\n\nconst ArticlePage = ({\n    id = 0,\n    url = '',\n    title = '',\n    contentBlocks = [],\n    hero = {},\n    breadcrumbs = {},\n    preamble = '',\n    linksDocumentsBlock = [],\n    sponsored = {},\n    author = {},\n    map = {},\n    partner = {},\n    partOfPage = {},\n    backToMap = false,\n    backToWhatToDo = {},\n    date = {},\n}) => {\n    const { t } = useTranslation();\n\n    const hasMapBlock = contentBlocks.find((content) => content.type === 'map');\n    const blocks = contentBlocks.map((content) =>\n        content.type === 'map'\n            ? {\n                  ...content,\n                  value: {\n                      items: map.coords.map((item) => ({\n                          ...item,\n                          readMore: item?.url ? null : t('mapExpander.goToMap'),\n                          href:\n                              item?.url ||\n                              `https://maps.google.com/maps/dir/${item.lat},${item.lng}/@${item.lat},${item.lng},16z`,\n                      })),\n                      apiKey: map.googleMapsApiKey,\n                      newTab: true,\n                  },\n              }\n            : content\n    );\n\n    const { state } = useContext(CookieStateContext) || {};\n    const cookieConsent = state?.categories?.includes('functionality');\n\n    useLayoutEffect(() => {\n        if (\n            typeof window !== 'undefined' &&\n            window.location.search.indexOf('from_map') > -1\n        ) {\n            window.history.replaceState({}, '', window.location.pathname);\n        }\n        if (\n            typeof window !== 'undefined' &&\n            window.location.search.indexOf('what_to_do') > -1\n        ) {\n            window.history.replaceState('', '', window.location.pathname);\n        }\n    }, []);\n\n    hero = {\n        ...hero,\n        isBelowBreadcrumbs:\n            breadcrumbs && breadcrumbs.items && breadcrumbs.items.length > 1,\n    };\n\n    const bookmark = {\n        id,\n        url,\n    };\n\n    const classes = classNames(styles['ArticlePage'], {\n        [styles['ArticlePage--HasMap']]: map && !isEmpty(map.coords),\n        [styles['ArticlePage--Imageless']]: hero && isEmpty(hero.image),\n    });\n\n    const hasMapExpander = !isEmpty(map.coords);\n\n    return (\n        <div className={classes}>\n            <Breadcrumbs {...breadcrumbs} />\n            <Hero {...hero} clean={true} />\n            <div className={styles['ArticlePage__Main']}>\n                <div id=\"main-content\" />\n                <div className={styles['ArticlePage__Container']}>\n                    <h1 className={styles['ArticlePage__Title']}>{title}</h1>\n                    {preamble && (\n                        <div\n                            className={styles['ArticlePage__Preamble']}\n                            dangerouslySetInnerHTML={{ __html: preamble }}\n                        />\n                    )}\n\n                    {date && <ArticleDate {...date} />}\n                </div>\n\n                <div className={styles['ArticlePage__Actions']}>\n                    {cookieConsent && (\n                        <BookmarkButton\n                            untranslatedButtonModifiers={\n                                hasMapExpander\n                                    ? ['Button--WithMapExpanderHeight']\n                                    : []\n                            }\n                            {...bookmark}\n                        />\n                    )}\n                    {hasMapExpander && (\n                        <MapExpander\n                            googleMapsApiKey={map.googleMapsApiKey}\n                            items={map.coords}\n                            zoomLevel={map.zoomLevel}\n                        />\n                    )}\n                </div>\n\n                {!isEmpty(partOfPage) && partOfPage.href && (\n                    <BackBanner\n                        backToMap={false}\n                        text={partOfPage.title}\n                        href={partOfPage.href}\n                    />\n                )}\n\n                {backToWhatToDo && !isEmpty(backToWhatToDo) && (\n                    <BackBanner\n                        backToMap={false}\n                        text={backToWhatToDo.title}\n                        href={backToWhatToDo.href}\n                    />\n                )}\n                {backToMap && <BackBanner backToMap={true} />}\n\n                {linksDocumentsBlock && linksDocumentsBlock.length > 0 && (\n                    <div\n                        className={\n                            styles['ArticlePage__Links'] +\n                            ' ' +\n                            styles['ArticlePage__Links--Desktop']\n                        }>\n                        <LinkList {...linksDocumentsBlock[0].value} />\n                    </div>\n                )}\n            </div>\n\n            {Array.isArray(blocks) && (\n                <StreamField items={blocks} pageType={'Article'} />\n            )}\n\n            {linksDocumentsBlock && linksDocumentsBlock.length > 0 && (\n                <div className={styles['ArticlePage__Container']}>\n                    <div\n                        className={\n                            styles['ArticlePage__Links'] +\n                            ' ' +\n                            styles['ArticlePage__Links--Mobile']\n                        }>\n                        <LinkList {...linksDocumentsBlock[0].value} />\n                    </div>\n                </div>\n            )}\n\n            {!isEmpty(author) && <AuthorCard {...author} />}\n\n            {!isEmpty(partner) && !isEmpty(partner.url) && (\n                <PartnerInformation {...partner} />\n            )}\n\n            <ShareFeedbackSegment bookmark={bookmark} articleId={id} />\n\n            {!isEmpty(sponsored) && <Sponsors {...sponsored} />}\n        </div>\n    );\n};\n\nArticlePage.propTypes = {\n    id: PropTypes.number.isRequired,\n    url: PropTypes.string.isRequired,\n    title: PropTypes.string.isRequired,\n    preamble: PropTypes.string.isRequired,\n    backToWhatToDo: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n    hero: PropTypes.object,\n    map: PropTypes.object,\n    breadcrumbs: PropTypes.object,\n    contentBlocks: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n    linksDocumentsBlock: PropTypes.array,\n    sponsored: PropTypes.object,\n    partner: PropTypes.object,\n    author: PropTypes.object,\n    partOfPage: PropTypes.object,\n    date: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n    backToMap: PropTypes.bool,\n};\n\nexport default basePageWrap(ArticlePage);\n","import ArticlePage from './ArticlePage';\n\nexport default ArticlePage;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"AuthorCard__Container\":\"AuthorCard_AuthorCard__Container__KtpNR\",\"AuthorCard__Tag\":\"AuthorCard_AuthorCard__Tag__9PmIY\",\"AuthorCard__Title\":\"AuthorCard_AuthorCard__Title__K5Dlw\",\"AuthorCard__ExpandableText\":\"AuthorCard_AuthorCard__ExpandableText__OMTON\",\"AuthorCard__Text\":\"AuthorCard_AuthorCard__Text__HPcIG\",\"AuthorCard\":\"AuthorCard_AuthorCard__udFjV\",\"AuthorCard__Link\":\"AuthorCard_AuthorCard__Link__vM_1Z\",\"AuthorCard__Image\":\"AuthorCard_AuthorCard__Image__7wxKC\",\"AuthorCard__Content\":\"AuthorCard_AuthorCard__Content__2Qb4U\",\"AuthorCard__Toggle\":\"AuthorCard_AuthorCard__Toggle__ilrL5\",\"AuthorCard--expanded\":\"AuthorCard_AuthorCard--expanded__16A9m\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PartnerInformation\":\"PartnerInformation_PartnerInformation__9VmVP\",\"PartnerInformation__Text\":\"PartnerInformation_PartnerInformation__Text__0wSS9\",\"PartnerInformation__Header\":\"PartnerInformation_PartnerInformation__Header__bo07Y\",\"PartnerInformation__Link\":\"PartnerInformation_PartnerInformation__Link__enRsi\",\"PartnerInformation__ListLink\":\"PartnerInformation_PartnerInformation__ListLink__fz_ao\",\"PartnerInformation__Info\":\"PartnerInformation_PartnerInformation__Info__X_WEw\",\"PartnerInformation__Item\":\"PartnerInformation_PartnerInformation__Item__zrCek\",\"PartnerInformation__LinkWrap\":\"PartnerInformation_PartnerInformation__LinkWrap__7xmxx\",\"PartnerInformation__Icon\":\"PartnerInformation_PartnerInformation__Icon__bmpdF\",\"PartnerInformation__Icon--Marker\":\"PartnerInformation_PartnerInformation__Icon--Marker__tuD1f\",\"PartnerInformation__Icon--Phone\":\"PartnerInformation_PartnerInformation__Icon--Phone__eSexr\",\"PartnerInformation__Icon--Mail\":\"PartnerInformation_PartnerInformation__Icon--Mail__uzmeN\",\"PartnerInformation__Icon--Arrow\":\"PartnerInformation_PartnerInformation__Icon--Arrow__iNAlr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ArticlePage__Main\":\"ArticlePage_ArticlePage__Main__2bv3r\",\"ArticlePage__Container\":\"ArticlePage_ArticlePage__Container__R3UB0\",\"ArticlePage__Actions\":\"ArticlePage_ArticlePage__Actions__UgSkd\",\"ArticlePage__Title\":\"ArticlePage_ArticlePage__Title__bVnzV\",\"ArticlePage__Preamble\":\"ArticlePage_ArticlePage__Preamble__QWNQ6\",\"ArticlePage--HasMap\":\"ArticlePage_ArticlePage--HasMap__fvUry\",\"BookmarkButton\":\"ArticlePage_BookmarkButton__8_KLz\",\"Button\":\"ArticlePage_Button__Iu0We\",\"ArticlePage__Links\":\"ArticlePage_ArticlePage__Links___kDQ6\",\"ArticlePage__Links--Mobile\":\"ArticlePage_ArticlePage__Links--Mobile__v9Oci\",\"ArticlePage__Links--Desktop\":\"ArticlePage_ArticlePage__Links--Desktop__1mcKC\",\"ArticlePage--Imageless\":\"ArticlePage_ArticlePage--Imageless__Y2ZSy\"};","import React, { useEffect, useRef, useState } from 'react';\n// ------------------ Helpers\nfunction isNumber(n) {\n    const number = parseFloat(n);\n    return !isNaN(number) && isFinite(number);\n}\nfunction isPercentage(height) {\n    // Percentage height\n    return (typeof height === 'string' &&\n        height[height.length - 1] === '%' &&\n        isNumber(height.substring(0, height.length - 1)));\n}\nfunction hideContent(element, height, disableDisplayNone) {\n    // Check for element?.style is added cause this would fail in tests (react-test-renderer)\n    // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n    if (height === 0 &&\n        !disableDisplayNone &&\n        (element === null || element === void 0 ? void 0 : element.style) &&\n        (element === null || element === void 0 ? void 0 : element.children.length) > 0) {\n        element.style.display = 'none';\n    }\n}\nfunction showContent(element, height) {\n    // Check for element?.style is added cause this would fail in tests (react-test-renderer)\n    // Read more here: https://github.com/Stanko/react-animate-height/issues/17\n    if (height === 0 && (element === null || element === void 0 ? void 0 : element.style)) {\n        element.style.display = '';\n    }\n}\nconst ANIMATION_STATE_CLASSES = {\n    animating: 'rah-animating',\n    animatingUp: 'rah-animating--up',\n    animatingDown: 'rah-animating--down',\n    animatingToHeightZero: 'rah-animating--to-height-zero',\n    animatingToHeightAuto: 'rah-animating--to-height-auto',\n    animatingToHeightSpecific: 'rah-animating--to-height-specific',\n    static: 'rah-static',\n    staticHeightZero: 'rah-static--height-zero',\n    staticHeightAuto: 'rah-static--height-auto',\n    staticHeightSpecific: 'rah-static--height-specific',\n};\nfunction getStaticStateClasses(animationStateClasses, height) {\n    return [\n        animationStateClasses.static,\n        height === 0 && animationStateClasses.staticHeightZero,\n        typeof height === 'number' && height > 0\n            ? animationStateClasses.staticHeightSpecific\n            : null,\n        height === 'auto' && animationStateClasses.staticHeightAuto,\n    ]\n        .filter((v) => v)\n        .join(' ');\n}\n// ------------------ Component\nconst propsToOmitFromDiv = [\n    'animateOpacity',\n    'animationStateClasses',\n    'applyInlineTransitions',\n    'children',\n    'className',\n    'contentClassName',\n    'contentRef',\n    'delay',\n    'duration',\n    'easing',\n    'height',\n    'onHeightAnimationEnd',\n    'onHeightAnimationStart',\n    'style',\n    'disableDisplayNone',\n];\nconst AnimateHeight = React.forwardRef((componentProps, ref) => {\n    // const AnimateHeight = forwardRef((componentProps: AnimateHeightProps, ref) => {\n    // const AnimateHeight: React.FC<AnimateHeightProps> = (componentProps) => {\n    const { animateOpacity = false, animationStateClasses = {}, applyInlineTransitions = true, children, className = '', contentClassName, delay: userDelay = 0, disableDisplayNone = false, duration: userDuration = 500, easing = 'ease', height, onHeightAnimationEnd, onHeightAnimationStart, style, contentRef, } = componentProps;\n    const divProps = Object.assign({}, componentProps);\n    propsToOmitFromDiv.forEach((propKey) => {\n        delete divProps[propKey];\n    });\n    // ------------------ Initialization\n    const prevHeight = useRef(height);\n    const contentElement = useRef(null);\n    const animationClassesTimeoutID = useRef();\n    const timeoutID = useRef();\n    const stateClasses = useRef(Object.assign(Object.assign({}, ANIMATION_STATE_CLASSES), animationStateClasses));\n    const isBrowser = typeof window !== 'undefined';\n    const prefersReducedMotion = useRef(isBrowser && window.matchMedia\n        ? window.matchMedia('(prefers-reduced-motion)').matches\n        : false);\n    const delay = prefersReducedMotion.current ? 0 : userDelay;\n    const duration = prefersReducedMotion.current ? 0 : userDuration;\n    let initHeight = height;\n    let initOverflow = 'visible';\n    if (typeof height === 'number') {\n        // Reset negative height to 0\n        initHeight = height < 0 ? 0 : height;\n        initOverflow = 'hidden';\n    }\n    else if (isPercentage(initHeight)) {\n        // If value is string \"0%\" make sure we convert it to number 0\n        initHeight = height === '0%' ? 0 : height;\n        initOverflow = 'hidden';\n    }\n    const [currentHeight, setCurrentHeight] = useState(initHeight);\n    const [overflow, setOverflow] = useState(initOverflow);\n    const [useTransitions, setUseTransitions] = useState(false);\n    const [animationStateClassNames, setAnimationStateClassNames] = useState(getStaticStateClasses(stateClasses.current, height));\n    // ------------------ Did mount\n    useEffect(() => {\n        // Hide content if height is 0 (to prevent tabbing into it)\n        hideContent(contentElement.current, currentHeight, disableDisplayNone);\n        // This should be explicitly run only on mount\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    // ------------------ Height update\n    useEffect(() => {\n        if (height !== prevHeight.current && contentElement.current) {\n            showContent(contentElement.current, prevHeight.current);\n            // Cache content height\n            contentElement.current.style.overflow = 'hidden';\n            const contentHeight = contentElement.current.offsetHeight;\n            contentElement.current.style.overflow = '';\n            // set total animation time\n            const totalDuration = duration + delay;\n            let newHeight;\n            let timeoutHeight;\n            let timeoutOverflow = 'hidden';\n            let timeoutUseTransitions;\n            const isCurrentHeightAuto = prevHeight.current === 'auto';\n            if (typeof height === 'number') {\n                // Reset negative height to 0\n                newHeight = height < 0 ? 0 : height;\n                timeoutHeight = newHeight;\n            }\n            else if (isPercentage(height)) {\n                // If value is string \"0%\" make sure we convert it to number 0\n                newHeight = height === '0%' ? 0 : height;\n                timeoutHeight = newHeight;\n            }\n            else {\n                // If not, animate to content height\n                // and then reset to auto\n                newHeight = contentHeight; // TODO solve contentHeight = 0\n                timeoutHeight = 'auto';\n                timeoutOverflow = undefined;\n            }\n            if (isCurrentHeightAuto) {\n                // This is the height to be animated to\n                timeoutHeight = newHeight;\n                // If previous height was 'auto'\n                // set starting height explicitly to be able to use transition\n                newHeight = contentHeight;\n            }\n            // Animation classes\n            const newAnimationStateClassNames = [\n                stateClasses.current.animating,\n                (prevHeight.current === 'auto' || height < prevHeight.current) &&\n                    stateClasses.current.animatingUp,\n                (height === 'auto' || height > prevHeight.current) &&\n                    stateClasses.current.animatingDown,\n                timeoutHeight === 0 && stateClasses.current.animatingToHeightZero,\n                timeoutHeight === 'auto' &&\n                    stateClasses.current.animatingToHeightAuto,\n                typeof timeoutHeight === 'number' && timeoutHeight > 0\n                    ? stateClasses.current.animatingToHeightSpecific\n                    : null,\n            ]\n                .filter((v) => v)\n                .join(' ');\n            // Animation classes to be put after animation is complete\n            const timeoutAnimationStateClasses = getStaticStateClasses(stateClasses.current, timeoutHeight);\n            // Set starting height and animating classes\n            // When animating from 'auto' we first need to set fixed height\n            // that change should be animated\n            setCurrentHeight(newHeight);\n            setOverflow('hidden');\n            setUseTransitions(!isCurrentHeightAuto);\n            setAnimationStateClassNames(newAnimationStateClassNames);\n            // Clear timeouts\n            clearTimeout(timeoutID.current);\n            clearTimeout(animationClassesTimeoutID.current);\n            if (isCurrentHeightAuto) {\n                // When animating from 'auto' we use a short timeout to start animation\n                // after setting fixed height above\n                timeoutUseTransitions = true;\n                // Short timeout to allow rendering of the initial animation state first\n                timeoutID.current = setTimeout(() => {\n                    setCurrentHeight(timeoutHeight);\n                    setOverflow(timeoutOverflow);\n                    setUseTransitions(timeoutUseTransitions);\n                    // ANIMATION STARTS, run a callback if it exists\n                    onHeightAnimationStart === null || onHeightAnimationStart === void 0 ? void 0 : onHeightAnimationStart(timeoutHeight);\n                }, 50);\n                // Set static classes and remove transitions when animation ends\n                animationClassesTimeoutID.current = setTimeout(() => {\n                    setUseTransitions(false);\n                    setAnimationStateClassNames(timeoutAnimationStateClasses);\n                    // ANIMATION ENDS\n                    // Hide content if height is 0 (to prevent tabbing into it)\n                    hideContent(contentElement.current, timeoutHeight, disableDisplayNone);\n                    // Run a callback if it exists\n                    onHeightAnimationEnd === null || onHeightAnimationEnd === void 0 ? void 0 : onHeightAnimationEnd(timeoutHeight);\n                }, totalDuration);\n            }\n            else {\n                // ANIMATION STARTS, run a callback if it exists\n                onHeightAnimationStart === null || onHeightAnimationStart === void 0 ? void 0 : onHeightAnimationStart(newHeight);\n                // Set end height, classes and remove transitions when animation is complete\n                timeoutID.current = setTimeout(() => {\n                    setCurrentHeight(timeoutHeight);\n                    setOverflow(timeoutOverflow);\n                    setUseTransitions(false);\n                    setAnimationStateClassNames(timeoutAnimationStateClasses);\n                    // ANIMATION ENDS\n                    // If height is auto, don't hide the content\n                    // (case when element is empty, therefore height is 0)\n                    if (height !== 'auto') {\n                        // Hide content if height is 0 (to prevent tabbing into it)\n                        hideContent(contentElement.current, newHeight, disableDisplayNone); // TODO solve newHeight = 0\n                    }\n                    // Run a callback if it exists\n                    onHeightAnimationEnd === null || onHeightAnimationEnd === void 0 ? void 0 : onHeightAnimationEnd(newHeight);\n                }, totalDuration);\n            }\n        }\n        prevHeight.current = height;\n        return () => {\n            clearTimeout(timeoutID.current);\n            clearTimeout(animationClassesTimeoutID.current);\n        };\n        // This should be explicitly run only on height change\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [height]);\n    // ------------------ Render\n    const componentStyle = Object.assign(Object.assign({}, style), { height: currentHeight, overflow: overflow || (style === null || style === void 0 ? void 0 : style.overflow) });\n    if (useTransitions && applyInlineTransitions) {\n        componentStyle.transition = `height ${duration}ms ${easing} ${delay}ms`;\n        // Include transition passed through styles\n        if (style === null || style === void 0 ? void 0 : style.transition) {\n            componentStyle.transition = `${style.transition}, ${componentStyle.transition}`;\n        }\n        // Add webkit vendor prefix still used by opera, blackberry...\n        componentStyle.WebkitTransition = componentStyle.transition;\n    }\n    const contentStyle = {};\n    if (animateOpacity) {\n        contentStyle.transition = `opacity ${duration}ms ${easing} ${delay}ms`;\n        // Add webkit vendor prefix still used by opera, blackberry...\n        contentStyle.WebkitTransition = contentStyle.transition;\n        if (currentHeight === 0) {\n            contentStyle.opacity = 0;\n        }\n    }\n    // Check if user passed aria-hidden prop\n    const hasAriaHiddenProp = typeof divProps['aria-hidden'] !== 'undefined';\n    const ariaHidden = hasAriaHiddenProp\n        ? divProps['aria-hidden']\n        : height === 0;\n    return (React.createElement(\"div\", Object.assign({}, divProps, { \"aria-hidden\": ariaHidden, className: `${animationStateClassNames} ${className}`, style: componentStyle, ref: ref }),\n        React.createElement(\"div\", { className: contentClassName, style: contentStyle, ref: (el) => {\n                contentElement.current = el;\n                if (contentRef) {\n                    contentRef.current = el;\n                }\n            } }, children)));\n});\nexport default AnimateHeight;\n"],"names":["AuthorCard","href","image","name","text","param","t","useTranslation","serializedImage","serializeImage","expanded","setExpanded","useState","itemContainerRef","useRef","classes","classNames","styles","jsx_runtime","jsxs","div","className","jsx","a","span","BackgroundImage","quality","h3","p","AnimateHeight","duration","height","id","role","ref","button","onClick","aria-controls","aria-expanded","aria-haspopup","aria-label","propTypes","PropTypes","defaultProps","PartnerInformation","prettyUrl","phone","phoneText","address","url","mail","window","URL","host","replace","h2","ul","li","concat","aria-hidden","ArticlePage","state","title","contentBlocks","hero","breadcrumbs","preamble","linksDocumentsBlock","sponsored","author","map","partner","partOfPage","backToMap","backToWhatToDo","date","find","content","type","blocks","_object_spread_props","_","_object_spread","value","items","coords","item","readMore","lat","lng","apiKey","googleMapsApiKey","newTab","useContext","CookieStateContext","cookieConsent","categories","includes","useLayoutEffect","location","search","indexOf","history","replaceState","pathname","isBelowBreadcrumbs","length","bookmark","isEmpty","hasMapExpander","Breadcrumbs","Hero","clean","h1","dangerouslySetInnerHTML","__html","ArticleDate","BookmarkButton","untranslatedButtonModifiers","MapExpander","zoomLevel","BackBanner","LinkList","Array","isArray","StreamField","pageType","ShareFeedbackSegment","articleId","Sponsors","isRequired","containers_ArticlePage","basePageWrap","module","exports","isPercentage","isNumber","n","number","parseFloat","isNaN","isFinite","substring","hideContent","element","disableDisplayNone","style","children","display","ANIMATION_STATE_CLASSES","animating","animatingUp","animatingDown","animatingToHeightZero","animatingToHeightAuto","animatingToHeightSpecific","static","staticHeightZero","staticHeightAuto","staticHeightSpecific","getStaticStateClasses","animationStateClasses","filter","v","join","propsToOmitFromDiv","react__WEBPACK_IMPORTED_MODULE_0__","forwardRef","componentProps","animateOpacity","applyInlineTransitions","contentClassName","delay","userDelay","userDuration","easing","onHeightAnimationEnd","onHeightAnimationStart","contentRef","divProps","Object","assign","forEach","propKey","prevHeight","contentElement","animationClassesTimeoutID","timeoutID","stateClasses","isBrowser","prefersReducedMotion","matchMedia","matches","current","initHeight","initOverflow","currentHeight","setCurrentHeight","overflow","setOverflow","useTransitions","setUseTransitions","animationStateClassNames","setAnimationStateClassNames","useEffect","newHeight","timeoutHeight","contentHeight","offsetHeight","totalDuration","timeoutOverflow","isCurrentHeightAuto","undefined","newAnimationStateClassNames","timeoutAnimationStateClasses","clearTimeout","setTimeout","componentStyle","transition","WebkitTransition","contentStyle","opacity","ariaHidden","hasAriaHiddenProp","createElement","el","__webpack_exports__","Z"],"sourceRoot":""}