{"version":3,"file":"static/chunks/pages/_app-16091bd96db58e0c.js","mappings":"A8FACA,CAAAA,KAAK,gBAAmB,CAAGA,KAAK,gBAAmB,EAAI,EAAE,EAAEC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAElE,KACC,SAASC,CAAuB,CAAEC,CAAmB,CAAEC,CAAmB,CAAE,CAEnF,aACqBA,EAAoBC,CAAC,CAACF,EAAqB,CACzC,GAAM,UAAW,CAAE,OAAqBG,CAAW,EACnD,GAAM,UAAW,CAAE,OAAqBC,CAAkB,EAC1D,EAAK,UAAW,CAAE,OAAqBC,CAAgB,CACzD,G9FVoB,IAAAC,EAAAL,EAAA,MAiBzC,SAASG,EAAAG,CAAA,CAAAC,CAAA,EACT,SAAAF,EAAAG,EAAA,IAAAL,gBAAA,CAAAG,EAAA,CAAAC,eAAAA,CAAA,GAmCA,SAAEH,EAAAK,CAAA,EACF,GAAAJ,EAAAG,EAAA,IAAAJ,cAAA,CAAAK,EAAA,CAmFA,SAAEP,EAAAO,CAAA,EACF,GAAAJ,EAAAG,EAAA,IAAAN,SAAA,CAAAO,EAAA,CAoCA,gBAAAX,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAW,CAAA,uBAAAC,CAAA,QAAAC,EAAAZ,EAAA,MAAAa,EAAAb,EAAA,MAAAc,EAAAd,EAAA,MAAAe,EAAAf,EAAA,MAAAgB,EAAAhB,EAAA,MAAAiB,EAAAjB,EAAA,MC9KsIkB,EAAAlB,EAAA,KA6BtI,OAAAmB,EAC+BC,QAAA,MAAAC,MAAA,MAc/BC,YAAAC,CAAA,CAAAC,EAAA,IAAAP,EAAAQ,CAAA,CAAAC,EAhCA,CAgCA,OAAAA,QAAA,CAAAA,EAAAP,EAAAQ,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OACA,KAAAC,WAAA,GAAAL,KAAA,CAAAA,EACAD,GACA,KAAAO,UAAA,CAAAP,EACA,CAMAQ,YAAAC,CAAA,EACA,YAAAN,QAAA,CAAAM,CAAA,CAMAF,WAAAP,CAAA,EAEAU,IADA,CAAAJ,WAAA,GACAN,MAAA,CAAAA,EACAA,GAAAA,EAAAW,iBAAA,EACAX,EAAAW,iBAAA,EACA,CAMAC,WAAA,CAEA,IAAAX,EAAAP,EAAAQ,CAAA,CAAAW,KAAA,MAAAC,QAAA,IAKA,OAJA,KAAAC,QAAA,GAAAzC,IAAA,EACA0B,OAAA,KAAAgB,SAAA,GACKf,MAAAA,CACL,GACAA,CAAA,CAMAgB,UAAA,OACA,OAAAF,QAAA,GAAAG,MAAA,MACA,OAAAH,QAAA,GAAAI,GAAA,GAMAxC,UAAAO,CAAA,EACA,IAAAe,EAAA,KAAAW,SAAA,GACA,IACM1B,EAAAe,EACN,SACA,KAAAgB,QAAA,EACA,EAMAD,WAAA,CACA,YAAAV,WAAA,GAAAN,MAAA,CAIAc,UAAA,CACA,YAAAR,WAAA,GAAAL,KAAA,CAIAc,UAAA,CACA,YAAAjB,MAAA,CAIAQ,aAAA,CACA,YAAAR,MAAA,MAAAA,MAAA,CAAAoB,MAAA,IAMAtC,iBAAAG,CAAA,CAAAqC,CAAA,EACA,IAAAC,EAAA,KAAAC,YAAA,CAAAF,GAAAA,EAAAG,QAAA,CAAAH,EAAAG,QAAA,IAAAlC,EAAAmC,EAAA,IACAC,EAAA,mCAaA,OAZA,KAAAC,WAAA,EAAA1B,EAAAC,IAAA,CACAD,EAAApB,gBAAA,CACAG,EACA,CACA4C,kBAAA5C,EACA0C,mBAAAA,EACA,GAAAL,CAAA,CACSG,SAAAF,CACT,EACApB,EAEA,GACAoB,CAAA,CAMAO,eACAC,CAAA,CACAC,CAAA,CACAV,CAAA,CACA,CACA,IAAAC,EAAA,KAAAC,YAAA,CAAAF,GAAAA,EAAAG,QAAA,CAAAH,EAAAG,QAAA,IAAAlC,EAAAmC,EAAA,IACAC,EAAA,MAAAI,GAcA,OAbA,KAAAH,WAAA,EAAA1B,EAAAC,IAAA,CACAD,EAAA4B,cAAA,CACAC,EACAC,EACA,CACAH,kBAAAE,EACAJ,mBAAAA,EACA,GAAAL,CAAA,CACSG,SAAAF,CACT,EACApB,EAEA,GACAoB,CAAA,CAMAU,aAAAC,CAAA,CAAAZ,CAAA,EACA,IAAAC,EAAAD,GAAAA,EAAAG,QAAA,CAAAH,EAAAG,QAAA,IAAAlC,EAAAmC,EAAA,IAQA,MAPA,gBAAAQ,EAAAC,IAAA,EACA,MAAAX,YAAA,CAAAD,CAAA,EAGA,KAAAK,WAAA,EAAA1B,EAAAC,IAAmC,CAC9BD,EAAA+B,YAAA,CAAAC,EAAA,IAAAZ,CAAA,CAAAG,SAAAF,CAAA,EAAApB,EACL,GACAoB,CAAA,CAMAa,aAAA,CACA,YAAAZ,YAAA,CAMAa,cAAYC,CAAA,CAAgBhB,CAAA,MAAAnB,MAAAA,CAAA,CAAAD,OAAAA,CAAA,OAAAM,WAAA,GAE5B,IAAAL,GAAA,CAAAD,EAAA,OAGA,IAAAqC,iBAAAA,EAAA,KAAAC,eAAAA,EAvLA,GAuLA,IAAAC,UAAA,EAAAvC,EAAAuC,UAAA,OAEA,IAAAD,CAAAA,GAAA,IAGA,IAAAE,EAAA,GAAAlD,EAA6BmD,EAAA,IAC7BC,EAAA,CAAAF,UAAAA,EAAA,GAAAJ,CAAA,EACAO,EAASN,EACT,GAAA9C,EAAAqD,EAAA,MAAAP,EAAAK,EAAAtB,IAAAsB,CAAA,CAEA,OAAAC,GAGA1C,EAAAkC,aAAA,CAAAQ,EAAAL,GAXA,CAiBAO,QAAAC,CAAA,EACA,IAAA7C,EAAA,KAAAa,QAAA,GACAb,GAAAA,EAAA4C,OAAA,CAAAC,EAAA,CAMAC,QAAAC,CAAA,EACA,IAAA/C,EAAA,KAAAa,QAAA,GACAb,GAAAA,EAAA8C,OAAA,CAAAC,EAAA,CAMAC,UAAAC,CAAA,EACA,IAAAjD,EAAA,KAAAa,QAAA,GACAb,GAAAA,EAAAgD,SAAA,CAAAC,EAAA,CAMAC,OAAAC,CAAA,CAAAC,CAAA,EACA,IAAApD,EAAA,KAAAa,QAAA,GACAb,GAAAA,EAAAkD,MAAA,CAAAC,EAAAC,EAAA,CAMAC,SAAAF,CAAA,CAAAG,CAAA,EACA,IAAAtD,EAAA,KAAAa,QAAA,GACAb,GAAAA,EAAAqD,QAAA,CAAAF,EAAAG,EAAA,CAMAC,WAAAC,CAAA,CAAAC,CAAA,EACA,IAAAzD,EAAA,KAAAa,QAAA,GACAb,GAAAA,EAAAuD,UAAA,CAAAC,EAAAC,EAAA,CAMA7E,eAAYK,CAAA,CAAgB,CAC5B,IAAAe,MAAAA,CAAA,CAAAD,OAAAA,CAAA,OAAAM,WAAA,GACAL,GAAAD,GACAd,EAAAe,EACA,CAMA0D,IAAAzE,CAAA,EACA,IAAA0E,EAAAC,EAAA,MACA,IACM3E,EAAA,KACN,SACA2E,EAAAD,EACA,EAMAE,eAAAC,CAAA,EACA,IAAA/D,EAAA,KAAAgB,SAAA,GACA,IAAAhB,EAAA,YACA,IACM,OAAAA,EAAA8D,cAAA,CAAAC,EACN,OAAAC,EAAA,CAEA,MADA,qBAAAC,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAAC,IAAA,gCAAAJ,EAAAK,EAAA,yBACA,KACA,CAMAC,iBAAAX,CAAA,CAAAY,CAAA,EACA,YAAAC,oBAAA,oBAAAb,EAAAY,EAAA,CAMAE,cAAA,CACA,YAAAD,oBAAA,iBAMAE,eAAAC,EAAA,IAEA,GAAAA,EACA,YAAAA,UAAA,GAIA,KAAAC,kBAAA,GAMAD,YAAA,CACA,IAAAE,EAAA,KAAAtE,WAAA,GACAL,EAAA2E,GAAAA,EAAA3E,KAAA,CACA4E,EAAA5E,GAAAA,EAAA6E,UAAA,GACMD,GACN,GAAAlF,EAAAoF,EAAA,EAAAF,GACA,KAAAF,kBAAA,GAIA1E,GACAA,EAAA+E,UAAA,EACA,CAMAC,aAAYvB,CAAA,EACZ,IAAYzD,MAAAA,CAAA,CAAAD,OAAAA,CAAA,OAAuBM,WAAA,IAAA4E,QAAAA,CAAA,CAAAC,YAAAA,CAAA,KAAAnF,EAAAuC,UAAA,OAInC,IAAA6C,EAAY,GAAA5F,EAAY6F,CAAA,QAAAC,UAAAA,CAAA,EAAAF,EAAAG,SAAA,KAGxB,IAAAV,EAAA,GAAAlF,EAAA6F,EAAA,GACAN,QAAAA,EACAC,YAAAA,EACA,GAAAlF,GAAA,CAAA6C,KAAyB7C,EAAAwF,OAAW,IACpC,GAAAH,GAAA,CAAAA,UAAAA,CAAA,EACK,GAAA5B,CAAA,GAGL,GAAAzD,EAAA,CAEA,IAAAyF,EAAAzF,EAAA6E,UAAA,EAAA7E,EAAA6E,UAAA,GACQY,GAAAA,OAAAA,EAAAC,MAAA,EACR,GAAAhG,EAAAiG,EAAA,EAAAF,EAAA,CAAAC,OAAA,WACA,KAAAjB,UAAA,GAIAzE,EAAA+E,UAAA,CAAAH,EAAA,QAGAA,CAAA,CAOAgB,sBAAA,CACA,IAAA7F,EAAA,KAAAgB,SAAA,GACA8E,EAAA9F,GAAAA,EAAAuC,UAAA,GACA,OAAAwD,QAAAD,GAAAA,EAAAE,cAAA,EAMArB,oBAAY,CACZ,IAAA1E,MAAAA,CAAA,CAAAD,OAAAA,CAAA,OAAAM,WAAA,MAAAL,GAGA,IAAA4E,EAAA5E,EAAA6E,UAAA,GACAD,GACA7E,GAAAA,EAAAyE,cAAA,EACAzE,EAAAyE,cAAA,CAAAI,GANA,CAiBAnD,YAAYxC,CAAA,EACZ,IAAAe,MAAAA,CAAA,CAAAD,OAAAA,CAAA,OAAAM,WAAA,GACAN,GACAd,EAAAc,EAAAC,EACA,CAOAsE,qBAAA0B,CAAA,IAAAC,CAAA,EAEA,IAAAC,EAAAC,IAAAC,UAAA,CACA,GAAAF,GAAAA,EAAAG,UAAA,qBAAAH,EAAAG,UAAA,CAAAL,EAAA,CACA,OAAAE,EAAAG,UAAA,CAAAL,EAAA,CAAAM,KAAA,MAAAL,EACA,CACA,qBAAAjC,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAAC,IAAA,qBAAA8B,EAAA,oCACA,EAUA,SAAA7G,GAAgB,CAChB,IAAAgH,EAAA,GAAA5G,EAAA6F,CAAA,IAKA,OAJAe,EAAAC,UAAkB,CAAAD,EAAAC,UAAA,GAClBC,WAAA,GACAE,IAAAC,KAAAA,CACA,EACAL,CAAA,CAQA,SAAAvC,EAAA2C,CAAA,EACA,IAAAE,EAAAtH,IACAwE,EAAA+C,EAAAD,GAEA,OADAE,EAAAF,EAAAF,GACA5C,CAAA,CAUA,SAAAzE,GAAA,CACA,IAAAuH,EAAAtH,UASA,CALA,EAAAyH,EAAAH,IAAAC,EAAAD,GAAAlG,WAAA,CA5cA,EA4cA,GACAoG,EAAAF,EAAA,IAAA9G,GAIA,GAAAH,EAAAqH,EAAA,KACAC,SAUAL,CAAA,EACA,IACA,IAAAP,EAAA/G,IAAAiH,UAAA,CAAAW,EAAAb,GAAAA,EAAAG,UAAA,EAAAH,EAAAG,UAAA,CAAAW,MAAA,EAAAd,EAAAG,UAAA,CAAAW,MAAA,CAAAC,MAAA,CAIA,IAAAF,EACA,OAAAL,EAAAD,EAAA,CAIA,IAAAG,EAAAG,IAAAL,EAAAK,GAAAxG,WAAA,CAveA,GAueA,CACA,IAAA2G,EAAAR,EAAAD,GAAApG,WAAA,GACAsG,EAAAI,EAAA,IAAApH,EAAAuH,EAAAnH,MAAA,CAAAN,EAAAQ,CAAA,CAAAW,KAAA,CAAAsG,EAAAlH,KAAA,WAII0G,EAAAK,EACJ,OAAAI,EAAA,CAEA,OAAAT,EAAAD,EACA,GA/BAA,GAGAC,EAAAD,EAFA,CAqCA,SAAAG,EAAAT,CAAA,EACA,QAAAA,CAAAA,GAAAA,EAAAC,UAAA,EAAAD,EAAAC,UAAA,CAAAG,GAAA,EASA,SAASG,EAAAP,CAAA,EACT,SAAA5G,EAAA6H,CAAA,gBAAAzH,EAAAwG,EAAA,CASA,SAAAQ,EAAAR,CAAA,CAAAI,CAAA,QACA,EAAAJ,IAEAC,CADAD,EAAAC,UAAA,CAAAD,EAAAC,UAAA,MACAG,GAAA,CAAAA,EACA,IAGA,gBAAAjI,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,qBAAA8I,CAAA,sBAAAC,CAAA,QAAAlI,EAAAZ,EAAA,MAAAa,EAAAb,EAAA,MAAAc,EAAAd,EAAA,MAAA+I,EAAA/I,EAAA,MAAAe,EAAAf,EAAA,MAAAgB,EAAAhB,EAAA,MC/hBqIgJ,EAAAhJ,EAAA,KAcrI,OAAA8I,EAoDAxH,aAAA,CACA,KAAA2H,mBAAA,IACA,KAAAC,eAAA,IACA,KAAAC,gBAAA,IACA,KAAAC,YAAA,IACA,KAAAC,YAAA,IACA,KAAAC,KAAA,IACA,KAAAC,KAAA,IACA,KAAAC,MAAA,IACA,KAAAC,SAAA,IACA,KAAAC,sBAAA,IAOA,OAAAtH,MAAAZ,CAAA,EACA,IAAAmI,EAAA,IAAAb,EAgBA,OAfAtH,IACAmI,EAAAP,YAAyB,KAAA5H,EAAA4H,YAAA,EACzBO,EAAAJ,KAAA,KAA0B/H,EAAA+H,KAAA,EAC1BI,EAAAH,MAAA,KAA6BhI,EAAAgI,MAAA,EAC7BG,EAAAF,SAAA,KAAAjI,EAAAiI,SAAA,EACAE,EAAAL,KAAA,CAAA9H,EAAA8H,KAAA,CACAK,EAAAC,MAAA,CAAApI,EAAAoI,MAAA,CACAD,EAAAE,KAAA,CAAArI,EAAAqI,KAAA,CACAF,EAAAG,QAAA,CAAAtI,EAAAsI,QAAA,CACAH,EAAAI,gBAAA,CAAAvI,EAAAuI,gBAAA,CACAJ,EAAAK,YAAA,CAAAxI,EAAAwI,YAAA,CACAL,EAAAR,gBAAA,KAAA3H,EAAA2H,gBAAA,EACAQ,EAAAM,eAAA,CAAAzI,EAAAyI,eAAA,CACAN,EAAAN,YAAA,KAAA7H,EAAA6H,YAAA,GAEAM,CAAA,CAOAO,iBAAAzJ,CAAA,EACA,KAAAyI,eAAA,CAAArJ,IAAA,CAAAY,EAAA,CAMA0J,kBAAA1J,CAAA,EAEA,OADA,KAAA0I,gBAAA,CAAAtJ,IAAA,CAAAY,GACA,KAMA2D,QAAAC,CAAA,EAMA,OALA,KAAAiF,KAAA,CAAAjF,GAAA,GACM,KAAAyF,QAAA,EACN,GAAAd,EAAA7B,EAAA,OAAA2C,QAAA,EAAAzF,KAAAA,CAAA,GAEA,KAAA+F,qBAAA,GACA,KAMApD,SAAA,CACA,YAAAsC,KAAA,CAMAe,mBAAA,CACA,YAAAJ,eAAA,CAMAK,kBAAAC,CAAA,EAEA,OADA,KAAAN,eAAA,CAAAM,EACA,KAMAjG,QAAAC,CAAA,EAMA,OALA,KAAAgF,KAAA,EACA,QAAAA,KAAA,CACA,GAAAhF,CAAA,EAEA,KAAA6F,qBAAA,GACA,KAMA1F,OAAAC,CAAA,CAAAC,CAAmB,EAGnB,OAFA,KAAA2E,KAAA,UAAAA,KAAA,EAAA5E,EAAA,CAAAC,CAAA,EACA,KAAAwF,qBAAA,GACA,KAMA5F,UAAAC,CAAA,EAMA,OALA,KAAA+E,MAAA,EACA,QAAAA,MAAA,CACA,GAAA/E,CAAA,EAEA,KAAA2F,qBAAA,GACA,KAMAvF,SAAAF,CAAA,CAAAG,CAAoB,EAGpB,OAFA,KAAA0E,MAAA,UAAAA,MAAA,EAAA7E,EAAA,CAAAG,CAAA,EACA,KAAAsF,qBAAA,GACA,KAMAI,eAAAC,CAAA,EAGA,OAFA,KAAAT,YAAA,CAAAS,EACA,KAAAL,qBAAA,GACA,KAMAM,SACArH,CAAA,CACA,CAGA,OAFA,KAAAuG,MAAA,CAAAvG,EACA,KAAA+G,qBAAA,GACA,KAMAO,mBAAA3F,CAAA,EAGA,OAFA,KAAA+E,gBAAA,CAAA/E,EACA,KAAAoF,qBAAA,GACA,KAMArF,WAAAJ,CAAA,CAAAM,CAAA,EAQA,OAPAA,IAAA,GAAAA,EACM,YAAAwE,SAAA,CAAA9E,EAAA,CAEN,KAAA8E,SAAA,UAAAA,SAAA,EAAA9E,EAAA,CAAAM,CAAA,EAGA,KAAAmF,qBAAA,GACA,KAMAQ,QAAAC,CAAA,EAGA,OAFA,KAAAhB,KAAA,CAAAgB,EACA,KAAAT,qBAAA,GACA,KAMAU,SAAA,CACA,YAAAjB,KAAA,CAMAkB,gBAAA,CAGA,IAAAF,EAAA,KAAAC,OAAA,GACA,OAAAD,GAAAA,EAAAG,WAAA,CAMAzE,WAAAH,CAAA,EAOA,OANAA,EAGA,KAAA0D,QAAA,CAAA1D,EAFM,YAAA0D,QAAA,CAIN,KAAAM,qBAAA,GACA,KAMA/D,YAAA,CACA,YAAAyD,QAAA,CAMAmB,OAAA1K,CAAA,EACA,IAAAA,EACA,YAGA,sBAAAA,EAAA,CACA,IAAA2K,EAAA,QACA,OAAAA,aAAApC,EAAAoC,EAAA,YAGA3K,aAAqBuI,GACrB,KAAAS,KAAA,KAAsB,KAAAA,KAAA,IAAAhJ,EAAAgJ,KAAA,EACtB,KAAAC,MAAA,KAAyB,KAAAA,MAAA,IAAAjJ,EAAAiJ,MAAA,EACzB,KAAAC,SAAA,UAAAA,SAAA,IAAAlJ,EAAAkJ,SAAA,EACAlJ,EAAA+I,KAAA,EAAA6B,OAAAC,IAAA,CAAA7K,EAAA+I,KAAA,EAAA7G,MAAA,EACA,MAAA6G,KAAA,CAAA/I,EAAA+I,KAAA,EAEA/I,EAAAqJ,MAAA,EACA,MAAAA,MAAA,CAAArJ,EAAAqJ,MAAA,EAEArJ,EAAAyJ,YAAA,EACA,MAAAA,YAAA,CAAAzJ,EAAAyJ,YAAA,EAEAzJ,EAAA0J,eAAA,EACA,MAAAA,eAAA,CAAA1J,EAAA0J,eAAA,GAEA,GAAArJ,EAAAyK,EAAA,EAAA9K,KAEA,KAAAgJ,KAAA,KAAsB,KAAAA,KAAA,IAAAhJ,EAAAgE,IAAA,EACtB,KAAAiF,MAAA,KAAyB,KAAAA,MAAA,IAAAjJ,EAAAuE,KAAA,EACzB,KAAA2E,SAAA,UAAAA,SAAA,IAAAlJ,EAAA+K,QAAA,EACA/K,EAAA8D,IAAA,EACA,MAAAiF,KAAA,CAAA/I,EAAA8D,IAAA,EAEA9D,EAAA8C,KAAA,EACA,MAAAuG,MAAA,CAAArJ,EAAA8C,KAAA,EAEA9C,EAAAkK,WAAA,EACA,MAAAT,YAAA,CAAAzJ,EAAAkK,WAAA,EAEAlK,EAAAgK,cAAA,EACA,MAAAN,eAAA,CAAA1J,EAAAgK,cAAA,GAIA,KAMAgB,OAAA,CAcA,OAbA,KAAAnC,YAAA,IACA,KAAAG,KAAA,IACA,KAAAC,MAAA,IACA,KAAAF,KAAA,IACA,KAAAG,SAAA,IACA,KAAAG,MAAA,CAAA5B,KAAAA,EACA,KAAA+B,gBAAA,CAAA/B,KAAAA,EACA,KAAAgC,YAAA,CAAAhC,KAAAA,EACA,KAAAiC,eAAA,CAAAjC,KAAAA,EACA,KAAA6B,KAAA,CAAA7B,KAAAA,EACA,KAAA8B,QAAA,CAAA9B,KAAAA,EACA,KAAAoC,qBAAA,GACA,KAAAf,YAAA,IACA,KAMA3F,cAAAC,CAAA,CAAAE,CAAA,MAAA2H,EAAA,iBAAA3H,EAAA4H,KAAAC,GAAA,CAAA7H,EA/VA,QA+VA,CAIA,GAAA2H,GAAA,EACA,YAGA,IAAAvH,EAAiB,CACjBF,UAAA,GAAAlD,EAAAmD,EAAA,IACA,GAAAL,CAAA,EAKA,OAHA,KAAAyF,YAAA,UAAAA,YAAA,CAAAnF,EAAA,CAAA0H,KAAA,EAAAH,GAAA,KAAApB,qBAAA,GAGA,KAMAwB,kBAAA,CAGA,OAFA,KAAAxC,YAAA,IACA,KAAAgB,qBAAA,GACA,KAMAyB,cAAAC,CAAA,EAEA,OADA,KAAAzC,YAAA,CAAAxJ,IAAA,CAAAiM,GACA,KAMAC,gBAAA,CACA,YAAA1C,YAAA,CAMA2C,kBAAA,CAEA,OADA,KAAA3C,YAAA,IACA,KAUA4C,aAAA1I,CAAA,CAAAZ,EAAA,IAuBA,GAtBA,KAAA6G,MAAA,EAAsB2B,OAAAC,IAAA,MAAA5B,MAAA,EAAA/G,MAAA,EACtBc,CAAAA,EAAAuB,KAAA,UAAA0E,MAAA,IAAAjG,EAAAuB,KAAA,GAEA,KAAAyE,KAAA,EAAqB4B,OAAAC,IAAA,MAAA7B,KAAA,EAAA9G,MAAA,EACrBc,CAAAA,EAAAgB,IAAA,UAAAgF,KAAA,IAAAhG,EAAAgB,IAAA,GAEA,KAAA+E,KAAA,EAAqB6B,OAAAC,IAAA,MAAA9B,KAAA,EAAA7G,MAAA,EACrBc,CAAAA,EAAAc,IAAA,UAAAiF,KAAA,IAAA/F,EAAAc,IAAA,GAEA,KAAAoF,SAAA,EAAyB0B,OAAAC,IAAA,MAAA3B,SAAA,EAAAhH,MAAA,EACzBc,CAAAA,EAAA+H,QAAA,UAAA7B,SAAA,IAAAlG,EAAA+H,QAAA,GAEA,KAAA1B,MAAA,EACArG,CAAAA,EAAAF,KAAA,MAAAuG,MAAA,EAEA,KAAAG,gBAAA,EACAxG,CAAAA,EAAAyH,WAAA,MAAAjB,gBAAA,EAMA,KAAAF,KAAA,EACAtG,EAAA+H,QAAA,EAAAY,MAAA,KAAArC,KAAA,CAAAsC,eAAA,MAAA5I,EAAA+H,QAAA,EACA,IAAAc,EAAA,KAAAvC,KAAA,CAAAmB,WAAA,OAAAnB,KAAA,CAAAmB,WAAA,CAAAhG,IAAA,CACAoH,GACA7I,CAAAA,EAAAgB,IAAA,EAAAyG,YAAAoB,EAAA,GAAA7I,EAAAgB,IAAA,EACA,QAEA,KAAA8H,iBAAA,CAAA9I,GAGAA,EAAA+I,WAAA,KAAA/I,EAAA+I,WAAA,aAAAlD,YAAA,EAAA7F,EAAA+I,WAAA,CAAA/I,EAAA+I,WAAA,CAAA7J,MAAA,GAAAc,EAAA+I,WAAA,CAAAtE,KAAAA,CAAA,CAEoCzE,EAAAgJ,qBAAA,KAAAhJ,EAAAgJ,qBAAA,SAAA7C,sBAAA,EAGpC,KAAA8C,sBAAA,KAAAC,OAAA,KAAAtD,gBAAA,EAAA5F,EAAAZ,EAAA,CAMA+J,yBAAAC,CAAA,CAAoC,CAGpC,OAHoC,KAAAjD,sBAAA,UAAAA,sBAAA,IAAAiD,CAAA,EAGpC,KAMAH,uBACAI,CAAA,CACArJ,CAAA,CACAZ,CAAA,CACAkK,EAAA,EACA,CACA,WAAA/L,EAAAgM,EAAA,EAAAC,EAAAC,IAAA,CACA,IAAAC,EAAAL,CAAA,CAAAC,EAAA,CACA,GAAAtJ,IAAA,GAAAA,GAAA,mBAAA0J,EACQF,EAAAxJ,OACR,CAA2C,IAAA2J,EAAAD,EAAA,IAAA1J,CAAA,EAAAZ,EAG3C,sBAAA6C,kBAAAA,gBAAA,GACAyH,EAAAtH,EAAA,EACUuH,IAAA,GAAAA,GAA4CnE,EAAAtD,EAAA,CAAA0H,GAAA,qBAAAF,EAAAtH,EAAA,mBAGtD,GAAA/E,EAAAwM,EAAA,EAAAF,GACAA,EACAG,IAAA,CAAAC,GAAA,KAAAd,sBAAA,CAAAI,EAAAU,EAAA3K,EAAAkK,EAAA,GAAAQ,IAAA,CAAAN,IACUM,IAAA,MAAAL,GAEV,KAAAR,sBAAA,CAAAI,EAAAM,EAAAvK,EAAAkK,EAAA,GACAQ,IAAA,CAAAN,GACAM,IAAA,MAAAL,EAEK,GACL,CAMA5C,uBAAA,CAIA,KAAAnB,mBAAA,GACA,KAAAA,mBAAA,IACA,KAAAC,eAAA,CAAAqE,OAAA,CAAA9M,GAAA,CACOA,EAAA,KACP,GACA,KAAAwI,mBAAA,IACA,CAOAoD,kBAAA9I,CAAA,EACoDA,EAAAkH,WAAA,CAAAlH,EAAAkH,WAAA,IAAA1J,EAAAyM,EAAA,EAAAjK,EAAAkH,WAAA,KAIpD,KAAAT,YAAA,EACAzG,CAAAA,EAAAkH,WAAA,CAAAlH,EAAAkH,WAAA,CAAAgD,MAAA,MAAAzD,YAAA,GAIAzG,EAAAkH,WAAA,GAAAlH,EAAAkH,WAAA,CAAAhI,MAAA,EACA,OAAAc,EAAAkH,WAAA,CAEA,CAMA,SAASgC,GAAA,CACT,SAAAzL,EAAA4H,CAAA,kCAOA,SAAAC,EAAApI,CAAA,EACAgM,IAAA5M,IAAA,CAAAY,EAAA,CAGA,gBAAAX,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA2N,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAAC,EAAA7N,EAAA,MAAAY,EAAAZ,EAAA,MCtiB6Ea,EAAAb,EAAA,KAW7E,SAAA2N,EAAA1I,CAAA,EACuC,IAAA6I,EAAA,GAAAD,EAAAE,EAAA,IAGvC3H,EAAS,CACT4H,IAAA,GAAApN,EAAAmC,EAAA,IACAkL,KAAA,GACAlK,UAAA+J,EACAI,QAAAJ,EACAK,SAAA,EACAjH,OAAA,KACAkH,OAAA,EACAC,eAAA,GACAC,OAAA,IA8GA,GAAYzN,EAAY0N,EAAA,GACxBP,IAAA,GAAA5H,EAAA4H,GAAA,GACAC,KAAA7H,EAAA6H,IAAA,CAEAC,QAAA,IAAAM,KAAApI,IAAAA,EAAA8H,OAAA,EAAAO,WAAA,GACA1K,UAAA,IAAAyK,KAAApI,IAAAA,EAAArC,SAAA,EAAA0K,WAAA,GACAvH,OAAAd,EAAAc,MAAA,CACAkH,OAAAhI,EAAAgI,MAAA,CACAM,IAAA,iBAAAtI,EAAAsI,GAAA,mBAAAtI,EAAAsI,GAAA,IAAAtI,EAAAsI,GAAA,GAAA1G,KAAAA,CAAA,CACAmG,SAAA/H,EAAA+H,QAAA,CACAQ,MAAA,CACAlI,QAAAL,EAAAK,OAAA,CACAC,YAAAN,EAAAM,WAAA,CACAkI,WAAAxI,EAAAyI,SAAA,CACKC,WAAA1I,EAAAS,SAAA,CAEL,EA9HA,EAOA,OAJA5B,GACAyI,EAAAtH,EAAAnB,GAGAmB,CAAA,CAcA,SAAAsH,EAAAtH,CAAA,CAAAnB,EAAA,IA6BA,IA5BAA,EAAAZ,IAAA,GACA,CAAA+B,EAAAyI,SAAA,EAAA5J,EAAAZ,IAAA,CAAAuK,UAAA,EACAxI,CAAAA,EAAAyI,SAAA,CAAA5J,EAAAZ,IAAA,CAAAuK,UAAA,EAGAxI,EAAAsI,GAAA,EAAAzJ,EAAAyJ,GAAA,EACAtI,CAAAA,EAAAsI,GAAA,CAAAzJ,EAAAZ,IAAA,CAAAsB,EAAA,EAAAV,EAAAZ,IAAA,CAAA0K,KAAA,EAAA9J,EAAAZ,IAAA,CAAA2K,QAAA,GAG6D5I,EAAArC,SAAA,CAAAkB,EAAAlB,SAAA,KAAA8J,EAAAE,EAAA,IAG7D9I,EAAAoJ,cAAA,EACAjI,CAAAA,EAAAiI,cAAA,CAAApJ,EAAAoJ,cAAA,EAEApJ,EAAA+I,GAAA,EAEA5H,CAAAA,EAAA4H,GAAA,CAAA/I,KAAAA,EAAA+I,GAAA,CAAAvL,MAAA,CAAAwC,EAAA+I,GAAA,IAAApN,EAAAmC,EAAA,KAEAiF,KAAAA,IAAA/C,EAAAgJ,IAAA,EACA7H,CAAAA,EAAA6H,IAAA,CAAAhJ,EAAAgJ,IAAA,EAEA,CAAA7H,EAAAsI,GAAA,EAAqBzJ,EAAAyJ,GAAY,EACjCtI,CAAAA,EAAAsI,GAAA,IAAAzJ,EAAAyJ,GAAA,IAEA,iBAAAzJ,EAAAiJ,OAAA,EACA9H,CAAAA,EAAA8H,OAAA,CAAAjJ,EAAAiJ,OAAA,EAEA9H,EAAAiI,cAAA,CACIjI,EAAA+H,QAAA,CAAAnG,KAAAA,OACJ,oBAAA/C,EAAAkJ,QAAA,CACI/H,EAAA+H,QAAA,CAAAlJ,EAAAkJ,QAAA,KACJ,CACA,IAAAA,EAAA/H,EAAArC,SAAA,CAAAqC,EAAA8H,OAAA,CACA9H,EAAA+H,QAAA,CAAAA,GAAA,EAAAA,EAAA,EACA,EACA1H,OAAA,EACAL,CAAAA,EAAAK,OAAA,CAAAxB,EAAAwB,OAAA,EAEAxB,EAAAyB,WAAA,EACAN,CAAAA,EAAAM,WAAA,CAAAzB,EAAAyB,WAAA,EAEA,CAAAN,EAAAyI,SAAA,EAAA5J,EAAA4J,SAAA,EACAzI,CAAAA,EAAAyI,SAAA,CAAA5J,EAAA4J,SAAA,EAEA,CAAAzI,EAAAS,SAAA,EAAA5B,EAAA4B,SAAA,EACAT,CAAAA,EAAAS,SAAA,CAAA5B,EAAA4B,SAAA,EAEA,iBAAA5B,EAAAmJ,MAAA,EACAhI,CAAAA,EAAAgI,MAAA,CAAAnJ,EAAAmJ,MAAA,EAEAnJ,EAAAiC,MAAA,EACAd,CAAAA,EAAAc,MAAA,CAAAjC,EAAAiC,MAAA,CACA,CAcA,SAAA0G,EAAAxH,CAAA,CAAAc,CAAA,EACA,IAAAjC,EAAA,GACAiC,EACIjC,EAAA,CAAAiC,OAAAA,CAAA,EACY,OAAhBd,EAAgBc,MAAA,EAChBjC,CAAAA,EAAA,CAAAiC,OAAA,WAGAwG,EAAAtH,EAAAnB,EAAA,CAgCA,gBAAAgK,CAAA,CAAAlP,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAmP,CAAA,uBAAAC,CAAA,QAAApH,EAAA/H,EAAA,MAAAoP,EAAApP,EAAA,MAAAqP,EAAArP,EAAA,MAAAsP,EAAAtP,EAAA,MAAAuP,EAAAvP,EAAA,MAAAwP,EAAAxP,EAAA,MC1IA,SAAAyP,GAAA,CACA,IAAAC,EAAA,GAAAF,EAAAG,EAAA,IACA,GAAAD,EAAA,CACA,IAAAxI,EAAA,gBACA,sBAAA1B,kBAAAA,gBAAA,GAAA4J,EAAA3J,EAAA,CAAA0H,GAAA,2BAAAjG,EAAA,2BACAwI,EAAAE,SAAA,CAAA1I,EACA,EAGA,IAAA2I,EAAA7P,EAAA,MAAA8P,EAAA9P,EAAA,MCfA,SAAA+F,GAAA,CACA,IAAAvE,EAAA,KAAAa,QAAA,GACA,GAAAb,EAAA,CACA,IAAAqJ,EAAArJ,EAAAsJ,OAAA,GACA,GAAAD,EACA,OACA,eAAAA,EAAAkF,aAAA,EACA,CACA,CACA,MACA,GAeA,SAAAC,EACAhF,CAAA,CACA3D,CAAA,CACA4I,CAAA,CACA,KAuFAC,MAtEAC,QAfA,GAAAX,EAAAY,EAAA,EAAA/I,GAMA2D,KAAAhD,IAAAgD,EAAAqF,OAAA,EACArF,EAAAsF,WAAA,EACKC,oBAAA,CAAA/I,OAAA,iBACL,GACAwD,IAMA,mBAAA3D,EAAAmJ,aAAA,EACAL,EAAA9I,EAAAmJ,aAAA,CAAAP,GACAjF,EAAAsF,WAAA,EACAC,oBAAA,CACA/I,OAAA,iBAEO0I,KAAAO,OAAAN,EACF,CACD,IACJF,KAAAjI,IAAAiI,EAAAS,aAAA,EACAP,EAAAF,EAAAS,aAAA,CACA1F,EAAAsF,WAAA,EACKC,oBAAA,CAAA/I,OAAA,cACD,KAEJ2I,EAAA9I,EAAAsJ,gBAAA,CACA3F,EAAAsF,WAAA,EACAC,oBAAA,CACA/I,OAAA,cAEO0I,KAAAO,OAAAN,EACF,CACL,IA+CAD,EA1CAC,EA4CA,GAAAd,EAAAuB,EAAA,EAAAV,IAAA,mBAAAA,GAAA,kBAAAA,CAAA,GACA,qBAAM1K,kBAAWA,gBAAA,GACjB4J,EAAA3J,EAAA,CAAAC,IAAA,CACA,0GAAAmL,KAAAC,SAAA,CACAZ,GACA,WAAAW,KAAAC,SAAA,QAAAZ,GAAA,IAEA,GAIAA,CAAAA,EAAA,GAAAA,EAAA,KACA,qBAAM1K,kBAAWA,gBAAA,GACjB4J,EAAA3J,EAAA,CAAAC,IAAA,qFAAAwK,EAAA,IACA,EAPA,GAlDA,qBAAA1K,kBAAAA,gBAAA,GAAA4J,EAAA3J,EAAA,CAAAC,IAAA,qEACAsF,EAAAqF,OAAA,IACArF,GAIAmF,GAcAnF,EAAAqF,OAAA,CAAA5E,KAAAsF,MAAA,GAAAZ,EAIAnF,EAAAqF,OAAA,GAUA,qBAAA7K,kBAAAA,gBAAA,GAAA4J,EAAA3J,EAAA,CAAA0H,GAAA,uBAAAnC,EAAAgG,EAAA,kBAAAhG,EAAAhG,IAAA,IACAgG,IAVA,qBAAMxF,kBAAUA,gBAAA,GAChB4J,EAAA3J,EAAA,CAAA0H,GAAA,CACA,oGAAAsD,OACUN,GACV,IAEAnF,IAxBA,qBAAMxF,kBAAUA,gBAAA,GAChB4J,EAAA3J,EAAA,CAAA0H,GAAA,CACA,4CACA,mBAAA9F,EAAAmJ,aAAA,CACA,oCACS,6EACT,GAEAxF,EAAAqF,OAAA,IACArF,IA3DAA,EAAAqF,OAAA,IACArF,EAAA,CAuHA,SAAAiG,EAEAC,CAAA,CACArL,CAAA,CACA,CACA,IAAAtE,EAAA,KAAAgB,SAAA,GAAA8E,EAAA,GAAA9F,EAAAuC,UAAA,OAGA,IAAAkH,EAAA,IAAA8E,EAAAlH,CAAA,CAAAsI,EAAA,MASA,MAHAlG,CALAA,EAAAgF,EAAAhF,EAAA3D,EAAA,CACAqJ,cAAAQ,EAAAR,aAAA,CACAQ,mBAAAA,EACG,GAAArL,CAAA,EACH,EACAwK,OAAA,EACArF,EAAAmG,gBAAA,CAAA9J,EAAA+J,YAAA,EAAA/J,EAAA+J,YAAA,CAAAC,QAAA,EAEArG,CAAA,CAMA,SAAAmE,EACApH,CAAA,CACAmJ,CAAA,CACAI,CAAA,CACAC,CAAA,CACAC,CAAA,CACA3L,CAAA,CACA,CACA,IAAAtE,EAAAwG,EAAAxF,SAAA,GAAA8E,EAAA,GAAA9F,EAAAuC,UAAA,OAGA,IAAAkH,EAAA,IAAA6E,EAAA4B,EAAA,CAAAP,EAAAnJ,EAAAuJ,EAAAC,EAAAC,GASA,MAHAxG,CALAA,EAAAgF,EAAAhF,EAAA3D,EAAA,CACAqJ,cAAAQ,EAAAR,aAAA,CACAQ,mBAAAA,EACG,GAAArL,CAAA,EACH,EACAwK,OAAA,EACArF,EAAAmG,gBAAA,CAAA9J,EAAA+J,YAAA,EAAA/J,EAAA+J,YAAA,CAAAC,QAAA,EAEArG,CAAA,CA2EA,SAAAkE,GAAA,CApEA,IAAAvH,CACAA,EADAA,EAAA,GAAAI,EAAA2J,EAAA,KACA9J,UAAA,GAGAD,EAAAC,UAAA,CAAAC,UAAA,CAAAF,EAAAC,UAAA,CAAAC,UAAA,KACAF,EAAAC,UAAA,CAAAC,UAAA,CAAAjC,gBAAA,EACA+B,CAAAA,EAAAC,UAAA,CAAAC,UAAA,CAAAjC,gBAAA,CAAAqL,CAAA,EAEAtJ,EAAAC,UAAA,CAAAC,UAAA,CAAA9B,YAAA,EACA4B,CAAAA,EAAAC,UAAA,CAAAC,UAAA,CAAA9B,YAAA,CAAAA,CAAA,GA+DA,GAAAuJ,EAAAjH,EAAA,KACAsJ,UAzDgB,CAChB,IAAAhK,EAAA,GAAAI,EAAA2J,EAAA,IACA,GAAA/J,EAAAC,UAAA,EAIA,IAAAgK,EAAA,CACAC,QAAAA,IAIK,GAAAvM,CAJiC,GAAAgK,EAAAwC,EAAA,EAAA7C,EAAA,8BAIjC8C,KAAA,CAELC,SAAAA,IAIK,GAAA1M,CAJiC,GAAAgK,EAAAwC,EAAA,EAAA7C,EAAA,8BAIjC8C,KAAA,EAAAC,SAAA,KAELC,MAAAA,IAIK,GAAA3M,CAJiC,GAAAgK,EAAAwC,EAAA,EAAA7C,EAAA,8BAIjCiD,KAAA,CAELC,GAAAA,IAIK,GAAA7M,CAJiC,GAAAgK,EAAAwC,EAAA,EAAA7C,EAAA,iCAIjCmD,QAAA,EAILC,EAAAlH,OAA4BC,IAAA,CAAAwG,GAC5BU,MAAA,CAAAC,GAAA,KAAAjD,EAAAkD,EAAA,EAAAD,IACAE,GAAA,CAAAC,GAAA,CACA,IACQ,OAAAd,CAAA,CAAAc,EAAA,EACR,OAAAC,EAAA,CACA,MACK,CACL,GAAAL,MAAA,CAAAM,GAAAA,EAGAP,CAAAA,EAAA5P,MAAA,IACAkF,CAAAA,EAAAC,UAAA,CAAAiL,YAAA,KAAAlL,EAAAC,UAAA,CAAAiL,YAAA,QAAAR,EAAA,EA1CA,ID9NE,GAAA9C,EAAAuD,CAAA,EAAyB,QAAArD,GAC3B,GAAAF,EAAAuD,CAAA,uBAAArD,ECuRA,CAhS6CR,EAAAjP,EAAA+S,GAAA,CAAA9D,EAmS7C,gBAAAnP,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAiT,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAAtS,EAAAZ,EAAA,MAAAc,EAAAd,EAAA,MAAAmT,EAAAnT,EAAA,MCnSwDoT,EAAApT,EAAA,MAKxDkT,EAAA,IACAD,EAAA,GAMA,OAAAI,UAAAF,EAAAG,EAAA,CACAhS,YACAiS,CAAA,CACAC,CAAA,CACAC,CAAA,CACAC,CAAA,CACA,CACA,MAAAA,GAAA,KAAAH,aAAA,CAAAA,EAAA,KAAAC,YAAA,CAAAA,EAAA,KAAAC,iBAAA,CAAAA,CAAA,CAMAE,IAAA9I,CAAA,EAGAA,EAAA+I,MAAA,QAAAH,iBAAA,GAEA5I,EAAAgJ,MAAA,KACAhJ,EAAAiJ,YAAA,kBAAAA,EAAAA,EAAA,GAAAlT,EAAAmT,EAAA,IACA,KAAAP,YAAA,CAAA3I,EAAA+I,MAAA,GAIA5L,KAAAA,IAAA6C,EAAAiJ,YAAA,EACA,KAAAP,aAAA,CAAA1I,EAAA+I,MAAA,GAIA,MAAAD,GAAA,CAAA9I,EACA,EAQA,MAAAmI,UAAAI,EAAAxK,CAAA,CACaxH,QAAA,MAAA4S,UAAA,IAMCC,SAAA,MAAAC,iBAAA,GAGAC,SAAA,MAAAC,SAAA,IAECC,SAAA,MAAAC,sBAAA,IAQfhT,YACA4P,CAAA,CACAqD,CAAA,CAKAC,EAAAtB,CAAA,CAIAuB,EAAAxB,CAAA,CAEAyB,EAAA,GACA,CAAoS,MAAAxD,EAAAqD,GAAA,KAAAA,QAAA,CAAAA,EAAA,KAAAC,YAAA,CAAAA,EAAA,KAAAC,aAAA,CAAAA,EAAA,KAAAC,QAAA,CAAAA,EAAA1B,EAAArR,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAAAoR,EAAArR,SAAA,CAAAsS,OAAA,CAAArS,IAAA,OAAAoR,EAAArR,SAAA,CAAAwS,OAAA,CAAAvS,IAAA,OAAAoR,EAAArR,SAAA,CAAA0S,OAAA,CAAAzS,IAAA,OAGpS8S,IACAC,EAAAJ,GAKA,qBAAA/O,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,qDAAAyG,MAAA,IACAW,EAAAnU,cAAA,CAAAoB,GAAAA,EAAAoJ,OAAA,SAGA,KAAAgK,iBAAA,GACAC,WAAA,KACA,KAAAT,SAAA,GACA,KAAAxE,SAAA,sBACA,KAAAiE,MAAA,GAEA,OAAAY,aAAA,EAIAZ,OAAAC,EAAA,GAAAlT,EAAAmT,EAAA,KAIA,GAHA,KAAAK,SAAA,SAAAJ,UAAA,IAGA,KAAAc,YAAA,EAIA,QAAArU,KAHA,qBAAQ+E,kBAAAA,gBAAA,GAAU1E,EAAA2E,EAAA,CAAA0H,GAAA,2CAAAqB,KAAAsF,IAAAA,GAAArF,WAAA,QAAAuC,EAAA,EAGlB,KAAAsD,sBAAA,EACA7T,EAAA,KAAAqT,EAGA,MAAAgB,YAAA,CAAAC,KAAA,MAAAD,YAAA,CAAAC,KAAA,CAAAzC,MAAA,KAEA,GAAAzH,EAAA+I,MAAA,QAAAA,MAAA,CACA,UAIA/I,EAAAiJ,YAAA,GACAjJ,EAAAiJ,YAAA,CAAAA,EACAjJ,EAAA+E,SAAA,cACA,qBAAYpK,kBAAAA,gBAAA,GACZ1E,EAAA2E,EAAA,CAAA0H,GAAA,2DAAA0D,KAAAC,SAAA,CAAAjG,EAAA7C,KAAAA,EAAA,KAGA,IAAAgN,EAAAnK,EAAAoK,cAAA,CAAAnB,EAQO,MAPP,CAAAkB,GACA,qBAAYxP,kBAAAA,gBAAA,GACZ1E,EAAA2E,EAAA,CAAA0H,GAAA,CACA,6EACA0D,KAAAC,SAAA,CAAAjG,EAAA7C,KAAAA,EAAA,IAGOgN,CAAA,GAGD,qBAAAxP,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,sCACN,KACA,qBAAA3H,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,wCAQA,OAJA,KAAAuH,QAAA,EACAC,EAAA,KAAAJ,QAAA,EAGA,MAAAV,MAAA,CAAAC,EAAA,CAUAoB,6BAAAzU,CAAA,EACA,KAAA6T,sBAAA,CAAAzU,IAAA,CAAAY,EAAA,CAMA0Q,iBAAAuC,CAAA,EACA,SAAAoB,YAAA,EACA,IAAAK,EAAA,IACA,KAAAf,SAAA,EAGA,KAAAb,aAAA,CAAA5N,EACA,EACAyP,EAAA,IACA,KAAAhB,SAAA,EAGA,KAAAZ,YAAA,CAAA7N,EAAA,CAEA,MAAAmP,YAAA,KAAAzB,EAAA8B,EAAAC,EAAA,KAAAxB,MAAA,CAAAF,GAIA,qBAAAlO,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,uBACA,KAAAkI,cAAA,EACA,KACA,CAAAP,YAAA,CAAAnB,GAAA,OAMA2B,oBAAA,CACA,KAAAC,cAAA,GACAC,aAAA,KAAAD,cAAA,EACA,KAAAA,cAAA,CAAAvN,KAAAA,EACA,CAMA4M,kBAAAd,CAAA,EACA,KAAAwB,kBAAA,GACA,KAAAC,cAAA,CAAAV,WAAA,KACA,KAAAT,SAAA,EAAAjJ,IAAAA,OAAAC,IAAA,MAAA4I,UAAA,EAAAvR,MAAA,EACA,KAAAoR,MAAA,CAAAC,EAEA,OAAAU,YAAA,EAOAjB,cAAAK,CAAA,EACA,KAAA0B,kBAAA,GACA,qBAAA9P,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,4BAAAyG,EAAA,GACA,KAAAI,UAAA,CAAAJ,EAAA,IACA,qBAAApO,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,kCAAAhC,OAAAC,IAAA,MAAA4I,UAAA,EAAAvR,MAAA,EAOA+Q,aAAAI,CAAA,EAOA,GANA,KAAAI,UAAA,CAAAJ,EAAA,GACA,qBAAApO,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,0BAAAyG,EAAA,GACA,YAAAI,UAAA,CAAAJ,EAAA,CACA,qBAAApO,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,kCAAAhC,OAAAC,IAAA,MAAA4I,UAAA,EAAAvR,MAAA,GAGA0I,IAAAA,OAAAC,IAAA,MAAA4I,UAAA,EAAAvR,MAAA,EAGA,IAAAqR,EAAA,GAAAlT,EAAAmT,EAAA,SAAAS,YAAA,KACA,KAAAI,iBAAA,CAAAd,EACA,EAOA2B,OAAA,CAEA,SAAArB,SAAA,EAGA,IAAAsB,EAAAvK,OAAAC,IAAA,MAAA4I,UAAA,EAAA2B,IAAA,IAGAD,CAAAA,IAAA,KAAAE,oBAAA,CACM,KAAA1B,iBAAA,IAEN,KAAAA,iBAAA,GAEA,KAAA0B,oBAAA,CAAAF,EAGA,KAAAxB,iBAAA,KACA,qBAAA1O,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,0EACA,KAAAyC,SAAA,sBACM,KAAAiE,MAAA,IAEN,KAAAwB,cAAA,GAlBA,CAyBAA,gBAAA,CACA,qBAAA7P,kBAAAA,gBAAA,GAAA1E,EAAA2E,EAAA,CAAA0H,GAAA,+CAAA+G,iBAAA,IACAW,WAAA,KACK,KAAAY,KAAA,EACL,EArRA,IAsRA,EAMA,SAAAd,EAAA5M,CAAA,EACA,IAAAvG,EAAAuG,EAAA1F,QAAA,GACAb,GACAA,EAAAuJ,cAAA,IAEAvJ,EAAAoJ,OAAA,CAAA5C,KAAAA,EAEA,CAGA,gBAAAlI,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA8V,CAAA,uBAAAC,CAAA,QAAAC,EAAA/V,EAAA,MAAA6N,EAAA7N,EAAA,MAAAY,EAAAZ,EAAA,MAAAa,EAAAb,EAAA,MC5SoEc,EAAAd,EAAA,IAUpE,OAAA8V,EAAa1U,QAAA,MAAA2T,KAAA,IAGbzT,YAAAoS,EAAA,KAAAoC,EAAAnU,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OACA,KAAAoU,OAAA,CAAAtC,CAAA,CASAC,IAAA9I,CAAA,EACA,KAAAkK,KAAA,CAAAtS,MAAA,MAAAuT,OAAA,CACMnL,EAAAiK,YAAA,CAAA9M,KAAAA,EAEN,KAAA+M,KAAA,CAAAlV,IAAA,CAAAgL,EAEA,EAMA,MAAAgL,EAGkC5B,SAAA,MAAAgC,OAAA,IAAApI,EAAA9K,EAAA,IAKDoR,SAAA,MAAAP,MAAA,IAAA/F,EAAA9K,EAAA,IAAAmT,SAAA,KAoBkB7B,SAAA,MAAAY,cAAA,IAAArU,EAAAmT,EAAA,IAoBrCoC,SAAA,MAAA5R,IAAA,IAKE6R,SAAA,MAAAC,IAAA,IAoBhB/U,YAAAgV,CAAA,EACA,GADAT,EAAAlU,SAAA,CAAAsS,OAAA,CAAArS,IAAA,OAAAiU,EAAAlU,SAAA,CAAAwS,OAAA,CAAAvS,IAAA,OAAAiU,EAAAlU,SAAA,CAAA0S,OAAA,CAAAzS,IAAA,OAAAiU,EAAAlU,SAAA,CAAAwU,OAAA,CAAAvU,IAAA,OAAAiU,EAAAlU,SAAA,CAAAyU,OAAA,CAAAxU,IAAA,OACA,CAAA0U,EACA,YAEAA,EAAAL,OAAA,EACA,MAAAA,OAAA,CAAAK,EAAAL,OAAA,EAEAK,EAAA1C,MAAA,EACA,MAAAA,MAAA,CAAA0C,EAAA1C,MAAA,EAEA0C,EAAAC,YAAA,EACA,MAAAA,YAAA,CAAAD,EAAAC,YAAA,EAGA,YAAAD,GACA,MAAAjG,OAAA,CAAAiG,EAAAjG,OAAA,EAEAiG,EAAAtF,EAAA,EACA,MAAAA,EAAA,CAAAsF,EAAAtF,EAAA,EAEAsF,EAAAE,WAAA,EACA,MAAAA,WAAA,CAAAF,EAAAE,WAAA,EAEAF,EAAAD,IAAA,EACA,MAAAA,IAAA,CAAAC,EAAAD,IAAA,EAEAC,EAAA/R,IAAA,EACA,MAAAA,IAAA,CAAA+R,EAAA/R,IAAA,EAEA+R,EAAApP,MAAA,EACA,MAAAA,MAAA,CAAAoP,EAAApP,MAAA,EAEAoP,EAAArB,cAAA,EACA,MAAAA,cAAA,CAAAqB,EAAArB,cAAA,EAEAqB,EAAAxC,YAAA,EACA,MAAAA,YAAA,CAAAwC,EAAAxC,YAAA,CACA,CAMA2C,WACAH,CAAA,CACA,CACA,IAAAI,EAAA,IAAAb,EAAA,CACA,GAAAS,CAAA,CACAC,aAAA,KAAA3C,MAAA,CACAvD,QAAA,KAAAA,OAAA,CACK4F,QAAA,KAAAA,OAAA,GAUL,GAPAS,EAAA5B,YAAA,MAAAA,YAAA,CACA4B,EAAA5B,YAAA,EACA4B,EAAA5B,YAAA,CAAAnB,GAAA,CAAA+C,GAEAA,EAAA1L,WAAA,MAAAA,WAAA,CAGA,qBAAAxF,kBAAAA,gBAAA,GAAAkR,EAAA1L,WAAA,EAKA,IAAA2L,EAAA,uBAJA,GAAAL,EAAAtF,EAAA,mBAIA,uBAAwE,EAHxE0F,EAAA1L,WAAA,CAAAhG,IAAA,qBAGwE,KAHxE0R,EAAA1L,WAAA,CAAA4I,MAAA,CAGwE,IAClE8C,EAAA1L,WAAA,CAAA4L,QAAA,CAAAC,YAAA,CAAAH,EAAA9C,MAAA,GAAA+C,WAAAA,CAAU,EAChB9V,EAAA4E,EAAA,CAAA0H,GAAA,CAAAwJ,EAAA,QAGAD,CAAA,CAMAhS,OAAAC,CAAA,CAAAC,CAAkB,EAElB,OADA,KAAAL,IAAA,UAAAA,IAAA,EAAAI,EAAA,CAAAC,CAAA,EACA,KAMAkS,QAAAnS,CAAA,CAAkBC,CAAA,EAElB,OADA,KAAAyR,IAAA,UAAAA,IAAA,EAAA1R,EAAA,CAAAC,CAAA,EACA,KAMAgL,UAAAhL,CAAA,EAEA,OADA,KAAAsC,MAAA,CAAAtC,EACA,KAMAmS,cAAAC,CAAA,EACA,KAAAtS,MAAA,oBAAAuS,OAAAD,IACA,IAAAE,EAAAC,SA+HAH,CAAA,EACA,GAAAA,EAAA,KAAAA,GAAA,IACA,WAGA,GAAAA,GAAA,KAAAA,EAAA,IACA,OAAAA,GACA,SACA,uBACA,UACA,yBACA,UACA,iBACA,UACA,sBACA,UACA,2BACA,UACA,0BACA,SACA,wBACA,IAGAA,GAAA,KAAAA,EAAA,IACA,OAAAA,GACA,SACA,qBACA,UACA,mBACA,UACA,yBACA,SACA,sBACA,OAGA,iBApKAA,GAIA,MAHA,kBAAAE,GACA,KAAAtH,SAAA,CAAAsH,GAEA,KAMAE,WAAA,CACA,kBAAAlQ,MAAA,CAMA2M,OAAAC,CAAA,EACA,GACA,qBAAAtO,kBAAAA,gBAAA,GAEA,KAAAwF,WAAA,EACA,KAAAA,WAAA,CAAA4I,MAAA,QAAAA,MAAA,CACA,CACA,IAAA+C,WAAAA,CAAA,OAAA3L,WAAA,CAAA4L,QAAA,CAAAC,YAAA,MAAAjD,MAAA,EACQ+C,GACR9V,EAAA4E,EAAA,CAAA0H,GAAA,GAAAkK,OAAA,yBACA,KAGA,CAAAvD,YAAA,kBAAAA,EAAAA,EAAA,GAAAlT,EAAAmT,EAAA,IAMAhE,eAAA,CACA,IAAAuH,EAAA,GAIA,OAHAtP,KAAAA,IAAA,KAAAqI,OAAA,EACAiH,CAAAA,EAAA,KAAAjH,OAAA,YAEA,QAAA4F,OAAA,SAAArC,MAAA,GAAA0D,EAAA,EAMAC,WAAW,CACX,SAAAzW,EAAAyN,EAAA,GACA8H,KAAA,KAAAA,IAAA,CACAG,YAAA,KAAAA,WAAA,CACA1C,aAAA,KAAAA,YAAA,CACA9C,GAAA,KAAAA,EAAA,CACAuF,aAAA,KAAAA,YAAA,CACAlG,QAAA,KAAAA,OAAA,CACAuD,OAAA,KAAAA,MAAA,CACAqB,eAAA,KAAAA,cAAA,CACA/N,OAAA,KAAAA,MAAA,CACA3C,KAAA,KAAAA,IAAA,CACK0R,QAAA,KAAAA,OAAA,EACL,CAMAuB,kBAAgBlB,CAAA,EAahB,OAZA,KAAAD,IAAA,IAAAN,EAAA0B,CAAA,EAAAnB,EAAAD,IAAA,WACA,KAAAG,WAAA,CAAAF,EAAAE,WAAA,CACA,KAAA1C,YAAA,CAAAwC,EAAAxC,YAAA,CACA,KAAA9C,EAAA,CAAAsF,EAAAtF,EAAA,CACA,KAAAuF,YAAA,CAAAD,EAAAC,YAAA,CACA,KAAAlG,OAAA,CAAkBiG,EAAAjG,OAAA,CAClB,KAAAuD,MAAA,IAAAmC,EAA0B0B,CAAA,EAAAnB,EAAgB1C,MAAA,UAAAA,MAAA,EAC1C,KAAAqB,cAAA,IAAAc,EAAA0B,CAAA,EAAAnB,EAAArB,cAAA,UAAAA,cAAA,EACA,KAAA/N,MAAA,CAAgBoP,EAAApP,MAAA,CAChB,KAAA3C,IAAA,IAAmBwR,EAAA0B,CAAA,EAAAnB,EAAgB/R,IAAA,gBAAA0R,OAAA,IAAAF,EAAA0B,CAAA,EAAAnB,EAAAL,OAAA,UAAAA,OAAA,EAGnC,KAKA9J,iBAGA,CACA,SAAArL,EAAAyN,EAAA,GACA8H,KAAAlL,OAAAC,IAAA,MAAAiL,IAAA,EAAA5T,MAAA,QAAA4T,IAAA,CAAArO,KAAAA,CAAA,CACAwO,YAAA,KAAAA,WAAA,CACAxF,GAAA,KAAAA,EAAA,CACA0G,eAAA,KAAAnB,YAAA,CACAoB,QAAA,KAAA/D,MAAA,CACA1M,OAAA,KAAAA,MAAA,CACA3C,KAAA4G,OAAAC,IAAA,MAAA7G,IAAA,EAAA9B,MAAA,QAAA8B,IAAA,CAAAyD,KAAAA,CAAA,CACK4P,SAAA,KAAA3B,OAAA,EACL,CAKA3H,QAGA,CACA,SAAAxN,EAAAyN,EAAA,GACA8H,KAAAlL,OAAAC,IAAA,MAAAiL,IAAA,EAAA5T,MAAA,QAAA4T,IAAA,CAAArO,KAAAA,CAAA,CACAwO,YAAA,KAAAA,WAAA,CACAxF,GAAA,KAAAA,EAAA,CACA0G,eAAA,KAAAnB,YAAA,CACAoB,QAAA,KAAA/D,MAAA,CACAiE,gBAAA,KAAA5C,cAAA,CACA/N,OAAA,KAAAA,MAAA,CACA3C,KAAA4G,OAAAC,IAAA,MAAA7G,IAAA,EAAA9B,MAAA,QAAA8B,IAAA,CAAAyD,KAAAA,CAAA,CACAjE,UAAA,KAAA+P,YAAA,CACK8D,SAAA,KAAA3B,OAAA,EAEL,EAiDA,gBAAAnW,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,qBAAA+X,CAAA,QAAA/B,EAAA/V,EAAA,MAAA+X,EAAA/X,EAAA,MAAAa,EAAAb,EAAA,MAAAc,EAAAd,EAAA,KAAAe,EAAAf,EAAA,MCzXoEmT,EAAAnT,EAAA,KAOpE,OAAA8X,UAAA3E,EAAA6E,EAAA,CAOa5W,QAAA,MAAA6W,aAAA,IAUb3W,YAAA4P,CAA8B,CAAAnJ,CAAA,QAAAmJ,GAAA4G,EAAAnW,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAEM,KAAAsW,IAAA,CAAAnQ,GAAA,GAAAgQ,EAAAvX,EAAA,IAEpC,KAAA2X,KAAA,CAAAjH,EAAAlM,IAAA,KAGA,KAAA4R,QAAA,EACA,GAAA1F,EAAsB0F,QAAA,CACtBC,aAAA,IAEA,KAAAuB,QAAA,CAAAlH,EAAAmH,OAAA,CAIA,KAAArN,WAAA,MAIA,IAAAhG,MAAA,CACA,YAAAmT,KAAA,CAIA,IAAAnT,KAAAsT,CAAA,EACA,KAAAH,KAAA,CAAAG,EACA,KAAA1B,QAAA,CAAA2B,MAAA,UAMAC,QAAAxT,CAAA,CAAAuT,EAAA,UACA,KAAAvT,IAAA,CAAAA,EACA,KAAA4R,QAAA,CAAA2B,MAAA,CAAAA,CAAA,CAOApH,iBAAAuC,EAAA,KACA,KAAAoB,YAAA,EACA,MAAAA,YAAA,KAAA3B,EAAAG,EAAA,CAAAI,EAAA,EAEA,KAAAoB,YAAA,CAAAnB,GAAA,OAMA8E,eAAAzT,CAAA,CAAAJ,CAAA,CAAA8T,EAAiC,IACjC,KAAAT,aAAA,CAAAjT,EAAA,EAAAJ,MAAAA,EAAA8T,KAAAA,CAAA,EAMApI,YAAAqI,CAAsB,EACtB,KAAA/B,QAAA,UAAAA,QAAA,IAAA+B,CAAA,EAMA9E,OAAAC,CAAA,EAEA,QAAA9L,IAAA,KAAA8L,YAAA,EAYA,GARA,KAAA9O,IAAA,GACA,qBAAAQ,kBAAAA,gBAAA,GAAA3E,EAAA4E,EAAA,CAAAC,IAAA,wEACA,KAAAV,IAAA,4BAGA,MAAA6O,MAAA,CAAAC,GAGA,UAAAzD,OAAA,EACiF,qBAAA7K,kBAAAA,gBAAA,GAAA3E,EAAA4E,EAAA,CAAA0H,GAAA,qFAGjF,IAAA5L,EAAA,KAAA2W,IAAA,CAAA3V,SAAA,GACAhB,GACAA,EAAAqX,kBAAA,8BAGA,WAEAC,EAAA,KAAA/D,YAAA,MAAAA,YAAA,CAAAC,KAAA,CAAAzC,MAAA,CAAA7Q,GAAAA,IAAA,MAAAA,EAAAqS,YAAA,KAGA,KAAAsE,QAAA,EAAAS,EAAApW,MAAA,IACA,MAAAqR,YAAA,CAAA+E,EAAAC,MAAA,EAAAC,EAAAC,IACA,EAAAlF,YAAA,EAAAkF,EAAAlF,YAAA,CACAiF,EAAAjF,YAAA,CAAAkF,EAAAlF,YAAA,CAAAiF,EAAAC,CAAA,CAEOD,CADP,EAEAjF,YAAA,EAEA,IAAA8C,EAAA,KAAAA,QAAA,CAGA5L,EAAA,CACAM,SAAA,CACOY,MAAA,KAAAC,eAAA,EACP,EACA4I,MAAA8D,EACAhB,gBAAA,KAAA5C,cAAA,CACA1Q,KAAA,KAAAA,IAAA,CACAR,UAAA,KAAA+P,YAAA,CACA9I,YAAA,KAAAhG,IAAA,CACAxB,KAAA,cACA+I,sBAAA,CACA,GAAAqK,CAAA,CACOqC,QAAA,KAAAC,UAAA,EACP,EACA,GAAAtC,EAAA2B,MAAA,GACAY,iBAAA,CACSZ,OAAA3B,EAAA2B,MAAA,CAET,GAgBA,OAdApN,OAAAC,IAAA,MAAA6M,aAAA,EAAAxV,MAAA,KAIA,qBAAQ+C,kBAAAA,gBAAA,GACR3E,EAAA4E,EAAA,CAAA0H,GAAA,CACA,oDACA0D,KAAAC,SAAA,MAAAmH,aAAA,CAAAjQ,KAAAA,EAAA,IAEAgD,EAAAoO,YAAA,MAAAnB,aAAA,EAEyI,qBAAAzS,kBAAAA,gBAAA,GAAA3E,EAAA4E,EAAA,CAAA0H,GAAA,6BAAA6D,EAAA,sBAAAhM,IAAA,KAGzI,KAAAkT,IAAA,CAAA5U,YAAA,CAAA0H,GAtEA,CA4EAuM,WAAA,KAAAjB,EAAA,MAAAiB,SAAA,GAGA,SAAAzW,EAAAyN,EAAA,GACA,GAAA+H,CAAA,CACAtR,KAAA,KAAAA,IAAA,CACKqT,QAAA,KAAAD,QAAA,EACL,CAMAZ,kBAAAtG,CAAA,EAOA,OAPA,MAAAsG,iBAAA,CAAAtG,GAEgC,KAAAlM,IAAA,IAAA+Q,EAAA0B,CAAA,EAAAvG,EAAAlM,IAAA,SAEhC,KAAAoT,QAAA,CAAAlH,EAAAmH,OAAA,CAGA,KAQAa,YAAA,KAAAG,EAAA,KAAAzC,QAAA,CAAAqC,OAAA,CAKAK,EACA,CAAAD,GAAA,GAAAtY,EAAAwY,EAAA,EAAAF,GACA,KAAAG,gCAAA,CAAAH,GAAAA,CAAA,CAMA,OAHA,KAAAzC,QAAA,CAAAqC,OAAA,CAAAK,EAGAA,CAAA,CAgBAE,iCAA2BP,EAAA,GAAAlY,EAAa0Y,EAAA,OACxC,IAAA1R,EAAA,KAAAmQ,IAAA,KAAAH,EAAAvX,EAAA,IAAAe,EAAAwG,GAAAA,EAAAxF,SAAA,GAEA,IAAAhB,EAAA,OAAA0X,CAAA,CAGA,IAAYvS,YAAAA,CAAA,CAAAD,QAAAA,CAAA,EAAwBlF,EAAAuC,UAAA,QAAA4V,UAAAC,CAAA,EAAApY,EAAAqY,MAAA,OAGpC,IAAAC,EACA,KAAAjD,QAAA,EACA,KAAAA,QAAA,CAAArG,mBAAA,EACA,KAAAqG,QAAA,CAAArG,mBAAA,CAAAL,IAAA,OAAA0G,QAAA,CAAArG,mBAAA,CAAAL,IAAA,CAAA4J,QAAA,GAGAtY,EAAYuG,EAAA1F,QAAA,GAAwB,IAAA0X,QAAAC,CAAA,KAAAxY,EAAAwF,OAAA,OAGpC,IAAAuR,EAAA,KAAA3B,QAAA,CAAA2B,MAAA,CAAAvN,EAAAuN,GAAAA,QAAAA,EAAA,KAAAvT,IAAA,CAAAgD,KAAAA,CAAA,CAGA,MAAM,GAAAjH,EAAA0Y,EAAiB,EACvB,GAAA3Y,EAAAyN,EAAA,GACA7H,YAAAA,EACAD,QAAAA,EACAuE,YAAAA,EACAgP,aAAAA,EACAL,WAAAA,EACA/B,SAAA,KAAA3B,OAAA,CACA4D,YAAAA,EACQ,MAAA9Y,EAAAkZ,EAAA,EAAAhB,EAAA,GAER,GACA,GAEA,EAGA,gBAAAnZ,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAma,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,ICvQ4C,IAAAC,EAAAra,EAAA,MAS5C,SAAAoa,EACAE,CAAA,CACA,CACA,IAAA/Y,EAAA,GAAA8Y,EAAA7Z,EAAA,IAAA+B,SAAA,GACA8E,EAAAiT,GAAA/Y,GAAAA,EAAAuC,UAAA,GACA,QAAAuD,GAAA,sBAAAA,GAAA,kBAAAA,CAAA,EAIA,SAAA8S,EAAwBI,CAAA,EAExB,IAAA/Y,EAAAuG,CADAwS,GAAA,GAAAF,EAAA7Z,EAAA,KACA6B,QAAA,GACA,OAAAb,GAAAA,EAAAuJ,cAAA,GAOA,SAAAmP,EAAAM,CAAA,EACA,OAAAA,EAAA,IAWA,gBAAA1a,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA0a,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAAC,EAAAhb,EAAA,MCxCmCib,EAAAjb,EAAA,MAGnC8a,EAAA,UAIAI,EAAA,WAWA,SAAAP,EAAYQ,CAAc,CAAAC,EAAA,GAAAC,EAAA,IAC1B,WAAAF,CAAA,EAAAC,EAAAC,EAAA,CAqBA,SAAAX,EAAAzB,CAAA,EACA,OAAAA,CAAA,IAgBA,SAAAwB,EAAAxB,CAAA,EACA,OAAAA,CAAA,IAkCA,SAAA4B,EACAS,CAAA,CACAC,EAAA,GACA,OAGA,OAAAC,OAAA,CAAAF,IAAA,GAAAN,EAAAS,EAAA,EAAAH,EAAA,oBAAAA,EAiBAI,CALA,GAAAV,EAAAS,EAAA,EAAAH,GAAAA,EAAAA,EAAA3F,IAAA,OACAgG,KAAA,MACAlJ,GAAA,CAAAmJ,GAAAA,EAAAC,IAAA,IAAAvJ,MAAA,CAAAsJ,GAAAA,KAAAA,GAAAL,CAAAA,GAAAL,EAAAY,IAAA,CAAAF,EAAA,GAGA9C,MAAA,CACA,EAAAiD,EAAAX,EAAA,CAAAY,IAAA,CACA,IAAArX,EAAAsX,EAAA,CAAAD,EAAAL,KAAA,MACA,IAAAT,EAAAY,IAAA,CAAAnX,GAWA,OAAAoX,EAAAX,KAAAA,EAAAY,EAAA,GAAAZ,EAAA,GAAAY,EAAA,MAVA,IAAAE,EAAAC,mBAAAxX,EAAAgX,KAAA,UACA,OACA,CACA,GAAAI,CAAA,CACW,CAAAG,EAAA,CAAAC,mBAAAF,EACX,EACAb,EACA,GACQ,EAKR,aAjCA,qBAAM5V,kBAAAA,gBAAA,GACNyV,EAAAxV,EAAA,CAAAC,IAAA,CACA,mEACA,OAAA4V,EACAA,GAIAX,EAAA,QA4CA,SAAAC,EAAAwB,CAAA,CAAAC,CAAA,EACA,IAAAD,GAAA,CAAAC,EACA,SAGA,IAtFApD,EAsFAqD,EAAA,GAAAzB,EAAAwB,EAAA,KAAArU,KAAAA,EAAAuU,EAAAD,GA3GArD,CAAA,IA+GA,OAzFA9N,OAAAC,IAAA,CAAA6N,CADAA,EAyFA0B,EAAA,GAAAyB,CAAA,QAAAG,GAAA,IAxFA,KAAAzD,MAAA,EAAAC,EAAApU,IAAA,CACA,IAAAsX,EAAAhD,CAAA,IAAAtU,EAA0B,CAC1B6X,EAAA,UAAsDC,mBAAgB9X,MAAA8X,mBAAAR,IAAA,CACtES,EAAA3D,KAAAA,EAAAyD,EAAA,GAAAzD,EAAA,GAAAyD,EAAA,SACA,EAAA/Z,MAAA,CA7DA,MA8DA,qBAAQ+C,kBAAAA,gBAAA,GACRyV,EAAAxV,EAAA,CAAAC,IAAA,oBAAAf,EAAA,aAAAsX,EAAA,oDACMlD,GAEN2D,CACG,EACHzD,CAAA,IA8EA,CAcA,SAAA8B,EACA4B,CAAA,CACAC,CAAA,CACA,KAAA3D,EAAA4B,EAAA8B,GAAA,IAeA,MAHA,CAAAC,GAAA,IAzJAzR,OAAAC,IAAA,CAAA6N,CAAA,KAAAxW,MAAA,GA8BAwW,CAAAA,CAAA,QA8HAA,CAAA,CAGA,gBAAAnZ,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA8c,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAAC,EAAAhd,EAAA,MCnM8Cid,EAAAjd,EAAA,MAU9C,SAAA6c,EAAAK,CAAA,CAAAC,CAAA,EAOA,IACA,IAOAC,EAPAC,EAAAH,EAGA,IAAAI,EAAA,GACA,IAAAC,EAAA,EACAC,EAAA,EAKA,KAMA,GANAD,IATA,IAUAH,EAAAK,SA0BAC,CAAA,CAAAP,CAAA,MAMAQ,EACAC,EACAjZ,EACAkZ,EAAAC,EAJA,IAAAR,EAAA,GAOA,IAZAI,GAYA,CAAAR,EAAAa,OAAA,CACA,SAEAT,EAAAzd,IAAA,CAAAqd,EAAAa,OAAA,CAAAC,WAAA,IAIA,IAAAC,EACAd,GAAAA,EAAA1a,MAAA,CACA0a,EAAA7K,MAAA,CAAA4L,GAAAhB,EAAAiB,YAAA,CAAAD,IAAAzL,GAAA,CAAAyL,GAAA,CAAAA,EAAAhB,EAAAiB,YAAA,CAAAD,GAAA,OAGA,GAAAD,GAAAA,EAAAxb,MAAA,CACAwb,EAAA1Q,OAAmB,CAAA6Q,GAAmB,CACjCd,EAAAzd,IAAA,KAAAue,CAAA,QAAAA,CAAA,QACD,QAOJ,GALAlB,EAAAvX,EAAA,EACA2X,EAAAzd,IAAA,KAAAqd,EAAAvX,EAAA,IAIAgY,CADAA,EAAAT,EAAqBS,SAAA,GACrB,GAAAV,EAAAxB,EAAA,EAAAkC,GAEA,IAAAG,EAAA,EADAF,EAAAD,EAAkBhC,KAAA,QAClBmC,EAAqBF,EAAAnb,MAAW,CAAAqb,IAChCR,EAAAzd,IAAA,KAAA+d,CAAA,CAAAE,EAAA,GAEA,CAEA,IAAAO,EAAc,uBAAyB,OACvC,IAAAP,EAAA,EAAAA,EAAAO,EAAA5b,MAAA,CAAAqb,IACAnZ,EAAA0Z,CAAA,CAAAP,EAAA,CACAD,CAAAA,EAAAX,EAAAiB,YAAA,CAAAxZ,EAAA,GAEA2Y,EAAAzd,IAAA,KAAA8E,EAAA,IAAAkZ,EAAA,KAGA,OAAAP,EAAA3H,IAAA,MA3EA0H,EAAAF,GAKAC,SAAAA,GAAAG,CAAAA,CAAAA,CAAAA,EAAA,KAAAC,CAAAA,EAAAF,EAAAA,EAAA7a,MAAA,CAAA2a,EAAA3a,MAAA,EAdA,EAcA,KAGA6a,EAAAzd,IAAA,CAAAud,GAGAI,GAAAJ,EAAA3a,MAAA,CACA4a,EAAAA,EAAAiB,UAAA,CAGI,OAAAhB,EAAAiB,OAAA,GAAA5I,IAAA,CApBJ,MAqBA,OAAApQ,EAAA,CACA,iBACA,EA+DA,SAAAuX,GAAe,CACf,IAAAnW,EAAA,GAAAqW,EAAApW,CAAA,IACA,IACI,OAAAD,EAAA6X,QAAA,CAAAC,QAAA,CAAAC,IAAA,CACJ,MAAAC,EAAA,CACA,QACA,EAmBA,SAAA5B,EAAe6B,CAAA,EACf,IAAAjY,EAAA,GAAAqW,EAAApW,CAAA,WACA,EAAA4X,QAAA,EAAA7X,EAAA6X,QAAA,CAAAK,aAAA,CACAlY,EAAA6X,QAAA,CAAAK,aAAA,CAAAD,GAEA,KAGA,gBAAA9e,CAAA,CAAAC,CAAA,CAAAC,CAAA,eClIA,SAAA8e,EAAAC,CAAA,CAAAC,CAAA,EAEA,OAAAD,IAAA,EAAAA,EAAAA,EAAAC,GAAA,CDgIAhf,EAAAC,CAAA,CAAAF,EAAA,qBAAA+e,CAAA,CC/IA,EA2BA,gBAAAhf,CAAA,CAAAC,CAAA,CAAAC,CAAA,eChBA,SAAAif,EAAAC,CAAA,MACAC,EACA,IAAAva,EAAAsa,CAAA,IACApB,EAAA,EACA,KAAAA,EAAAoB,EAAAzc,MAAA,GACA,IAAAuO,EAAAkO,CAAA,CAAApB,EAAA,CACAsB,EAAAF,CAAA,CAAApB,EAAA,GAGA,GAFAA,GAAA,EAEA,CAAA9M,mBAAAA,GAAAA,iBAAAA,CAAA,GAAApM,IAAA,EAAAA,EAEA,MACA,CACA,WAAAoM,GAAAA,mBAAAA,GACAmO,EAAAva,EACMA,EAAAwa,EAAAxa,IACNoM,CAAAA,SAAAA,GAAAA,iBAAAA,CAAA,IACApM,EAAAwa,EAAA,IAAA3X,IAAA,EAAA7F,IAAA,CAAAud,KAAA1X,IACA0X,EAAAnX,KAAAA,EAEA,CACA,OAAApD,CAAA,CDLA5E,EAAAC,CAAA,CAAAF,EAAA,qBAAAkf,CAAA,CC3BA,EA0DA,gBAAAnf,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,qBAAAsf,CAAA,sBAAAC,CAAA,IC1DsC,IAAAC,EAAAvf,EAAA,MAItCwf,EAAA,GAQA,SAAAH,GAAA,CACA,MACA,GAAAE,EAAclX,EAAA,IACdrI,EAAAyf,CAAA,CACA,oBAAAC,OAAAA,OAAA,oBAAA9f,KACAA,KACA4f,CAAA,CAeA,SAAAF,EAAAta,CAAA,CAAA2a,CAAA,CAAAC,CAAA,EACA,IAAAjZ,EAAAiZ,GAAAP,IACAzX,EAAAjB,EAAAiB,UAAA,CAAAjB,EAAAiB,UAAA,KAEA,OADAA,CAAA,CAAA5C,EAAA,EAAA4C,CAAAA,CAAA,CAAA5C,EAAA,CAAA2a,GAAA,CACA,CAGA,gBAAA7f,CAAA,CAAAC,CAAA,CAAAC,CAAA,mBCsNA6f,EAuDAC,EAAAC,ED7QA/f,EAAAC,CAAA,CAAAF,EAAA,qBAAAigB,CAAA,QAAAC,EAAAjgB,EAAA,MAAAkgB,EAAAlgB,EAAA,MAAAmgB,EAAAngB,EAAA,MAAAogB,EAAApgB,EAAA,KAAAqgB,EAAArgB,EAAA,KCxC8CsgB,EAAAtgB,EAAA,MAOlB2G,EAAA,GAAAsZ,EAAArZ,CAAA,IAc5B2Z,EAAA,GAAAC,EAAA,GA4CA,SAAAR,EAAAxc,CAAA,CAAA/C,CAAA,EACA8f,CAAA,CAAA/c,EAAA,CAAA+c,CAAA,CAAA/c,EAAA,KACA,EAAAA,EAAA,CAAA3D,IAAA,CAAAY,GACA8O,SA3CA/L,CAAA,EACA,IAAAgd,CAAA,CAAAhd,EAAA,CAMA,OAHAgd,CAAA,CAAAhd,EAAA,IAGAA,GACA,cA2DA,YAAAmD,GAIAwZ,EAAAM,EAAA,CAAAlT,OAAA,UAAAlK,CAAA,EACAA,KAAAsD,EAAA+Z,OAAA,EAIA,GAAAN,EAAAO,EAAA,EAAAha,EAAA+Z,OAAA,CAAArd,EAAA,SAAAud,CAAA,EACA,mBAAAnZ,CAAA,EAAkDoZ,EAAA,WAAApZ,KAAAA,EAAApE,MAAAA,CAAA,GAIlDud,GACAA,EAAA9Y,KAAA,CAAAnB,EAAA+Z,OAAA,CAAAjZ,EAEK,CACF,EACH,GA5EA,UACA,MACAqZ,CAsYA,WACA,gBAAAna,GAOA,IAAAoa,EAAAF,EAAAG,IAAA,aACAC,EAAAC,EAAAH,EAAA,IACApa,EAAA6X,QAAA,CAAA2C,gBAAA,SAAAF,EAAA,IAAAta,EAAA6X,QAAA,CAAA2C,gBAAA,YAAAF,EAAA,IAQA,uBAAA1T,OAAA,KACA,IAAA6T,EAAA,EAAAC,EAAA,IAAAA,EAAA,CAAA1f,SAAA,CACAyf,GAAAA,EAAAE,cAAA,EAAAF,EAAAE,cAAA,uBAIA,GAAAlB,EAAAO,EAAA,EAAAS,EAAA,4BAAAG,CAAA,EACA,gBAEA/d,CAAA,CACAge,CAAA,CACAna,CAAA,CACA,CACA,GAAA7D,UAAAA,GAAAA,YAAAA,EACA,IACA,IAAAka,EAAA,KACA6C,EAAA7C,EAAA+D,mCAAA,CAAA/D,EAAuE+D,mCAAa,KAAAC,EAAAnB,CAAA,CAAA/c,EAAA,CAAA+c,CAAA,CAAA/c,EAAA,GAAAme,SAAA,GAGpF,IAAAD,EAAAE,OAAA,EACA,IAAAA,EAAAV,EAAAH,EACAW,CAAAA,EAAAE,OAAA,CAAAA,EACAL,EAAA3f,IAAA,MAAA4B,EAAAoe,EAAAva,EAAA,GAGYsa,QAAA,GACZ,OAAAhP,EAAA,CAGA,QAGA4O,EAAA3f,IAAA,MAAA4B,EAAAge,EAAAna,EACK,IAGL,GAAA+Y,EAAAO,EAAA,EACAS,EACA,sBACA,SAAAS,CAAA,EACA,gBAEAre,CAAA,CACAge,CAAA,CACAna,CAAA,CACA,CACA,GAAA7D,UAAAA,GAAAA,YAAAA,EACA,IAEA,IAAA+c,EAAA7C,IADA,CACA+D,mCAAA,KAAAC,EAAAnB,CAAA,CAAA/c,EAAA,CAGAke,IACAA,EAAAC,QAAA,IAEAD,EAAAC,QAAA,MACAE,EAAAjgB,IAAA,MAAA4B,EAAAke,EAAAE,OAAA,CAAAva,GACAqa,EAAAE,OAAA,CAAA5Z,KAAAA,EAAA,OAAAuY,CAAA,CAAA/c,EAAA,EAIA,IAAA2H,OAAAC,IAAA,CAAAmV,GAAA9d,MAAA,EACA,OAAAib,IAdA,CAcA+D,mCAAA,CAGA,OAAA9O,EAAA,CAGA,QAGAkP,EAAAjgB,IAAA,MAAA4B,EAAAge,EAAAna,EACO,CACP,GAEA,GA3FA,CA2FA,IAleA,UACA,MACAya,CA+IA,WACA,sBAAAnb,GAGA,IAAAob,EAAAC,eAAArgB,SAAA,CAGA,GAAAye,EAAAO,EAAA,EAAAoB,EAAA,gBAAAE,CAAA,EACA,mBAAAxa,CAAA,EACA,IAAAya,EAAA,KACAC,EAAA1a,CAAA,IACA2a,EAAAF,EAAwBG,cAAA,EACxB7a,OAAA,GAAA0Y,EAAAzE,EAAA,EAAAhU,CAAA,KAAAA,CAAA,IAAA6a,WAAA,GAAA7a,CAAA,IACO0a,IAAA1a,CAAA,KAIP,GAAAyY,EAAAzE,EAAA,EAAA0G,IAAAC,SAAAA,EAAA5a,MAAA,EAAA2a,EAAAI,KAAA,gBACAL,CAAAA,EAAAM,sBAAA,KAGA,IAAAC,EAAA,WACA,GAAAP,IAAAA,EAAAQ,UAAA,EACA,IAGYN,EAAAO,WAAA,CAAAT,EAAAhb,MAAA,CACZ,MAAAyL,EAAA,CACA,CAGAkO,EAAA,OACApZ,KAAAA,EACAqM,aAAAtF,KAAAoU,GAAA,GACA3N,eAAAzG,KAAAoU,GAAA,GACWV,IAAAA,CACX,EACA,GAcA,MAXQ,uBAAAA,GAAA,mBAAAA,EAAAW,kBAAI,CACZ,GAAAzC,EAAAO,EAAA,EAAAuB,EAAA,8BAAAY,CAAA,EACA,mBAAAC,CAAA,EAEA,OADAN,IACAK,EAAAhb,KAAA,CAAAoa,EAAAa,EACS,CACD,GAERb,EAAAf,gBAAA,oBAAAsB,GAGAR,EAAAna,KAAA,CAAAoa,EAAAza,EACG,IAGH,GAAA2Y,EAAAO,EAAA,EAAAoB,EAAA,gBAAAiB,CAAA,EACA,mBAAAvb,CAAA,EAWA,OAVA,KAAA4a,cAAA,EAAA5a,KAAAO,IAAAP,CAAA,KACA,MAAA4a,cAAA,CAAAY,IAAA,CAAAxb,CAAA,KAGAoZ,EAAA,OACApZ,KAAAA,EACAwN,eAAAzG,KAAAoU,GAAA,GACOV,IAAA,OAGPc,EAAAlb,KAAA,MAAAL,EACG,CACH,GAnEA,CAmEA,IAnNA,UACA,QA0EA,GAAA6Y,EAAA4C,EAAA,KAIA,GAAA9C,EAAAO,EAAA,EAAAha,EAAA,iBAAAwc,CAAA,EACA,mBAAA1b,CAAA,EACA,IAAA2b,EAAA,CACA3b,KAAAA,EACA4b,UAAA,CACA7b,OAAA8b,SAoCAC,EAA6B,UAC7B,YAAA5c,GAAA,GAAAuZ,EAAAsD,EAAA,EAAAD,CAAA,IAAAE,UAAAF,CAAA,IAAA/b,MAAA,CACAyP,OAAAsM,CAAA,IAAA/b,MAAA,EAAA8a,WAAA,GAEAiB,CAAA,KAAAA,CAAA,IAAA/b,MAAA,CACAyP,OAAAsM,CAAA,IAAA/b,MAAA,EAAA8a,WAAA,GAEA,KAJA,EAvCA7a,GACS0a,IAAAuB,SA8CTH,EAAA,UACA,iBAAAA,CAAA,IACAA,CAAA,IAEA,YAAA5c,GAAA,GAAAuZ,EAAAsD,EAAA,EAAAD,CAAA,IAAAE,SACAF,CAAA,IAAApB,GAAA,CAEAlL,OAAAsM,CAAA,IAJA,EAjDS9b,EACT,EACAwN,eAAAzG,KAAAoU,GAAA,IAOA,OAJA/B,EAAA,SACO,GAAAuC,CAAA,GAGPD,EAAArb,KAAA,CAAAnB,EAAAc,GAAA4F,IAAA,CACA,IACAwT,EAAA,SACA,GAAAuC,CAAA,CACAtP,aAAAtF,KAAAoU,GAAA,GACWe,SAAAA,CACX,GACSA,GAET,IASS,MART9C,EAAA,SACA,GAAAuC,CAAA,CACAtP,aAAAtF,KAAAoU,GAAA,GACWgB,MAAAA,CACX,GAISA,CAAA,EAGN,CACH,GAjHA,UACA,UACAC,CAoNA,UAAO,CACP,MAAAvD,EAAAwD,EAAA,KAIA,IAAAC,EAAApd,EAAAqd,UAAA,CACArd,EAAAqd,UAAA,aAAAvc,CAAA,EACA,IAAAwc,EAAAtd,EAAA8X,QAAA,CAAAC,IAAA,CAEAwF,EAAArE,EAMA,GALAA,EAAAoE,EACApD,EAAA,WACAqD,KAAAA,EACKD,GAAAA,CACL,GACAF,EAIA,IACQ,OAAAA,EAAAjc,KAAA,MAAAL,EACR,OAAAlC,EAAA,CAEA,CACA,EAsBE,GAAA6a,EAAAO,EAAA,EAAIha,EAAAwd,OAAA,aAAAC,GACN,GAAAhE,EAAAO,EAAA,EAAAha,EAAAwd,OAAA,gBAAAC,GA7CA,SA0BAA,EAAAC,CAAA,EACA,mBAAA5c,CAAA,EACA,IAAA0a,EAAA1a,EAAAhF,MAAA,GAAAgF,CAAA,IAAAO,KAAAA,CAAA,CACA,GAAAma,EAAA,CAEA,IAAA+B,EAAArE,EACAoE,EAAAhN,OAAAkL,GAEAtC,EAAAoE,EACApD,EAAA,WACAqD,KAAAA,EACSD,GAAAA,CACT,EACA,QACAI,EAAAvc,KAAA,MAAAL,EACA,EAIA,KAlQA,UACA,QA6dA6c,EAAA3d,EAAA4d,OAAA,CAGA5d,EAAA4d,OAAA,UAAAC,CAAA,CAAArC,CAAA,CAAAsC,CAAA,CAAAC,CAAA,CAAAd,CAAA,SASA,EARA,SACAc,OAAAA,EACAd,MAAAA,EACAa,KAAAA,EACAD,IAAAA,EACKrC,IAAAA,CAAA,KAGLmC,GACAA,EAAAxc,KAAA,MAAA6c,UAAA,EAxeA,UACA,qBAgfAC,EAAAje,EAAAke,oBAAA,CAGAle,EAAAke,oBAAA,UAAAlS,CAAA,SAGA,EAHA,qBAAAA,IAGAiS,GACAA,EAAA9c,KAAA,MAAA6c,UAAA,EArfA,cAEA,qBAAAnf,kBAAAA,gBAAA,GAAA2a,EAAA1a,EAAA,CAAAC,IAAA,iCAAAlC,GACA,MACA,CA9BA,EAyCAA,EAAA,CAIA,SAAAqd,EAAArd,CAAA,CAAA6S,CAAA,EACA,MAAAkK,CAAA,CAAA/c,EAAA,CAIA,QAAAoe,KAAArB,CAAA,CAAA/c,EAAA,KACA,IACMoe,EAAAvL,EACN,OAAA1D,EAAA,CACA,qBAAQnN,kBAAAA,gBAAA,GACR2a,EAAoE1a,EAAA,CAAAme,KAAK,CACzE;MAAA,EAAApgB,EAAA;MAAA,KAAA6c,EAAAyE,EAAA,EAAAlD,GAAA;MAAA,EACAjP,EAEA,CAZA,CAoTA,SAAAuO,EAAAU,CAAA,CAAAmD,EAAA,IACA,WAIA,MAAAxhB,GAAAwc,IAAAxc,GAKAyhB,SA3CAzhB,CAAA,EAEA,GAAAA,aAAAA,EAAAC,IAAA,CACA,SAGA,QAAA6d,EAAA9d,EAAA8d,MAAA,CAGA,IAAAA,GAAA,CAAAA,EAAAtD,OAAA,CACA,SAKA,GAAAsD,UAAAA,EAAAtD,OAAA,EAAAsD,aAAAA,EAAAtD,OAAA,EAAAsD,EAAA4D,iBAAA,CACA,QACI,CACJ,MAAAtS,EAAA,CAEA,CAGA,UAoBApP,KAGA,IAAAyB,EAAAzB,aAAAA,EAAAC,IAAA,SAAAD,EAAAC,IAAA,MAIAwE,IAAA8X,GACA8B,EAAA,CACAre,MAAAA,EACAyB,KAAAA,EACO2B,OAAAoe,CACP,GACAhF,EAAAxc,GAIA2hB,SA5FAC,CAAA,CAAAnM,CAAA,EAEA,IAAAmM,GAKAA,EAAA3hB,IAAA,GAAAwV,EAAAxV,IAAA,CAJA,SAQA,IAGA,GAAA2hB,EAAA9D,MAAA,GAAArI,EAAAqI,MAAA,CACA,QACI,CACJ,MAAA1O,EAAA,CAEA,CAMA,UAmEAoN,EAAAxc,KACAqe,EAAA,CACAre,MAAAA,EACAyB,KAAAA,EACO2B,OAAAoe,CACP,GACAhF,EAAAxc,GAIAiS,aAAAsK,GACAA,EAAAnZ,EAAAkO,UAAA,MACKiL,EAAA9X,KAAAA,CACL,EAlHA,KAgFA,CAmCA,CAoGA,IAAAsc,EAAA,KAsBAM,EAAA,MAgBA,cAAA9kB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAqlB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,CCjjBA,OAAAC,EAAA/a,OAAAxJ,SAAA,CAAAmY,QAAA,CAUA,SAAA8L,EAAAO,CAAA,EACA,OAAAD,EAAAtkB,IAAA,CAAAukB,IACA,qBACA,yBACA,4BACA,QACA,SACA,OAAAT,EAAAS,EAAAC,MACA,CACA,CAQA,SAAAC,EAAAF,CAAA,CAAAxI,CAAA,EACA,OAAAuI,EAAAtkB,IAAA,CAAAukB,KAAA,WAAAxI,EAAA,GAUA,SAAAgI,EAAAQ,CAAA,EACA,OAAAE,EAAAF,EAAA,cAUA,SAAAV,EAAAU,CAAA,EACA,OAAAE,EAAAF,EAAA,YAUA,SAAAL,EAAAK,CAAA,EACA,OAAAE,EAAAF,EAAA,gBAUA,SAAAd,EAAAc,CAAA,EACA,OAAAE,EAAAF,EAAA,UAUA,SAAAF,EAAAE,CAAA,EACA,OAAAA,IAAA,GAAAA,GAAA,iBAAAA,GAAA,mBAAAA,CAAA,CAUA,SAAAX,EAAAW,CAAA,EACA,OAAAE,EAAAF,EAAA,UAUA,SAAAN,EAAAM,CAAA,EACA,0BAAAG,OAAAZ,EAAAS,EAAAG,MAAA,CAUA,SAAAN,EAAAG,CAAA,EACA,0BAAAI,SAAAb,EAAAS,EAAAI,QAAA,CAUA,SAAAhB,EAAAY,CAAA,EACA,OAAAE,EAAAF,EAAA,UAOA,SAAAb,EAAAa,CAAA,EACA,OAAA7e,QAAA6e,GAAAA,EAAA9Y,IAAA,qBAAA8Y,EAAA9Y,IAAA,EAUA,SAAA+X,EAAAe,CAAA,EACA,OAAAX,EAAAW,IAAA,gBAAAA,GAAA,mBAAAA,GAAA,oBAAAA,CAAA,CAUA,SAAAJ,EAAAI,CAAA,EACA,uBAAAA,GAAAA,GAAAA,CAAA,CAWA,SAAAT,EAAAS,CAAA,CAAAK,CAAA,EACA,IACI,OAAAL,aAAAK,CACJ,OAAAC,EAAA,CACA,QACA,EAGA,gBAAA3mB,CAAA,CAAAC,CAAA,CAAAC,CAAA,mBCjGAoP,EDiGApP,EAAAC,CAAA,CAAAF,EAAA,sBAAA2mB,CAAA,uBAAAC,CAAA,uBAAAvX,CAAA,IChLkE,IAAA6Q,EAAAjgB,EAAA,MAGtC2G,EAAA,GAAAsZ,EAAArZ,CAAA,IAK5B+f,EAAA,uDASA,SAAAD,EAAejmB,CAAA,EAAe,IAAAkG,EAAA,GAAAsZ,EAAArZ,CAAA,IAG9B,iBAAAD,CAAA,EACA,OAAAlG,GAAA,CAGA,IAAAmmB,EAAAjgB,EAAA+Z,OAAA,CAAAmG,EAAA,GAIAF,EAAApZ,OAAA,CAAAlK,GAAA,CAEA,IAAAyjB,EACAF,CAAA,CAAAvjB,EAAA,IAAAA,EAAA,CAAA0jB,mBAAA,CACA1jB,KAAAsD,EAAA+Z,OAAA,EAAAoG,IACAD,CAAA,CAAAxjB,EAAA,CAAAujB,CAAA,CAAAvjB,EAAA,CACAujB,CAAA,CAAAvjB,EAAA,CAAAyjB,EACG,GAGH,IACI,OAAArmB,GACJ,SAEA0K,OAAAC,IAAA,CAAAyb,GAAAtZ,OAAA,CAAAlK,GAAA,CACKujB,CAAA,CAAAvjB,EAAA,CAAAwjB,CAAA,CAAAxjB,EAAA,EAEL,EAGA,SAAA2jB,GAAA,CACA,IAAAC,EAAA,GACA,IAAA7X,EAAA,CACA,SACK6X,EAAA,EACL,EACA,UACKA,EAAA,EACL,GAmBA,MAhBA,oBAAAzhB,kBAAAA,iBACAmhB,EAAApZ,OAAA,CAAAvI,GAAA,CACAoK,CAAA,CAAApK,EAAA,KAAAyC,IAAA,CACAwf,GACAP,EAAA,KACW/f,EAAA+Z,OAAA,CAAA1b,EAAA,mBAAAA,KAAA,IAAAyC,EACX,EAEK,CACD,GAEJkf,EAAApZ,OAAA,CAAAvI,GAAA,CACKoK,CAAA,CAAApK,EAAA,KAAAgD,KAAAA,CACL,GAGAoH,CAAA,CAMEA,EADF,oBAAW5J,kBAAAA,iBACT,GAAAya,EAAArX,CAAA,WAAAoe,GAEFA,GAGA,gBAAAlnB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAmnB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAAtH,EAAAjgB,EAAA,MCtF8CwnB,EAAAxnB,EAAA,KAc9C,SAAAknB,GAAe,CACf,IAAAvgB,EAAA,GAAAsZ,EAAArZ,CAAA,IAAA6gB,EAAA9gB,EAAA8gB,MAAA,EAAA9gB,EAAA+gB,QAAA,CAGA,GAAAD,GAAAA,EAAAE,UAAA,CACA,OAAAF,EAAAE,UAAA,GAAAtQ,OAAA,UAGA,IAAAuQ,EAAAH,GAAAA,EAAAI,eAAA,KAAAJ,EAAAI,eAAA,KAAAC,WAAA,WAAArc,GAAAA,KAAAsF,MAAA,GAKA,yCAAAsG,OAAA,UAAA0Q,GACA,IAAAH,GAAAA,GAAA,QAAA9N,QAAA,KACA,CAGA,SAAAkO,EAAAzkB,CAAA,EACA,OAAAA,EAAAjD,SAAA,EAAAiD,EAAAjD,SAAA,CAAA2nB,MAAA,CAAA1kB,EAAAjD,SAAA,CAAA2nB,MAAA,IAAAjgB,KAAAA,CAAA,CAOA,SAAAsf,EAAU/jB,CAAA,EACV,IAAAH,QAAAA,CAAA,CAAAN,SAAAF,CAAA,EAAAW,EACA,GAAAH,EACA,OAAAA,CAAA,CAGA,IAAA8kB,EAAAF,EAAAzkB,UACA,EACA,EAAgBC,IAAA,EAAA0kB,EAAwBtjB,KAAA,CACxC,GAAAsjB,EAAA1kB,IAAA,KAAA0kB,EAAAtjB,KAAA,GAEAsjB,EAAA1kB,IAAA,EAAA0kB,EAAAtjB,KAAA,EAAAhC,GAAA,WADA,CAGAA,GAAA,WADA,CAWA,SAAAukB,EAAA5jB,CAAA,CAAAqB,CAAA,CAAApB,CAAA,EACA,IAAAlD,EAAAiD,EAAAjD,SAAA,CAAAiD,EAAAjD,SAAA,KACA2nB,EAAA3nB,EAAA2nB,MAAA,CAAA3nB,EAAA2nB,MAAmD,KACnDC,EAAAD,CAAA,IAAAA,CAAA,OACAC,CAAAA,EAAAtjB,KAAA,EACAsjB,CAAAA,EAAAtjB,KAAA,CAAAA,GAAA,IAEAsjB,EAAA1kB,IAAA,EACA0kB,CAAAA,EAAA1kB,IAAA,CAAAA,GAAA,QACA,CAUA,SAAA4jB,EAAA7jB,CAAA,CAAA4kB,CAAA,EACA,IAAAD,EAAAF,EAAAzkB,GACA,GAAA2kB,GAKA,IAAAE,EAAAF,EAA+BG,SAAA,CAG/B,GAH+BH,EAAAG,SAAA,EAD/B7kB,KAAA,UAAA8kB,QAAA,GAC+B,GAAAF,CAAA,IAAAD,CAAA,EAG/BA,GAAA,SAAuBA,EAAA,CACvB,IAAAI,EAAA,IAAAH,GAAAA,EAAA/R,IAAA,IAAA8R,EAAA9R,IAAA,CACA6R,CAAAA,EAAAG,SAAA,CAAAhS,IAAA,CAAAkS,CACA,EAVA,CAmFA,SAAAlB,EAAA/mB,CAAA,EACA,GAAAA,GAAA,EAAAkoB,mBAAA,CACA,SAGA,IAGI,GAAAhB,EAAAiB,EAAA,EAAAnoB,EAAA,yBACJ,OAAAooB,EAAA,CACA,CAGA,SASA,SAAAnB,EAAAoB,CAAA,EACA,OAAAC,MAAApN,OAAA,CAAAmN,GAAAA,EAAA,CAAAA,EAAA,CAGA,gBAAA1Z,CAAA,CAAAlP,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA8oB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,ICzKA9Z,EAAAjP,EAAA+S,GAAA,CAAA9D,GCzB2C,IAAA+Z,EAAAhpB,EAAA,MAa3C,SAAA8oB,GAAA,CAGA,MACA,CDKA,qBAAAG,2BAAAA,yBAAA,GCJA9d,qBAAAA,OAAAxJ,SAAA,CAAAmY,QAAA,CAAAlY,IAAA,UAAAonB,EAAAA,EAAA,EACA,CAQA,SAAAH,EAAAK,CAAA,CAAAC,CAAA,EACA,OAAAD,EAAAE,OAAA,CAAAD,EAAA,CAgBA,SAAAJ,EAAAxW,CAAA,MAAA2W,EAGA,IACIA,EAAAL,EAAA5Z,EAAAsD,EACJ,OAAAI,EAAA,CACA,CAGA,IACA,IAAA0W,IAAAA,CAAA,EAAAR,EAAA5Z,EAA0C,WACtCia,EAAAL,EAAA5Z,EAAA,GAAAoa,IAAA,gBAAA9W,EAAA,EACJ,OAAAI,EAAA,CACA,CAGA,OAAAuW,CAAA,CAGA,gBAAAppB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAupB,CAAA,uBE5BA,SAAAC,EACAC,CAAA,CAEAC,EAAA,EAEAC,EAAA,OACA,KAAAC,EAAAL,EAAAE,EAAAC,SAGA,CAuLA,CAAAG,UAKA/Y,KAAAC,SAAA,CA5LA6Y,IAuLAhO,KAAA,UAAAlZ,MAAA,CAvLAinB,EACAH,EAAAC,EAAAC,EAAA,EAAAC,GAGAC,CAHA,CFkBA,QC1DAE,EACAC,EDyDAza,EAAArP,EAAA,MCvBAwpB,EAAAxpB,EAAA,KAAA+pB,EAAA/pB,EAAA,KCfA,SAAAspB,EAAAU,CAAA,CAAAP,EAAA,SAAAQ,EAAA,UACA,IAEI,OAAAC,SAgCJA,EACAvlB,CAAA,CACAC,CAAA,CACA6kB,EAAA,SACAQ,EAAS,QAAW,CACpBE,GD3DAL,EAAAD,CADAA,EAAA,mBAAAO,SACA,IAAAA,QAAA,GA+BA,CA9BA,SAAAxK,CAAA,EACA,GAAAiK,QACA,EAAAC,EAAAO,GAAA,CAAAzK,KAGAkK,EAAAnW,GAAA,CAAAiM,GACA,GACA,CACA,QAAA9B,EAAA,EAAAA,EAAAgM,EAAArnB,MAAA,CAAAqb,IAEA,GAAAlZ,CADA,CAAAkZ,EAAA,GACA8B,EACA,QACA,CAGA,OADAkK,EAAAjqB,IAAA,CAAA+f,GACA,IAGA,SAAAA,CAAA,EACA,GAAAiK,EACMC,EAAAQ,MAAA,CAAA1K,QAEN,QAAA9B,EAAA,EAAAA,EAAAgM,EAAArnB,MAAA,CAAAqb,IACA,GAAAgM,CAAA,CAAAhM,EAAA,GAAA8B,EAAA,CACAkK,EAAAS,MAAA,CAAAzM,EAAA,GACA,MACA,EAIA,CC4BA,CACA,KAAA0M,EAAAC,EAAA,CAAAN,EAIA,GAAAvlB,IAAA,GAAAA,GAAA,8BAAA8lB,QAAA,QAAA9lB,IAAA,IAAAyK,EAAAuB,EAAA,EAAAhM,GACA,OAAAA,CAAA,CAEA,IAAA+lB,EAAAC,SAsFAjmB,CAAA,CAGAC,CAAA,CACA,CACA,IACA,GAAAD,WAAAA,GAAAC,GAAA,iBAAAA,GAAA,EAAAimB,OAAA,CACA,iBAGA,GAAAlmB,kBAAAA,EACA,wBAMA,YAAA3E,EAAAyf,CAAA,EAAA7a,IAAA5E,EAAAyf,CAAA,CACA,iBAGA,uBAAAC,QAAA9a,IAAA8a,OACA,iBAGA,uBAAAlB,UAAA5Z,IAAA4Z,SACA,mBAIA,MAAAnP,EAAAyb,EAAA,EAAAlmB,GACA,yBAGA,oBAAAA,GAAAA,GAAAA,EACA,cAIA,GAAAA,KAAA,IAAAA,EACA,oBAGA,sBAAAA,EACA,uBAAAmlB,EAAAjF,EAAA,EAAAlgB,GAAA,GAGA,oBAAAA,EACA,UAAAqS,OAAArS,GAAA,GAIA,oBAAAA,EACA,kBAAAqS,OAAArS,GAAA,GAOI,wBAAAmmB,cAAA,CAAAnmB,GAAAtD,WAAA,CAAA0D,IAAA,IACJ,MAAA0jB,EAAA,CACA,+BAAAA,EAAA,GACA,EArJA/jB,EAAAC,GAKA,IAAA+lB,EAAAK,UAAA,aACA,OAAAL,CAAA,CAQA,mCACA,OAAA/lB,CAAA,CAIA,GAAA6kB,IAAAA,EAEA,OAAAkB,EAAAtT,OAAA,eAIA,GAAAmT,EAAA5lB,GACA,qBAKA,GAAAqmB,GAAA,mBAAAA,EAAA3c,MAAA,CACA,IACA,IAAA4c,EAAAD,EAAA3c,MAAA,GAEM,OAAA4b,EAAA,GAAAgB,EAAAzB,EAAA,EAAAQ,EAAAE,EACN,OAAAzB,EAAA,CAEA,KAMAiB,EAAAf,MAAApN,OAAA,CAAA5W,GAAA,UAAAumB,EAAA,EAIsC,IAAAC,EAAA,GAAA5B,EAAA6B,EAAA,EAAAzmB,GAGtC,QAAA0mB,KAAAF,EAEA,GAAAjgB,OAAAxJ,SAAA,CAAA2f,cAAA,CAAA1f,IAAA,CAAAwpB,EAAAE,IAIA,GAAAH,GAAAlB,EAAA,CACAN,CAAA,CAAA2B,EAAA,qBACA,UAIAC,EAAAH,CAAA,CAAAE,EAAA,CAAA3B,CAAA,CAAA2B,EAAA,CAAApB,EAAAoB,EAAAC,EAAA9B,EAAA,EAAAQ,EAAAE,GAGAgB,GAAA,EAZA,OAeAV,EAAA7lB,GAIA+kB,CAAA,EAtHI,GAAAK,EAAAP,EAAAQ,EACJ,OAAAvB,EAAa,CACb,OAAA8C,MAAA,yBAAA9C,EAAA,GACA,EA4MA,eAAA5oB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA0rB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAAC,EAAAjsB,EAAA,MAAAid,EAAAjd,EAAA,MC3OgDksB,EAAAlsB,EAAA,MAgBhD,SAAA8rB,EAAAvT,CAAA,CAAAvT,CAAA,CAAAmnB,CAAA,EACA,GAAAnnB,KAAAuT,GAIA,IAAAuK,EAAAvK,CAAA,CAAAvT,EAAA,CAAAonB,EAAAD,EAAArJ,GAKA,sBAAAsJ,EACA,IACMX,EAAAW,EAAAtJ,EACN,OAAAna,EAAA,CAGA,EAGA,CAAA3D,EAAA,CAAAonB,EAjBA,CA2BA,SAAAL,EAAAnM,CAAA,CAAA5a,CAAA,CAAAJ,CAAA,EACAuG,OAAAkhB,cAAA,CAAAzM,EAAA5a,EAAA,CAEAJ,MAAAA,EACA0nB,SAAA,GACGC,aAAA,EACH,GAUA,SAAAd,EAAAW,CAAA,CAAAtJ,CAAA,EACA,IAAA1B,EAAA0B,EAAAnhB,SAAA,IACAyqB,CAAAA,EAAAzqB,SAAA,CAAAmhB,EAAAnhB,SAAA,CAAAyf,EACA2K,EAAAK,EAAA,sBAAAtJ,EAAA,CAUA,SAAA4I,EAAAc,CAAA,EACA,OAAAA,EAAAzF,mBAAA,CASA,SAAA8E,EAAArC,CAAA,EACA,OAAAre,OAAAC,IAAmB,CAAAoe,GACnB/W,GAAA,CAAA9N,GAAA,GAAA8X,mBAAA9X,GAAA,GAAA8X,mBAAA+M,CAAA,CAAA7kB,EAAA,KACAgR,IAAA,MAWA,SAAAiW,EACAhnB,CAAA,CAGA,CACA,MAAAqY,EAAAwP,EAAA,EAAA7nB,GACA,OACAxB,QAAAwB,EAAAxB,OAAA,CACA4B,KAAAJ,EAAAI,IAAA,CACA0nB,MAAA9nB,EAAA8nB,KAAA,CACA,GAAAC,EAAA/nB,EAAA,CAmBA,CAjBA,OAAAqY,EAAA2P,EAAA,EAAAhoB,GAgBA,OAAAA,CACA,CAjBA,IAAAioB,EAGA,CACArpB,KAAAoB,EAAApB,IAAA,CACA6d,OAAAyL,EAAAloB,EAAAyc,MAAA,EACA0L,cAAAD,EAAAloB,EAAAmoB,aAAA,EACA,GAAAJ,EAAA/nB,EAAA,EAOI,MAJJ,oBAAAooB,aAAA,GAAA/P,EAAAuG,EAAA,EAAA5e,EAAAooB,cACAH,CAAAA,EAAAI,MAAA,CAAAroB,EAAAqoB,MAAA,EAGIJ,CAGJ,CAIA,SAAAC,EAAAzL,CAAA,EACA,IACI,SAAApE,EAAAiQ,EAAA,EAAA7L,GAAA,GAAA4K,EAAAkB,EAAA,EAAA9L,GAAAlW,OAAAxJ,SAAA,CAAAmY,QAAA,CAAAlY,IAAA,CAAAyf,EAAA,CACJ,MAAA9b,EAAA,CACA,iBACA,EAIA,SAAAonB,EAAA/M,CAAA,EACA,oBAAAA,GAAAA,IAAA,GAAAA,EASA,QACA,CATA,IAAAwN,EAAA,GACA,QAAAC,KAAAzN,EACAzU,OAAAxJ,SAAA,CAAA2f,cAAA,CAAA1f,IAAA,CAAAge,EAAAyN,IACAD,CAAAA,CAAA,CAAAC,EAAA,GAAAA,EAAA,EAGI,OAAAD,CAGJ,CAQA,SAAApB,EAAA1rB,CAAA,CAAAgtB,EAAA,IACA,IAAAliB,EAAAD,OAAAC,IAAA,CAAAwgB,EAAAtrB,IAGA,GAHA8K,EAAAmiB,IAAA,GAGA,CAAAniB,EAAA3I,MAAA,CACA,6BAGA,GAAA2I,CAAA,CAAW,GAAA3I,MAAA,EAAA6qB,EACX,SAAApB,EAAAsB,EAAA,EAAApiB,CAAA,IAAAkiB,EAAA,CAGA,QAAAG,EAAAriB,EAAA3I,MAAA,CAAAgrB,EAAA,EAAAA,IAAA,CACA,IAAAC,EAAAtiB,EAAAO,KAAA,GAAA8hB,GAAA9X,IAAA,OACA,IAAA+X,CAAAA,EAAAjrB,MAAA,CAAA6qB,CAAA,GAGA,GAAAG,IAAAriB,EAAA3I,MAAA,CACA,OAAAirB,CACA,CACA,SAAAxB,EAAAsB,EAAA,EAAAE,EAAAJ,GAJA,CAOA,SASA,SAAA3B,EAAAgC,CAAA,EAOA,OAAAC,SAGMA,EAAAD,CAAA,CAAAE,CAAA,EACN,MAAA5Q,EAAA5R,EAAA,EAAAsiB,GAAA,CAEA,IAAAG,EAAAD,EAAAE,GAAA,CAAAJ,GACA,GAAAG,KAAA9lB,IAAA8lB,EACA,OAAAA,CAAA,CAGA,IAAAE,EAAA,GAIA,QAAArpB,KAHAkpB,EAAAI,GAAA,CAAAN,EAAAK,GAGA7iB,OAAAC,IAAA,CAAAuiB,IACA,SAAAA,CAAA,CAAAhpB,EAAA,EACAqpB,CAAAA,CAAA,CAAArpB,EAAA,CAAAipB,EAAAD,CAAA,CAAAhpB,EAAA,CAAAkpB,EAAA,EAIA,OAAAG,CAAA,IAGApF,MAAApN,OAAA,CAAAmS,GAAA,CAEA,IAAAG,EAAAD,EAAAE,GAAA,CAAAJ,GACA,GAAAG,KAAA9lB,IAAA8lB,EACA,OAAAA,CAAA,CAGA,IAAAE,EAAA,GAQA,OAPAH,EAAAI,GAAA,CAAAN,EAAAK,GAGAL,EAAApgB,OAAA,KACKygB,EAAAnuB,IAAA,CAAA+tB,EAAAM,EAAAL,GAAA,GAGLG,CAAA,QAGAL,CAAA,EA1CAA,EAJA,IAAAQ,IAIA,CAiFA,eAAAruB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eC3QA,SAAAouB,EAAA,GAAAC,CAAA,MAAAC,EAAAD,EAAAd,IAAA,EAAAgB,EAAAC,IAAAD,CAAA,IAAAC,CAAA,KAAA/b,GAAA,CAAAG,GAAAA,CAAA,KAGA,OAAA8Z,EAAA+B,EAAA,SAAAC,EAAA,GAGA,QAAAjK,KAAAiI,EAAA/Q,KAAA,OAAAhQ,KAAA,CAAA8iB,GAAA,CAEA,IAAAE,EAAAlK,EAAApN,OAAA,yBAGA,QAAAuX,KAAAN,EAAA,KAAAO,EAAAD,EAAAD,GAGA,GAAAE,EAAA,CACAH,EAAA7uB,IAAA,CAAAgvB,GACA,MACA,CACA,CAGA,OAAAC,SAoBApC,CAAA,EACA,IAAAA,EAAAjqB,MAAA,CACA,SAEA,IAAAssB,EAAArC,EAGA,IAAAsC,EAAAD,CAAA,IAAAE,QAAA,KAAAC,EAAAH,CAAA,CAAAA,EAAAtsB,MAAA,IAAAwsB,QAAA,KAcA,MAVAD,CAAAA,KAAAA,EAAAG,OAAA,oBAAAH,KAAAA,EAAAG,OAAA,uBACAJ,CAAAA,EAAAA,EAAApjB,KAAA,KAIA,KAAAujB,EAAAC,OAAA,mBACAJ,CAAAA,EAAAA,EAAApjB,KAAA,QAIAojB,EACApjB,KAAA,GAzEA,IA0EA8G,GAAA,CAAAoc,GAAA,EACA,GAAAA,CAAA,CACAO,SAAAP,EAAAO,QAAA,EAAAL,CAAA,IAAAK,QAAA,CACKH,SAAAJ,EAAAI,QAAA,KACL,IACA1Q,OAAA,IAhDAmQ,EACA,EASA,SAAAW,EAAAC,CAAA,SACA,MAAA9T,OAAA,CAAA8T,GACAlB,KAAAkB,GAEAA,CADA,CDyOAtvB,EAAAC,CAAA,CAAAF,EAAA,sBAAAwvB,CAAA,uBAAAF,CAAA,uBAAAjB,CAAA,ICpMA,IAAAoB,EAAA,cAMA,SAAAD,EAAAnQ,CAAA,EACA,IACA,IAAAA,GAAA,mBAAAA,EACA,OAAAoQ,CACA,CACI,OAAApQ,EAAApa,IAAA,EAAAwqB,CACJ,OAAA7c,EAAA,CAGA,OAAA6c,CACA,EA2FA,gBAAA1vB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA0vB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,IC9L6C,IAAA1S,EAAAjd,EAAA,MAU7C,SAAAyvB,EAAAG,CAAA,CAAAC,EAAA,SACA,iBAAAD,GAAAC,IAAAA,EACAD,EAEAA,EAAAntB,MAAA,EAAAotB,EAAAD,EAAA,GAAAA,EAAAE,MAAA,GAAAD,GAAA,KAmDA,SAAAH,EAAA1F,CAAA,CAAA+F,CAAA,EACA,IAAAnH,MAAApN,OAAA,CAAAwO,GACA,SAGA,IAAAgG,EAAA,GACA,QAAAlS,EAAA,EAAAA,EAAAkM,EAAAvnB,MAAA,CAAAqb,IAAA,CACA,IAAAlZ,EAAAolB,CAAA,CAAAlM,EAAA,CACA,IACMkS,EAAAnwB,IAAA,CAAAoX,OAAArS,GACN,OAAA+N,EAAA,CACAqd,EAAAnwB,IAAA,gCACA,EAGA,OAAAmwB,EAAAra,IAAA,CAAAoa,EAAA,CAQA,SAAOJ,EAAA/qB,CAAA,CAAAqrB,CAAA,QACP,KAAAhT,EAAAxB,EAAA,EAAA7W,KAIA,GAAAqY,EAAAiT,EAAA,EAAAD,GACAA,EAAAnU,IAAA,CAAAlX,GAEA,iBAAAqrB,GACArrB,KAAAA,EAAAuqB,OAAA,CAAAc,GAEA,CAoBA,gBAAAnwB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAowB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAArQ,EAAAjgB,EAAA,MCvH8CmgB,EAAAngB,EAAA,MA0D9C,SAAAmwB,GAAmB,CACnB,iBAAAlQ,EAAArZ,CAAA,KACA,SAGA,IAII,OAHJ,IAAA2pB,QACA,IAAA9M,QAAA,0BACA,IAAA+M,SACI,EACJ,OAAA7d,EAAA,CACA,QACA,CACA,CAIA,SAAA0d,EAAA7D,CAAA,EACA,OAAAA,GAAA,mDAAA1Q,IAAA,CAAA0Q,EAAA1S,QAAA,IASA,SAAAwW,GAAA,CACA,IAAAH,IACA,SAE8B,IAAAxpB,EAAA,GAAAsZ,EAAArZ,CAAA,IAI9B,GAAAypB,EAAA1pB,EAAA8pB,KAAA,EACA,SAKA,IAAAvjB,EAAA,GACA,IAAAwjB,EAAA/pB,EAAA6X,QAAA,CACA,GAAAkS,GAAA,mBAAAA,EAAAC,aAAA,CACA,IACA,IAAAC,EAAAF,EAAAC,aAAA,UACAC,CAAAA,EAAAC,MAAA,IACAH,EAAAI,IAAA,CAAAC,WAAA,CAAAH,GACAA,EAAAI,aAAA,EAAAJ,EAAAI,aAAA,CAAAP,KAAA,EACAvjB,CAAAA,EAAAmjB,EAAAO,EAAAI,aAAA,CAAAP,KAAA,GAEMC,EAAAI,IAAA,CAAAG,WAAA,CAAAL,EACN,OAAAlI,EAAA,CACA,qBAAQljB,kBAAAA,gBAAA,GACR2a,EAAA1a,EAAA,CAAAC,IAAA,mFAAAgjB,EACA,QAGAxb,CAAA,CA6CA,SAAAkjB,GAAA,CAIA,IAAAzpB,EAAA,GAAAsZ,EAAArZ,CAAA,IACAsqB,EAAA,EAAAA,MAAA,CACAC,EAAAD,GAAAA,EAAAE,GAAA,EAAAF,EAAAE,GAAA,CAAAC,OAAA,CAAAC,EAAA,YAAA3qB,GAAA,EAAAA,EAAAwd,OAAA,CAAAoN,SAAA,IAAA5qB,EAAAwd,OAAA,CAAAqN,YAAA,CAGA,OAAAL,GAAAG,CAAA,CAGA,gBAAAxxB,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAA0xB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,IC7KqC,IAIrCC,EAAAA,EAJqC3U,EAAAjd,EAAA,MAqBrC,SAAA0xB,EAAA9sB,CAAA,EACA,WAAA+sB,EAAA5kB,GAAA,CACGA,EAAAnI,EACH,GASA,SAAA6sB,EAAAI,CAAA,EACA,WAAAF,EAAA,CAAAG,EAAA9kB,IAAA,CACGA,EAAA6kB,EACH,GA9BAD,CAFAA,EAMyBA,GAAAA,CAAAA,EAAA,IAJzB,CAAAA,EAAA,qBAEAA,CAAA,CAAAA,EAAA,uBAECA,CAAwB,CAAAA,EAAA,SAAxB,EAAwB,WAiCzB,OAAAD,EACAvwB,QAAA,KAAc,CAAA2wB,MAAA,CAAAH,EAAAI,OAAA,CACd/d,SAAA,MAAAge,SAAA,IAGA3wB,YACA4wB,CAAM,CACN,CAAAP,EAAAhwB,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAAA+vB,EAAAhwB,SAAA,CAAAsS,OAAA,CAAArS,IAAA,OAAA+vB,EAAAhwB,SAAA,CAAAwS,OAAA,CAAAvS,IAAA,OAAA+vB,EAAAhwB,SAAA,CAAA0S,OAAA,CAAAzS,IAAA,OAAA+vB,EAAAhwB,SAAA,CAAAwU,OAAA,CAAAvU,IAAA,OAAA+vB,EAAAhwB,SAAA,CAAAyU,OAAA,CAAAxU,IAAA,OACA,IACMswB,EAAA,KAAAC,QAAA,MAAAC,OAAA,CACN,OAAAzf,EAAA,CACA,KAAAyf,OAAA,CAAAzf,EACA,EAIAtF,KACAglB,CAAA,CACAC,CAAA,CACA,CACA,WAAAX,EAAA,CAAA5kB,EAAAC,IAAA,CACA,KAAAilB,SAAA,CAAApyB,IAAA,EACA,GACAqN,GAAA,CACA,GAAAmlB,EAKA,IACctlB,EAAAslB,EAAAnlB,GACd,OAAAyF,EAAA,CACA3F,EAAA2F,EACA,MANY5F,EAAAG,EAOH,EAET2kB,GAAA,CACA,GAAAS,EAGA,IACcvlB,EAAAulB,EAAAT,GACd,OAAAlf,EAAA,CACA3F,EAAA2F,EACA,MANY3F,EAAA6kB,EAOH,EAET,EACK,KAAAU,gBAAA,EACL,GAIAC,MACAF,CAAA,CACA,CACA,YAAAjlB,IAAA,CAAA4O,GAAAA,EAAAqW,EAAA,CAIAG,QAAAC,CAAA,EACA,WAAAf,EAAA,CAAA5kB,EAAAC,IAAA,CACA,IAAAiP,EAAA0W,EAGA,YAAAtlB,IAAA,CACAzI,GAAA,CACA+tB,EAAA,GACA1W,EAAArX,EACA8tB,GACAA,GAEA,EACAb,GAAA,CACAc,EAAA,GACA1W,EAAA4V,EACAa,GACAA,GAEA,GACArlB,IAAA,MACA,GAAAslB,EAAA,CACA3lB,EAAAiP,GACA,SAGOA,EACF,EACL,GAIA9H,SAAA,MAAAge,QAAA,KACA,KAAAS,UAAA,CAAAhB,EAAAiB,QAAA,CAAAjuB,EAAA,EAIAyP,SAAA,MAAA+d,OAAA,KACA,KAAAQ,UAAA,CAAAhB,EAAAkB,QAAA,CAAAjB,EAAA,EAIA1b,SAAA,MAAAyc,UAAA,EAAAG,EAAAnuB,IAAA,CACA,QAAAmtB,MAAA,GAAAH,EAAAI,OAAA,EAIA,MAAA/U,EAAA7P,EAAA,EAAAxI,GAAA,CACA,EAAAyI,IAAA,MAAA8kB,QAAA,MAAAC,OAAA,EACA,WAGA,CAAAL,MAAA,CAAAgB,EAAA,KAAAC,MAAA,CAAApuB,EAGA,KAAA2tB,gBAAA,GAXA,CAWA,CAIAnc,SAAA,MAAAmc,gBAAA,MACA,QAAAR,MAAA,GAAAH,EAAAI,OAAA,EAIA,IAAAiB,EAAA,KAAAhB,SAAA,CAAAtmB,KAAA,QAAAsmB,SAAA,IAGAgB,EAAA1lB,OAAA,CAAAqU,GAAA,CACAA,CAAA,MAIA,KAAAmQ,MAAA,GAAAH,EAAAiB,QAAA,EACAjR,CAAA,SAAAoR,MAAA,EAGA,KAAAjB,MAAA,GAAAH,EAAAkB,QAAA,EACAlR,CAAA,SAAAoR,MAAA,EAGKpR,CAAA,OACL,GApBA,CAqBA,EAGA,gBAAA3S,CAAA,CAAAlP,CAAA,CAAAC,CAAA,eAAAA,EAAAC,CAAA,CAAAF,EAAA,sBAAAmzB,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,uBAAAC,CAAA,QAAApT,EAAAjgB,EAAA,MAAAszB,EAAAtzB,EAAA,MC5L8CiP,EAAAjP,EAAA+S,GAAA,CAAA9D,GAe9C,IAAAskB,EAAA,CACAC,WAAA,IAAAhlB,KAAAoU,GAAA,QAgEmC6Q,EAAA,GAAAH,EAAAjrB,EAAA,IAAAqrB,UAXnC,CACA,IAEI,MAAAC,CADJ,EAAAL,EAAAxhB,EAAA,EAAA7C,EAAA,cACI2kB,WAAA,CACJ,MAAA9B,EAAA,CACA,MACA,KAKmC+B,UAlDT,CAC1B,IAAAD,YAAAA,CAAA,KAAA3T,EAAArZ,CAAA,IACA,MAAAgtB,EAAAhR,GAAA,EAwBA,IAAAkR,EAAAtlB,KAAAoU,GAAA,GAAAgR,EAAAhR,GAAA,GAGA,OACAA,IAAA,IAAAgR,EAAAhR,GAAA,GACAkR,WAAAA,CACA,EA7BA,GA+CmC,CAGnCC,EACAN,KAAAzrB,IAAAyrB,EACAF,EACA,CACAC,WAAA,KAAAC,EAAAK,UAAA,CAAAL,EAAA7Q,GAAA,SAKAyQ,EAAAE,EAAAC,UAAA,CAAAxS,IAAA,CAAAuS,GAaAH,EAAAW,EAAAP,UAAA,CAAAxS,IAAA,CAAA+S,GAGAZ,EAAAC,EAiBAF,EAAA,MAKA,IAAAU,YAAAA,CAAA,KAAA3T,EAAArZ,CAAA,IACA,MAAAgtB,EAAAhR,GAAA,EAMA,IAAAoR,EAAAJ,EAAAhR,GAAA,GAAAqR,EAAAzlB,KAAAoU,GAAA,GAIAsR,EAAAN,EAAAE,UAAA,CACAroB,KAAA0oB,GAAA,CAAAP,EAAAE,UAAA,CAAAE,EAAAC,GANA,IAOA,CAQAG,EAAAR,EAAAS,MAAA,EAAAT,EAAAS,MAAA,CAAAD,eAAA,CAGAE,EAAAC,UAFA,OAAAH,EAEA3oB,KAAA0oB,GAAA,CAAAC,EAAAJ,EAAAC,GAlBA,IAkBA,QAGA,EArBA,MAkBAK,EAlBA,KAuBA,GAAAA,EAEMV,EAAAE,UAAA,CAGNM,CACA,CAKCH,CALD,CAhCA,CAqCC,GAGD,gBAAAn0B,CAAA,CAAAC,CAAA,CAAAC,CAAA,eCtKA,SAAAw0B,EAAArS,CAAA,CAGA,CACA,IAAAA,EACA,SAEA,IAAAI,EAAAJ,EAAAI,KAAA,iEAGA,IAAAA,EACA,SAIA,IAAAkS,EAAAlS,CAAA,QACAmS,EAAAnS,CAAA,QACA,OACAoS,KAAApS,CAAA,IACAqS,KAAArS,CAAA,IACAsS,SAAAtS,CAAA,IACAuS,SAAAvS,CAAA,IAAAkS,EAAAC,CACA,EASA,SAAAK,EAAAC,CAAA,EACA,OAAAA,EAAArZ,KAAA,eDsIA3b,EAAAC,CAAA,CAAAF,EAAA,sBAAAy0B,CAAA,uBAAAO,CAAA,GC3HA,gBAAAj1B,CAAA,CAAAm1B,CAAA,CAAAj1B,CAAA,EClDmKk1B,CAAA,oBAAAxV,OAAAA,OAAA,SAAA1f,EAAAyf,CAAA,CAAAzf,EAAAyf,CAAA,qBAAA7f,KAAAA,KAAA,IAAAu1B,cAAA,EAAAxvB,GAAA,wCAAAsJ,CAAA,CAAAgmB,CAAA,CAAAj1B,CAAA,ECAtJ,aAEb,IAAAo1B,EAAAC,CAAqMpmB,CAAAA,EAAAqmB,OAAA,QAAAF,CAAAA,EAAAp1B,EAAAyf,CAAA,CAAAuJ,OAAA,SAAAoM,EAAAG,GAAA,0BAAAF,CAAAA,EAAAr1B,EAAAyf,CAAA,CAAAuJ,OAAA,SAAAqM,EAAAE,GAAA,EAAAv1B,EAAAyf,CAAA,CAAAuJ,OAAA,CAAAhpB,EAAA,OAErM,cAAAF,CAAA,CAAAm1B,CAAA,CAAAj1B,CAAA,ECFA,CAAA0f,OAAA8V,QAAA,CAAA9V,OAAA8V,QAAA,MAAA31B,IAAA,EACA,QACA,UAAe,CACf,OAAAG,EAAA,KACA,EACA,CAKA,gBAAAF,CAAA,CAAAC,CAAA,CAAAC,CAAA,eAAAA,EAAAy1B,CAAA,CAAA11B,GAAA,IAAA21B,EAAA11B,EAAA,MAAAA,EAAA,UAAA21B,EAAA31B,EAAA,MAAA41B,EAAA51B,EAAA,MCZA61B,EAAA71B,EAAA81B,CAAA,CAAAF,GAQA,IAAAG,EAAe,aAyBMh2B,CAAAA,EAAA,QAzB8B,SAAlCi2B,CAAS,CAAE,CAC1B,IAAAC,UAAAA,CAAA,CAAAC,UAAAA,CAAA,EAAAF,EAaE,MAbc,GAAAL,EACkBQ,SAAA,OAE9BJ,GAAsBF,IAASO,UAAA,EAAOC,MAAAN,CACvC,EAGH,MAYI,GAAAL,EAAAY,GAAA,EAAAZ,EAACa,QAAA,EAAAC,SAAuB,GAAAd,EAAAY,GAAA,EAAAL,EAAA,IAAAC,CAAA,EAG9B,EAEA,CAAqB,gBAAAp2B,CAAA,CAAA22B,CAAA,CAAAz2B,CAAA,mBG/BrB02B,EaCAC,E4BiBAC,EAAAC,EK0CAnnB,EAAA9J,EASAkxB,EAGAC,EGxDAlkB,EnDlBA,ImD2CAA,EACAmkB,EA7Be3vB,EFLfA,EnBJAA,E9BNA4vB,EAAA,SAGAC,EAAAl3B,EAAA,MAAAm3B,EAAAn3B,EAAA,MAAAo3B,EAAAp3B,EAAA,MCCAq3B,EAAA,4EAMAC,EAG0B,OAAAC,cAAA,MAAA5xB,EAAA,kBAKbvE,QAAA,MAAA4D,IAAA,CAAAsyB,EAAA3xB,EAAA,CAE8CrE,YAAAk2B,EAAA,SAAAA,QAAA,CAAAA,EAAAF,EAAA31B,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAM3D61B,UAAA5uB,CAAA,CAAAnI,CAAA,EACA,IAAAg3B,EAAA,IACA,IAAA3vB,EAAArH,IACA,GAAAqH,EAAA,CACA,IAAAnI,EAAAmI,EAAA1C,cAAA,CAAAiyB,GACA,GAAA13B,EAAA,CACA,IAgCAyH,EAkCAswB,EAlEAp2B,EAAAwG,EAAAxF,SAAA,GACAq1B,EAAAr2B,EAAAA,EAAAuC,UAAA,MAEA,MAAA+zB,CA8BA,CADAxwB,EA9BAywB,SAcAC,EAAoB,GACpBH,EAAA,GACA,CACA,OACAI,UAAA,IAAAD,EAAAC,SAAA,QAAAJ,EAAAI,SAAA,MACAC,SAAA,IAAAF,EAAAE,QAAA,QAAAL,EAAAK,QAAA,MACAN,aAAA,IACAI,EAAAJ,YAAA,QACAC,EAAAD,YAAA,QACAN,EACA,CACAa,eAAAH,KAAA/vB,IAAA+vB,EAAAG,cAAA,EAAAH,EAAAG,cAAA,CACA,EA1BAt4B,EAAA43B,QAAA,CAAAI,IA+BAM,cAAA,EAAAC,SA6EA50B,CAAA,EACA,IAEI,MAAAA,gBAAAA,EAAAjD,SAAA,CAAA2nB,MAAA,IAAAzkB,IAAA,CACJ,MAAAmP,EAAA,CAEA,CACA,UAlHApP,IA+BA,qBAAMiC,kBAAWA,gBAAA,GACjB0xB,EAAAzxB,EAAA,CAAAC,IAAA;OAAA,KAAAyxB,EAAAiB,EAAA,EAhCA70B,GAgCA,GACA,GA+BA,CADAo0B,EA5BAtwB,EAAAswB,YAAA,GA6BAA,EAAAl1B,MAAA,EAIA41B,CAuBA,SAAA90B,CAAA,EACA,GAAAA,EAAAH,OAAA,CACA,OAAAG,EAAAH,OAAA,EAEA,GAAAG,EAAAjD,SAAA,CACA,IACA,IAAAkD,KAAAA,EAAiB,EAAM,CAAAoB,MAAAA,EAAM,EAAK,EAAI,EAAMtE,SAAA,CAAA2nB,MAAA,EAAA1kB,EAAAjD,SAAA,CAAA2nB,MAAA,QACtC,UAAArjB,EAAA,KAAApB,EAAA,IAAAoB,EAAA,GACN,MAAA+Z,EAAA,CACA,qBAAAnZ,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,wCAAAuT,EAAAiB,EAAA,EAAA70B,GAAA,EAEA,CACA,MACA,KAxGAA,GAoEiC+0B,IAAA,CAAAl1B,GACjCu0B,EAAAW,IAAA,CAAArI,GAAA,GAAAmH,EAAAmB,EAAA,EAAAn1B,EAAA6sB,MAjCA,qBAAMzqB,kBAAWA,gBAAA,GACjB0xB,EAAAzxB,EAAA,CAAAC,IAAA,CACA;OAAA,KAAAyxB,EAAAiB,EAAA,EAtCA70B,GAsCA,GAEA,IAEAi1B,SA+BAj1B,CAAA,CAAA00B,CAAA,EAEA,IAAAA,GAAA,CAAAA,EAAAx1B,MAAA,CACA,QACA,CACA,IAAA0f,EAAAsW,EAAAl1B,GACA,QAAA4e,GAAA8V,EAAAK,IAAA,CAAArI,GAAA,GAAAmH,EAAAmB,EAAA,EAAApW,EAAA8N,GAAA,EA/EA1sB,EA0CA8D,EAAA4wB,QAAA,EASAS,SA+BAn1B,CAAA,CAAAy0B,CAAA,EAEA,IAAAA,GAAA,CAAAA,EAAAv1B,MAAA,CACA,QACA,CACA,IAAA0f,EAAAsW,EAAAl1B,GACA,OAAA4e,GAAA6V,EAAAM,IAAA,CAAArI,GAAA,GAAAmH,EAAAmB,EAAA,EAAApW,EAAA8N,GAAA,EAxFA1sB,EAmDA8D,EAAA2wB,SAAA,IACA,qBAAMxyB,kBAAWA,gBAAA,GACjB0xB,EAAAzxB,EAAA,CAAAC,IAAA,CACA;OAAA,KAAAyxB,EAAAiB,EAAA,EAtDA70B,GAwDA;KAAA,EAAAk1B,EAxDAl1B,GAwDA,GAEA,IAfA,qBAAMiC,kBAAWA,gBAAA,GACjB0xB,EAAAzxB,EAAA,CAAAC,IAAA,CACA;OAAA,KAAAyxB,EAAAiB,EAAA,EA7CA70B,GA+CA;KAAA,EAAAk1B,EA/CAl1B,GA+CA,GAEA,EAfA,EAlCAA,EAAA,KACA,CACA,OACAA,CAAA,CAGAm0B,CAAAA,EAAA/xB,EAAA,MAAAX,IAAA,CACA6D,EAAA6uB,EACE,EAyHF,SAAAe,EAAAl1B,CAAA,EACA,IACA,IAAAmrB,EACA,IAEMA,EAAAnrB,EAAAjD,SAAA,CAAA2nB,MAAA,IAAA8B,UAAA,CAAA2E,MAAA,CACN,MAAA/b,EAAA,CAEA,CACI,OAAA+b,EAAAiK,SArBJjK,EAAkC,IAClC,QAAA5Q,EAAA4Q,EAAAjsB,MAAA,GAAAqb,GAAA,EAAAA,IAAA,KAAA+Q,EAAAH,CAAA,CAAA5Q,EAAA,CAGA,GAAA+Q,GAAAA,gBAAAA,EAAAO,QAAA,EAAAP,kBAAAA,EAAAO,QAAA,CACA,OAAAP,EAAAO,QAAA,OAIA,aAYIV,GAAA,KACJ,MAAA/P,EAAA,CAEA,MADA,qBAAAnZ,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,oCAAAuT,EAAAiB,EAAA,EAAA70B,GAAA,GACA,KACA,CAtIE+zB,EAAAC,YAAA,GAyIF,IAAA/N,EAAAxpB,EAAA,IC9KA,OAAA44B,EAAAt3B,aAAA,CAAAs3B,EAAAj3B,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAG0B,OAAA21B,cAAA,MAAA5xB,EAAA,oBAKbvE,QAAA,MAAA4D,IAAA,CAAA4zB,EAAAjzB,EAAA,CAMb8xB,WAAA,CAAAf,EAAAmC,SAAAl3B,SAAA,CAAAmY,QAAA,CAGA+e,SAAAl3B,SAAoB,CAAAmY,QAAA,aAAArS,CAAA,CAAmB,CACvC,IAAAxC,EAAA,GAAAukB,EAAAsP,EAAA,cACA,OAAApC,EAAA5uB,KAAA,CAAA7C,EAAAwC,EACA,CACE,EAAAmxB,EAAArB,YAAA,GAGF,IAAAwB,EAAA/4B,EAAA,MAAAg5B,EAAAh5B,EAAA,MC3BAi5B,EAAA,GAQA,SAAAC,EAAArmB,CAAA,EACA,OAAAA,EAAAiG,MAAA,EAAAqgB,EAAAtmB,KACAsmB,EAAAC,KAAA,CAAAC,GAAAxmB,EAAA7N,IAAA,GAAAq0B,EAAAr0B,IAAA,GACAm0B,EAAAt5B,IAAA,CAAAgT,GAEGsmB,GACH,ICkBA,IAAAG,EAAAt5B,EAAA,MAAA+pB,EAAA/pB,EAAA,KAAAu5B,EAAAv5B,EAAA,MAAAuP,EAAAvP,EAAA,MAAAw5B,EAAAx5B,EAAA,KCjCA,OAAAy5B,UAAArT,MAIA9kB,YAAA8B,CAAmB,CAAAs2B,EAAA,cAAAt2B,GAAA,KAAAA,OAAA,CAAAA,EAGnB,KAAA4B,IAAA,YAAArD,SAAA,CAAAL,WAAA,CAAA0D,IAAA,CAIAmG,OAAAwuB,cAAA,iBAAAh4B,SAAA,EACA,KAAA+3B,QAAA,CAAAA,CACA,ECZA,IAAAE,EAAA,iEAgBA,SAAAC,EAAUC,CAAA,CAAAC,EAAA,IACV,IAAApF,KAAAA,CAAA,CAAAC,KAAAA,CAAA,CAAAoF,KAAAA,CAAA,CAAAC,KAAAA,CAAA,CAAAC,UAAAA,CAAA,CAAArF,SAAAA,CAAA,CAAAnb,UAAAA,CAAA,EAAAogB,EACA,MACA,GAAAjF,EAAe,KAAAnb,EAAgB,EAAAqgB,GAAUC,EAAe,IAAAA,EAAA,CAAU,CAAE,GACpE,GAAArF,EAAA,EAAAsF,EAAA,IAAAA,EAAA,QAAArF,EAAA,GAAAA,EAAA,GAAAA,CAAA,GAAAsF,EAAA,CADoE,CAsCpE,SAAAC,EAAAC,CAAA,EACA,OACAvF,SAAAuF,EAAAvF,QAAA,CACAnb,UAAA0gB,EAAA1gB,SAAA,KACAsgB,KAAAI,EAAAJ,IAAA,KACArF,KAAAyF,EAAAzF,IAAA,CACAsF,KAAAG,EAAAH,IAAA,KACArF,KAAAwF,EAAAxF,IAAA,KACAsF,UAAAE,EAAAF,SAAA,CACA,CAuCA,IAAA7qB,EAAArP,EAAA,MAAAq6B,EAAAr6B,EAAA,MCpGA,SAAAs6B,EAAAC,CAAA,CAAAC,EAAA,IACA,OAAAD,EAAAC,EAAA,CAiBA,SAAAC,EACAC,CAAA,CACAj6B,CAAA,CACA,CAEAk6B,CADA,IACAptB,OAAA,KACA,IAAAqtB,EAAAC,CAAA,IAAAr3B,IAAA,CACG/C,EAAAo6B,EAAAD,EACH,GAGA,SAAAE,EAAA9Q,CAAA,CAAA+Q,CAAA,EAEA,MAAAC,CADAD,GAAA,IAAAE,WAAA,EACAC,MAAA,CAAAlR,EAAA,CAMA,SAAAmR,EAAAT,CAAA,CAAAK,CAAA,MAAAK,EAAAZ,EAAA,CAAAE,EAGAW,EAAAxqB,KAAAC,SAAA,CAAAsqB,GAGA,SAAAE,EAAAC,CAAA,EACA,iBAAAF,EACMA,EAAA,iBAAAE,EAAAF,EAAAE,EAAA,CAAAT,EAAAO,EAAAN,GAAAQ,EAAA,CAENF,EAAAx7B,IAAA,kBAAA07B,EAAAT,EAAAS,EAAAR,GAAAQ,CAAA,CACA,CAGA,QAAArN,KAAAsM,EAAA,CACA,IAAAgB,EAAgBC,EAAA,CAAAvN,EAChBoN,EAAA;AAAA,EAAAzqB,KAAAC,SAAA,CAAA0qB,GAAA;AAAA,GACAF,EAAA,iBAAAG,GAAAA,aAAA3T,WAAA2T,EAAA5qB,KAAAC,SAAA,CAAA2qB,EAAA,EAGA,uBAAAJ,EAAAA,EAAAK,SAGAC,CAAA,MAAAC,EAAAD,EAAA7iB,MAAA,EAAAqgB,EAAA0C,IAAA1C,EAAA0C,EAAAp5B,MAAA,IAGAq5B,EAAA,IAAAhU,WAAA8T,GACA,IAAAG,EAAA,EACA,QAAAC,KAAAL,EACAG,EAAA7N,GAAA,CAAA+N,EAAAD,GACAA,GAAAC,EAAAv5B,MAAA,CAGA,OAAAq5B,CAAA,EAbAT,EAAA,CAqCA,IAAAY,EAAA,CACA71B,QAAA,UACA81B,SAAA,UACApwB,WAAA,aACAd,YAAA,cACAzH,MAAA,QACA44B,cAAA,WACAC,YAAA,WAUA5hB,EAAAxa,EAAA,MAAAspB,EAAAtpB,EAAA,MCtFA,SAAAq8B,EACAvC,CAAA,CAGAwC,EAAA,GACA,CAKA,IAAAC,EAAA,iBAAAD,EAAAA,EAAAA,EAAAC,MAAA,CACAC,EAAA,iBAAAF,GAAAA,EAAAG,SAAA,CAAAH,EAAAG,SAAA,CAAAC,GAAA,CAAA10B,KAAAA,CAAA,CAGA,OAAAu0B,GAAA,GAxCAzC,EAAAjF,QAA4B,IAAAiF,EAASjF,QAAA,WAErCiF,EAAAnF,IAAA,GADYmF,EAAAG,IAAS,EAAI,GAAAH,EAAAG,IAAW,GAAK,EAAE,GAC3CH,EAAAlF,IAAA,KAAAkF,EAAAlF,IAAA,aAKAkF,EAAAI,SAAA,cAKA,GAAA1Q,EAAAmT,EAAA,GAGAC,WAAA9C,EAAApgB,SAAA,CACAmjB,eArBA,IAsBG,GAAAL,GAAA,CAAAM,cAAA,GAAAN,EAAAx3B,IAAA,IAAAw3B,EAAAx6B,OAAA,OAuBH,CAsCA,IAAA+6B,EAAA/8B,EAAA,MCjFA,SAAAg9B,EAAApmB,CAAA,EACA,IAAAA,GAAA,CAAAA,EAAA8lB,GAAA,CACA,MACA,CACA,IAAA13B,KAAAA,CAAW,CAAAhD,QAAAA,CAAA,EAAA4U,EAAA8lB,GAAA,CACX,OAAA13B,KAAAA,EAAAhD,QAAAA,CAAA,ECHA,IAAAi7B,EAAA,6DAkCA,OAAAC,EAOa97B,QAAA,MAAA+7B,aAAA,IAGClpB,SAAA,MAAAmpB,wBAAA,IAGAjpB,SAAA,MAAAkpB,cAAA,GAGAhpB,SAAA,MAAAipB,SAAA,IAQdh8B,YAAA+F,CAAA,EAEA,GAFA61B,EAAAv7B,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAAAs7B,EAAAv7B,SAAA,CAAAsS,OAAA,CAAArS,IAAA,OAAAs7B,EAAAv7B,SAAA,CAAAwS,OAAA,CAAAvS,IAAA,OAAAs7B,EAAAv7B,SAAA,CAAA0S,OAAA,CAAAzS,IAAA,OACA,KAAA41B,QAAA,CAAAnwB,EACAA,EAAAyyB,GAAkB,EAClB,KAAAyD,IAAA,GJqCAC,SAhCA1D,CAAA,EACA,yBAAAt0B,kBAAAA,gBAAA,EACA,OAEsC,IAAAy0B,KAAAA,CAAA,CAAAC,UAAAA,CAAA,CAAArF,SAAAA,CAAA,EAAAiF,EAUtC,GANA2D,CADA,2CACAlwB,OAAA,CAAAmwB,GAAA,CACA,IAAA5D,CAAA,CAAA4D,EAAgB,CAChB,UAAAjE,EAAA,uBAAAiE,EAAA,aAIA,CAAAxD,EAAc3X,KAAA,UACd,UAAAkX,EAAA,yCAAAS,EAAA,GAGA,IAnFArF,CAAAA,SAmFcA,GAnFdA,UAmFcA,CAnFd,EAoFA,UAAA4E,EAAA,wCAAA5E,EAAA,GAGA,GAAAoF,GAAclU,MAAA4X,SAAW1D,EAAA,KACzB,UAAAR,EAAA,oCAAAQ,EAAA,IAQAG,EAAA,iBADAlW,EInCgB7c,EAAAyyB,GAAA,EJoChB8D,SAtEAhO,CAAA,MAAArN,EAAAqX,EAAAiE,IAAA,CAAAjO,GAGA,IAAArN,EACA,UAAAkX,EAAA,uBAAA7J,EAAA,GAGA,IAAAiF,EAAAnb,EAAAsgB,EAAA,GAAArF,EAAAsF,EAAA,GAAA6D,EAAA,CAAAvb,EAAA5W,KAAA,IACAipB,EAAA,GAAAsF,EAAA4D,EAGA,IAAAniB,EAAAue,EAAAve,KAAA,MAMA,GALAA,EAAAlZ,MAAA,KACAmyB,EAAAjZ,EAAAhQ,KAAA,OAAAgK,IAAA,MACAukB,EAAAve,EAAAjZ,GAAA,IAGAw3B,EAAA,CACA,IAAA6D,EAAA7D,EAAA3X,KAAA,SACAwb,GACA7D,CAAAA,EAAA6D,CAAA,IACA,QAGA5D,EAAA,CAAAxF,KAAAA,EAAAqF,KAAAA,EAAApF,KAAAA,EAAAsF,UAAAA,EAAAD,KAAAA,EAAApF,SAAAA,EAAAnb,UAAAA,CAAA,IA8CAwK,GAAAiW,EAAAjW,EAAA,EAEAkW,GIrCA,IJkCAlW,EACAkW,EInCAjY,EAAAka,EAAA,KAAAkB,IAAA,CAAAl2B,EACA,MAAA22B,UAAA,CAAA32B,EAAA42B,SAAA,EACArlB,mBAAA,KAAAA,kBAAA,CAAAoI,IAAA,OACA,GAAA3Z,EAAA62B,gBAAA,CACO/b,IAAAA,CACD,EACN,KACA,qBAAA3c,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,iDACA,CAMAvF,iBAAAG,CAAA,CAAAqC,CAAA,CAAAnB,CAAA,EAEA,MAAA21B,EAAAgH,EAAA,EAAA79B,GAAA,CACA,qBAAAkF,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,CAAA8vB,GACA,WAEAr6B,EAAAD,GAAAA,EAAAG,QAAA,CAWA,OARA,KAAAs7B,QAAA,CACA,KAAAC,kBAAA,CAAA/9B,EAAAqC,GACA0K,IAAA,CAAA9J,GAAA,KAAA+6B,aAAA,CAAA/6B,EAAAZ,EAAAnB,IACA6L,IAAA,CAAAH,GAAA,CACStK,EAAAsK,CACT,IAGAtK,CAAA,CAMAO,eACAC,CAAA,CACAC,CAAA,CACAV,CAAA,CACAnB,CAAA,CACA,KAAAoB,EAAAD,GAAAA,EAAAG,QAAA,CAGA,IAAAy7B,EAAA,GAAAlvB,EAAAmvB,EAAA,EAAAp7B,GACA,KAAAq7B,gBAAA,CAAAxnB,OAAA7T,GAAAC,EAAAV,GAAA,KAAA07B,kBAAA,CAAAj7B,EAAAT,EAAA,CAWA,OARA,KAAAy7B,QAAA,CACAG,EACAlxB,IAAA,CAAA9J,GAAA,KAAA+6B,aAAA,CAAA/6B,EAAAZ,EAAAnB,IACA6L,IAAA,CAAAH,GAAA,CACStK,EAAAsK,CACT,IAGAtK,CAAA,CAMAU,aAAAC,CAAA,CAAAZ,CAAA,CAAAnB,CAAA,EAEA,GAAAmB,GAAAA,EAAAO,iBAAA,KAAAi0B,EAAuEgH,EAAA,EAAAx7B,EAAAO,iBAAU,GACjF,qBAAAsC,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,CAAA8vB,GACA,WAEAr6B,EAAAD,GAAAA,EAAAG,QAAA,CASA,OANA,KAAAs7B,QAAA,CACA,KAAAE,aAAA,CAAA/6B,EAAAZ,EAAAnB,GAAA6L,IAAA,CAAAH,GAAA,CACOtK,EAAAsK,CACP,IAGAtK,CAAA,CAMAoD,eAAAI,CAAA,EACA,SAAAs4B,UAAA,IACA,qBAAAl5B,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,+CACA,iBAGA,OAAAU,EAAAK,OAAA,CACM,qBAAAjB,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,gEAEN,KAAAi5B,WAAA,CAAAv4B,GAEA,GAAAozB,EAAAryB,EAAA,EAAAf,EAAA,CAAA6H,KAAA,KACA,CAMA2L,QAAA,CACA,YAAA2jB,IAAA,CAMAz5B,YAAA,CACA,YAAA0zB,QAAA,CAMAoH,cAAA,CACA,YAAAZ,UAAA,CAMAa,MAAAC,CAAA,EACA,IAAAb,EAAA,KAAAD,UAAA,QACA,EACA,KAAAe,uBAAA,CAAAD,GAAAzxB,IAAA,CAAA2xB,GACOf,EAAAY,KAAA,CAAAC,GAAAzxB,IAAA,CAAA4xB,GAAAD,GAAAC,IAGP,GAAA5E,EAAA6E,EAAA,KACA,CAMAC,MAAAL,CAAA,EACA,YAAAD,KAAA,CAAAC,GAAAzxB,IAAA,CAAAH,IACA,KAAApJ,UAAA,GAAAmjB,OAAA,IACK/Z,GACL,CAMAhL,mBAAA,CACA,QAAAw8B,UAAA,IAA2B,MAAAtB,wBAAiB,MP/J5CvqB,EAAAusB,COgKA,MAAAjC,aAAA,EPhKAtqB,EOgKA,KAAA2kB,QAAA,CAAA3kB,YAAA,CPhKAusB,EAAA,GAGAvsB,EAAAtF,OAAA,CAAAjI,GAAA,CAAA85B,CAAA,CAAA95B,EAAAN,IAAA,EAAAM,EAG4B,KAA5B2zB,EAA4B9J,OAAA,CAAA7pB,EAAAN,IAAA,IAC5BM,EAAAmyB,SAAA,CAAAsB,EAAAhR,CAAA,CAAAiR,EAAAx4B,EAAA,EACAy4B,EAAAp5B,IAAA,CAAAyF,EAAAN,IAAA,EACA,qBAAAQ,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,2BAAA7H,EAAAN,IAAA,IACG,GAGHo6B,GOoJA,KAAAhC,wBAAA,GACA,EAQAiC,mBAAAC,CAAA,EACA,YAAAnC,aAAA,CAAAmC,EAAA,CAMAj6B,eAAAC,CAAA,EACA,IACM,YAAA63B,aAAA,CAAA73B,EAAAK,EAAA,QACN,MAAAJ,EAAA,CAEA,MADA,qBAAAC,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,gCAAAJ,EAAAK,EAAA,4BACA,KACA,CAMA45B,UAAAh8B,CAAA,CAAAZ,EAAA,IACA,QAAA46B,IAAgB,EAAmB,IAAAhI,EAAAiK,SDnMnCj8B,CAAA,CACAu2B,CAAA,CACAljB,CAAA,CACA2lB,CAAA,CACA,CACA,IAgCAtjB,EAA+DwmB,EAzE/Dl8B,EAAAi5B,EAyCAA,EAAAQ,EAAApmB,GAAA8oB,EAAAn8B,EAAAC,IAAA,UAGA,IAAU+M,oBAAAA,CAAA,EAAAhN,EAAAgJ,qBAA2C,MAAA/E,OAAAm4B,CAAA,CAAAzvB,KAAAC,CAAA,EAAAI,GAAA,GA5CrDhN,EA8CAA,EA7CA,CADAi5B,EA8CA5lB,GAAAA,EAAA8lB,GAAA,IA1CAn5B,EAAAm5B,GAAA,CAAAn5B,EAAAm5B,GAAA,KACAn5B,EAAAm5B,GAAA,CAAA13B,IAAA,CAAAzB,EAAAm5B,GAAA,CAAA13B,IAAA,EAAAw3B,EAAAx3B,IAAA,CACAzB,EAAAm5B,GAAA,CAAA16B,OAAA,CAAAuB,EAAAm5B,GAAA,CAAA16B,OAAA,EAAAw6B,EAAAx6B,OAAA,CACAuB,EAAAm5B,GAAA,CAAA7pB,YAAA,KAAAtP,EAAAm5B,GAAA,CAAA7pB,YAAA,QAAA2pB,EAAA3pB,YAAA,MACAtP,EAAAm5B,GAAA,CAAAkD,QAAA,KAAAr8B,EAAAm5B,GAAA,CAAAkD,QAAA,QAAApD,EAAAoD,QAAA,OAwCA,IAAAC,GAyB+DJ,EAAAxmB,CAA/DA,EAAA1V,EAAAgJ,qBAA0C,EAAAhJ,EAAAgJ,qBAAA,CAAA0M,OAAA,GAAqB,GAAA8jB,EAAA9iB,EAAA,EAAAhB,GAG/D,CACAnW,SAAAS,EAAAT,QAAA,CACAg9B,QAAA,IAAAtxB,OAAqBC,WAAc,GACnC,GAAA+tB,GAAA,CAAAE,IA/BAF,CA+B2B,EAC3B,KAhCAD,GAgCA,CAAAzC,IAAAD,EAhCAC,EAgCA,EACA,GAAAv2B,gBAAAA,EAAAC,IAAA,EACAi8B,GAAe,CACRvzB,MAAA,GAAAsd,EAAAjb,EAAA,MAAAkxB,CAAA,EACP,IApBA,OAVA,OAAAl8B,EAAAgJ,qBAAA,CAUA+tB,EAAAuF,EAAA,CAPA,CACA,CACAr8B,KAAAk8B,EACKK,aAAA,EAAAp6B,GAAAg6B,EAAAzvB,KAAAC,CAAA,IAEL5M,EACA,CACA,GCuKmCA,EAAA,KAAAg6B,IAAA,MAAA/F,QAAA,CAAAiF,SAAA,MAAAjF,QAAA,CAAA+E,MAAA,EAGnC,QAAczwB,KAAAnJ,EAAiBq9B,WAAA,KAC/BzK,EAAA0K,SH1OAvF,CAAA,CAAAwF,CAAA,EACA,IAAA3F,EAAAC,EAAA,CAAAE,EACA,OAAAH,EAAA,IAAAC,EAAA0F,EAAA,GGyOU3K,EACV4K,SHxKAr0B,CAAA,CACAivB,CAAA,CACA,KAAAiB,EAAA,iBAAAlwB,EAAAuK,IAAA,CAAAykB,EAAAhvB,EAAAuK,IAAA,CAAA0kB,GAAAjvB,EAAAuK,IAAA,CAGA,MAAI,CACJ,GAAAmT,EAAAjb,EAAA,GACA/K,KAAA,aACAf,OAAAu5B,EAAAv5B,MAAA,CACA2sB,SAAAtjB,EAAAsjB,QAAA,CACAgR,aAAAt0B,EAAAu0B,WAAA,CACKC,gBAAAx0B,EAAAy0B,cAAA,GAELvE,EACA,EG2JAlwB,EACA,KAAA0rB,QAAA,CAAA0G,gBAAA,OAAA1G,QAAA,CAAA0G,gBAAA,CAAAnD,WAAA,GAKA,KAAAyF,aAAA,CAAAjL,EACA,EAMAoJ,YAAAv4B,CAAA,EACA,QAAAm3B,IAAgB,EAChB,ID9OAzD,EACAljB,EACA2lB,EAEAC,EC0OAjH,GD9OAuE,EC8OA,KAAAyD,IAAA,CD7OA3mB,EC6OA,KAAA4gB,QAAA,CAAAiF,SAAA,CD5OAF,EC4OA,KAAA/E,QAAA,CAAA+E,MAAA,CD1OAC,EAAAQ,EAAApmB,GAUA0jB,EATA,CACAwF,QAAA,IAAAtxB,OAAqBC,WAAc,GACnC,GAAA+tB,GAAA,CAAAE,IAAsBF,CAAK,EAC3B,KAAAD,GAAA,CAAAzC,IAAAD,EAAAC,EAAA,GAMA,CAHoF,eCmOpF1zB,EDnOoF,EAAA5C,KAAA,YCmOpF4C,EDnOoF,GAAA5C,KAAA,WCmOpF4C,EDnOoF,CAGpF,GCiOA,KAAAo6B,aAAA,CAAAjL,EACA,EAMA3c,mBAAAiZ,CAAA,CAAA4O,CAAA,EACA,QAAAjJ,QAAA,CAAAkJ,iBAAA,EAOA,IAAA/7B,EAAA,GAAAktB,EAAA,GAAA4O,EAAA,EAA0G,qBAAAj7B,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,qBAAAxI,EAAA,IAI1G,KAAA24B,SAAA,CAAA34B,EAAA,MAAA24B,SAAA,CAAA34B,EAAA,KACA,EAIAg8B,wBAAAv6B,CAAA,CAAA7C,CAAA,EACA,IAAAq9B,EAAA,GACAC,EAAA,OAAAC,EAAAv9B,EAAAjD,SAAA,EAAAiD,EAAAjD,SAAA,CAAA2nB,MAAA,CAGA,GAAA6Y,EAGA,QAAAC,KAHAF,EAAA,GAGAC,GAAA,CACA,IAAAzY,EAAA0Y,EAAA1Y,SAAA,CACA,GAAAA,GAAAA,CAAA,IAAAA,EAAAC,OAAA,EACAsY,EAAA,GACA,MACA,CACA,IAMAI,EAAA56B,OAAAA,EAAAc,MAAA,KAAAd,IAAAA,EAAAgI,MAAA,EAAA4yB,GAAAJ,CAAA,IAIA,GAAApH,EAAyBryB,EAAA,EAAmBf,EAAA,CAC5C,GAAAw6B,GAAA,CAAA15B,OAAA,WACOkH,OAAAhI,EAAAgI,MAAA,EAAAqC,OAAAowB,GAAAD,EACP,GACA,KAAA56B,cAAA,CAAAI,GACA,CAaA24B,wBAAeD,CAAA,EACf,WAAAzE,EAAAvtB,EAAA,CAAAC,GAAA,CACA,IAAAk0B,EAAA,EAGA,IAAAC,EAAAC,YAAA,KACA,QAAA9D,cAAA,EACA+D,cAAAF,GACUn0B,EAAA,MAEVk0B,GARA,EASAnC,GAAAmC,GAAAnC,IACAsC,cAAAF,GACAn0B,EAAA,KAGK,EAdL,EAeA,GAIA2xB,YAAA,CACA,gBAAA56B,UAAA,GAAAmjB,OAAA,OAAAjf,IAAA,KAAAu1B,IAAA,CAiBA8D,cAAY99B,CAAA,CAAAZ,CAAA,CAAAnB,CAAA,EACZ,IAAA8/B,eAAAA,EAAA,EAAAC,oBAAAA,EAAA,UAAAz9B,UAAA,GACA,IAAA09B,EAAA,CACA,GAAAj+B,CAAA,CACAT,SAAAS,EAAAT,QAAA,EAAAH,EAAoCG,QAAA,KAAAq0B,EAAAp0B,EAAA,IACpCgB,UAAAR,EAAAQ,SAAA,KAAAyW,EAAAxW,EAAA,KAGA,KAAAy9B,mBAAA,CAAAD,GAAA,KAAAE,0BAAA,CAAAF,GAKA,IAAAG,EAAAngC,CACAmB,CAAAA,EAAApC,cAAmB,EACnBohC,CAAAA,EAAA5I,EAAAt3B,CAAA,CAAAW,KAAA,CAAAu/B,GAAA12B,MAAA,CAAAtI,EAAApC,cAAA,GAGoC,IAAA2M,EAAA,GAAAmtB,EAAA6E,EAAA,EAAAsC,GAKpC,GAAAG,EAAA,CACA,IAAA3B,EAAA,IAAAr9B,EAAAq9B,WAAA,QAAA2B,EAAA51B,cAAA,IAGAi0B,EAAAv9B,MAAA,EACAE,CAAAA,EAAAq9B,WAAA,CAAAA,CAAA,EAIA9yB,EAAAy0B,EAAA11B,YAAA,CAAAu1B,EAAA7+B,EAAA,QAGAuK,EAAAG,IAAA,CAAAu0B,GACA,iBAAAN,GAAAA,EAAA,EACA,KAAAO,eAAA,CAAAD,EAAAN,EAAAC,GAEKK,CADL,CAEA,CAaAC,gBAAAt+B,CAAA,CAAAkmB,CAAA,CAAAqY,CAAA,EACA,IAAAv+B,EACA,YAGA,IAAAomB,EAAA,CACA,GAAApmB,CAAA,CACA,GAAAA,EAAA+I,WAAA,GACAA,YAAA/I,EAAA+I,WAAA,CAAAmG,GAAA,CAAA+b,GAAA,EACA,GAAAA,CAAA,CACA,GAAAA,EAAAnY,IAAkB,GACPA,KAAA,GAAAiT,EAAAyY,EAAA,EAAAvT,EAAAnY,IAAA,CAAAoT,EAAAqY,EACF,EACF,EACP,EACA,GAAAv+B,EAAcc,IAAA,GACPA,KAAA,GAAAilB,EAAAyY,EAAA,EAAAx+B,EAAAc,IAAA,CAAAolB,EAAAqY,EACP,EACA,GAAAv+B,EAAA+H,QAAkB,GACXA,SAAA,GAAAge,EAAAyY,EAAA,EAAAx+B,EAAA+H,QAAA,CAAAme,EAAAqY,EACP,EACA,GAAAv+B,EAAeuB,KAAA,GACRA,MAAA,GAAAwkB,EAAAyY,EAAA,EAAAx+B,EAAAuB,KAAA,CAAA2kB,EAAAqY,EACP,GA8BA,OApBAv+B,EAAA+H,QAAA,EAAA/H,EAAA+H,QAAA,CAAAY,KAAA,EAAAyd,EAAAre,QAAA,GAAAqe,EAAAre,QAAA,CAAAY,KAAA,CAAA3I,EAAA+H,QAAA,CAAAY,KAAA,CAIA3I,EAAA+H,QAAA,CAAAY,KAAA,CAAAmK,IAAA,EACAsT,CAAAA,EAAAre,QAAA,CAAAY,KAAA,CAAAmK,IAAA,IAAAiT,EAAAyY,EAAA,EAAAx+B,EAAA+H,QAAA,CAAAY,KAAA,CAAAmK,IAAA,CAAAoT,EAAAqY,EAAA,GAKAv+B,EAAAwR,KAAA,EACA4U,CAAAA,EAAA5U,KAAA,CAAAxR,EAAAwR,KAAA,CAAAtC,GAAA,CAAA5H,IAEAA,EAAAwL,IAAA,EACAxL,CAAAA,EAAAwL,IAAA,IAAAiT,EAAAyY,EAAA,EAAAl3B,EAAAwL,IAAA,CAAAoT,EAAAqY,EAAA,EAEOj3B,GACP,EAGA8e,CAAA,CASA8X,oBAAAl+B,CAAA,EACA,IAAA8D,EAAY,KAAAvD,UAAA,GAAmD,IAAA4C,YAAAA,CAAA,CAAAD,QAAAA,CAAA,CAAAu7B,KAAAA,CAAA,CAAAC,eAAAA,EAAA,KAAA56B,EAG/D,gBAAA9D,GACAA,CAAAA,EAAAmD,WAAA,iBAAAW,EAAAX,EAAA,cAGAsB,KAAAA,IAAAzE,EAAAkD,OAAA,EAAAA,KAAAuB,IAAAvB,GACAlD,CAAAA,EAAAkD,OAAA,CAAAA,CAAA,EAGAuB,KAAAA,IAAAzE,EAAAy+B,IAAA,EAAAA,KAAAh6B,IAAAg6B,GACAz+B,CAAAA,EAAAy+B,IAAA,CAAAA,CAAA,EAGAz+B,EAAAH,OAAA,EACAG,CAAAA,EAAAH,OAAA,IAAAg0B,EAAA5J,EAAA,EAAAjqB,EAAAH,OAAA,CAAA6+B,EAAA,EAGA,IAAA3hC,EAAAiD,EAAAjD,SAAA,EAAAiD,EAAAjD,SAAA,CAAA2nB,MAAA,EAAA1kB,EAAAjD,SAAA,CAAA2nB,MAAA,IACA3nB,GAAAA,EAAwBsE,KAAA,EACxBtE,CAAAA,EAAAsE,KAAA,IAAAwyB,EAAA5J,EAAA,EAAAltB,EAAAsE,KAAA,CAAAq9B,EAAA,EAGA,IAAA9Y,EAAA5lB,EAAA4lB,OAAA,CACAA,GAAAA,EAAoBhH,GAAA,EACpBgH,CAAAA,EAAAhH,GAAA,IAAAiV,EAAA5J,EAAA,EAAArE,EAAAhH,GAAA,CAAA8f,EAAA,CACA,CAOAP,2BAAAn+B,CAAA,EACA,IAAA2+B,EAAA/2B,OAAAC,IAAA,MAAA+xB,aAAA,CACA+E,CAAAA,EAAAz/B,MAAA,KACAc,EAAAm5B,GAAA,CAAAn5B,EAAAm5B,GAAA,KACAn5B,EAAAm5B,GAAA,CAAA7pB,YAAA,KAAAtP,EAAAm5B,GAAA,CAAA7pB,YAAA,QAAAqvB,EAAA,CACA,CASA5D,cAAA/6B,CAAA,CAAAZ,EAAA,GAAAnB,CAAA,EACA,YAAA2gC,aAAA,CAAA5+B,EAAAZ,EAAAnB,GAAA6L,IAAA,CACA+0B,GACOA,EAAAt/B,QAAA,CAEP+uB,GAAA,CACA,qBAAArsB,kBAAAA,gBAAA,IAIY68B,QAAAA,EAAA3I,QAAA,CACAxC,EAAAzxB,EAAA,CAAA0H,GAAA,CAAAk1B,EAAAj/B,OAAA,EAEZ8zB,EAAAzxB,EAAA,CAAAC,IAAA,CAJAmsB,GAQA,EACA,CAgBAsQ,cAAY5+B,CAAA,CAAAZ,CAAA,CAAAnB,CAAA,CAAyB,KAAA8gC,WAAAA,CAAA,CAAAnyB,WAAAA,CAAA,OAAArM,UAAA,GAGrC,QAAa,CAAA46B,UAAA,GACb,SAAArE,EAAAkI,EAAA,MAAA9I,EAAA,mDAGA,IAAA+I,EAAAj/B,gBAAAA,EAAAC,IAAA,OAIA,CAAAg/B,GAAA,iBAAAryB,GAAA1E,KAAAsF,MAAA,GAAAZ,GACA,KAAAyI,kBAAa,wBACD,GAAAyhB,EAAWkI,EAAA,EACvB,IAAA9I,EACA,oFAAAtpB,EAAA,GACA,SAKA,KAAAkxB,aAAA,CAAA99B,EAAAZ,EAAAnB,GACA6L,IAAA,CAAAm0B,GAAA,CACA,GAAAA,IAAA,GAAAA,EAEA,MADA,KAAA5oB,kBAA+B,mBAAArV,EAAAC,IAAA,WAC/B,IAAAi2B,EAAA,uEAIA,EADApjB,IAAA,SAAAA,IAAA,CAAAosB,UAAA,EACAD,GAAA,CAAAF,EACAd,EAIOkB,SAyFPC,CAAA,EACA,IAAMC,EAAA,6DACN,MAAAvzB,EAAAjC,EAAA,EAAAu1B,GACA,OAAAA,EAAAt1B,IAAA,CACA9J,GAAc,CACd,QAAA8L,EAA+BhE,EAAA,EAAA9H,IAAAA,IAAA,GAAAA,CAAA,EAC/B,UAAAk2B,EAAAmJ,EAAA,CAEO,OAAAr/B,CACP,EACAoP,GAAA,CACO,UAAA8mB,EAAA,4BAAA9mB,EAAA,IAKP,CAFA,IAAc,IAAAtD,EAAWhE,EAAA,EAAAs3B,IAAAA,IAAA,GAAAA,CAAA,EACzB,UAAAlJ,EAAAmJ,EAAA,CAEA,OAAAD,CAAA,EA3GAL,EAAAd,EAAA7+B,GAHA,GAMA0K,IAAA,CAAAw1B,GAAA,CACA,GAAAA,IAAA,GAAAA,EAEA,MADA,KAAAjqB,kBAA+B,eAAArV,EAAAC,IAAA,WAC/B,IAAAi2B,EAAA,4DAGA,IAAArzB,EAAA5E,GAAAA,EAAA6E,UAAA,GAMO,MALP,CAAAm8B,GAAAp8B,GACA,KAAAu6B,uBAAA,CAAAv6B,EAAAy8B,GAGA,KAAAtD,SAAA,CAAAsD,EAAAlgC,GACOkgC,CACP,GACAx1B,IAAA,MAAAwkB,GAAA,CACA,GAAAA,aAAA4H,EACA,MAAA5H,CAAA,OAGA,KAAA1xB,gBAAA,CAAA0xB,EAAA,CACAxb,KAAA,CACWosB,WAAA,EACX,EACSv/B,kBAAA2uB,CACT,GACA,IAAA4H,EACA;QAAA,EAAA5H,EAAA,EACO,EA7CP,CAoDAuM,SAAA0E,CAAA,EACA,KAAAzF,cAAA,IACAyF,EAAAz1B,IAAA,CACAzI,IACA,KAAAy4B,cAAA,IACOz4B,GAEPitB,IACA,KAAAwL,cAAA,IACOxL,GAEP,CAMA2O,cAAA9F,CAAA,EACA,KAAAsD,UAAA,OAAAT,IAAA,CACA,KAAAS,UAAA,CAAA+E,IAAA,CAAArI,GAAArtB,IAAA,MAAAwkB,GAAA,CACO,qBAAArsB,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,8BAAAiO,EACD,GAEN,qBAAArsB,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,sBACA,CAMAof,gBAAA,CACA,IAAAC,EAAA,KAAA3F,SAAA,CAEA,OADA,KAAAA,SAAA,IACAnyB,OAAAC,IAAA,CAAA63B,GAAAxwB,GAAA,CAAA9N,GAAA,CACA,IAAAktB,EAAA4O,EAAA,CAAA97B,EAAAgX,KAAA,MACA,OACAkW,OAAAA,EACA4O,SAAAA,EACAyC,SAAAD,CAAA,CAAAt+B,EAAA,CAEA,GAOA,CE5qBA,SAAAw+B,EAAA7T,CAAA,CAAAyR,CAAA,EACA,IA8GA39B,EA9GAsrB,EAAA0U,GAAA9T,EAAAyR,GAGAzgC,EAAA,CACAkD,KAAAu9B,GAAAA,EAAA/7B,IAAA,CACAJ,MA0GA,CADAxB,EAAA29B,GAAAA,EAAA39B,OAAA,EAIAA,EAAAwgB,KAAA,mBAAAxgB,EAAAwgB,KAAA,CAAAxgB,OAAA,CACAA,EAAAwgB,KAAA,CAAAxgB,OAAA,CAEAA,EALA,kBACA,EAjGA,OARAsrB,EAAAjsB,MAAA,EACAnC,CAAAA,EAAAypB,UAAA,EAAA2E,OAAAA,CAAA,GAGA1mB,KAAAA,IAAA1H,EAAAkD,IAAA,EAAAlD,KAAAA,EAAAsE,KAAA,EACAtE,CAAAA,EAAAsE,KAAA,+BAGAtE,CAAA,CA0CA,SAAA+iC,GAAA/T,CAAA,CAAAyR,CAAA,EACA,OACAzgC,UAAA,CACK2nB,OAAA,CAAAkb,EAAA7T,EAAAyR,GAAA,CAEL,EAIA,SAAAqC,GACA9T,CAAA,CACAyR,CAAA,CACA,CAGA,IAAAhX,EAAAgX,EAAAhX,UAAA,EAAAgX,EAAArU,KAAA,KAEA4W,EAAAC,SAeAxC,CAAA,EACA,GAAAA,EAAA,CACA,oBAAAA,EAAAyC,WAAA,CACA,OAAAzC,EAAAyC,WAAA,CAGA,GAAAC,GAAA3nB,IAAA,CAAAilB,EAAA39B,OAAA,EACA,QACA,QAGA,GA1BA29B,GAGA,IACI,OAAAzR,EAAAvF,EAAAuZ,EACJ,OAAA3wB,EAAA,CACA,CAGA,SAGqD,IAAA8wB,GAAA,8BA4ErD,SAAAC,GACApU,CAAA,CACAhvB,CAAA,CACA0C,CAAA,CACA2gC,CAAA,CACAC,CAAA,CACA,KAAArgC,EAGA,MAAA8L,EAAAw0B,EAAA,EAAAvjC,IAAA,EAAAsjB,KAAA,CAGA,OAAAyf,GAAA/T,EAAAwU,EAAAlgB,KAAA,EAUA,MAAAvU,EAAA00B,EAAA,EAAAzjC,IAAA,GAAA+O,EAAA20B,EAAA,EAAA1jC,GAAA,CAGA,aAAAA,EACMiD,EAAA8/B,GAAA/T,EAAAhvB,OACN,CACA,IAAA0E,EAAAi/B,EAAAj/B,IAAA,MAAAqK,EAAuD00B,EAAA,EANvDzjC,GAM4E,2BAC5E8C,EAAA6gC,EAAA7gC,OAAA,IAAA4B,EAAA,IAAAi/B,EAAA7gC,OAAA,GAAA4B,CAAA,CACMzB,EAAA2gC,GAAA5U,EAAAlsB,EAAqBJ,EAAA2gC,GAC3B,GAAAxM,EAAAgN,EAAA,EAAA5gC,EAAAH,EACA,OACA,SAXA9C,GAYAiD,CAAAA,EAAAgB,IAAA,KAAAhB,EAAAgB,IAAA,wBAAA0/B,EAAAG,IAAA,KAGA7gC,CACA,OACA,GAAA8L,EAAAod,EAAA,EAAAnsB,GAEA+iC,GAAA/T,EAAAhvB,GAEA,GAAA+O,EAAAhE,EAAA,EAAA/K,IAAA,GAAA+O,EAAAud,EAAA,EAAAtsB,IAKIiD,EAAA8gC,SA5LJ/U,CAAA,CACAhvB,CAAA,CACA0C,CAAA,CACA4gC,CAAA,CACA,CACA,IAAArgC,EAAA,CACAjD,UAAA,CACA2nB,OAAA,CACA,CACAzkB,KAAA,GAAA6L,EAAAud,EAAA,EAAAtsB,GAAAA,EAAAgB,WAAA,CAAA0D,IAAA,CAAA4+B,EAAA,6BACAh/B,MAAA,aACYg/B,EAAsB,gCACzB,0BAAApa,EAAA8a,EAAA,EAAAhkC,GAAA,GAEJ,EAELwE,MAAA,CACKy/B,eAAA,GAAAjb,EAAAkb,EAAA,EAAAlkC,EACL,GAGA,GAAA0C,EAAA,CACA,IAAA0rB,EAAA0U,GAAA9T,EAAAtsB,EACA0rB,CAAAA,EAAAjsB,MAAA,EAEA,GAAAnC,SAAA,CAAA2nB,MAAA,IAAA8B,UAAA,EAAA2E,OAAAA,CAAA,EACA,QAGAnrB,CAAA,EA+JI+rB,EADJhvB,EACyB0C,EAAA4gC,GACzB,GAAAzM,EAAAsN,EAAA,EAAAlhC,EAAA,CACKmhC,UAAA,EACL,GACAnhC,IAYEA,EAAA2gC,GAAA5U,EAAAhvB,EAAgC0C,EAAU2gC,GAC1C,GAAAxM,EAAAgN,EAAA,EAAqB5gC,EAAA,GAAAjD,EAAA,EAAA0H,KAAAA,GACvB,GAAAmvB,EAAAsN,EAAA,EAAAlhC,EAAA,CACGmhC,UAAA,KAGHnhC,EA5BA,CAkCA,SAAA2gC,GACA5U,CAAA,CACAtF,CAAA,CACAhnB,CAAA,CACA2gC,CAAA,CACA,CACA,IAAApgC,EAAA,CACAH,QAAA4mB,CAAA,EAGA,GAAA2Z,GAAA3gC,EAAA,CACA,IAAA0rB,EAAA0U,GAAA9T,EAAAtsB,EACA0rB,CAAAA,EAAAjsB,MAAA,EACAc,CAAAA,EAAAjD,SAAmB,EACnB2nB,OAAA,EAAArjB,MAAAolB,EAAAD,WAAA,CAAA2E,OAAAA,CAAA,IACA,CACA,QAGAnrB,CAAA,CAGA,IAAAohC,GAAA3kC,EAAA,MClQA4kC,GAAA,iDAyBAC,GAAA7kC,EAAA,MC9BA8kC,GAAA,aAOA,OAAAC,GAG0B,OAAAxN,cAAA,MAAA5xB,EAAA,CAAAm/B,EAAA,CAKb1jC,QAAA,MAAA4D,IAAA,CAAA+/B,GAAAp/B,EAAA,CAYbrE,YAAA+F,CAAA,EAAA09B,GAAApjC,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OACA,KAAAyF,OAAA,EACAqZ,QAAA,GACAskB,IAAA,GACAvU,MAAA,GACAtM,QAAA,GACAzc,OAAA,GACAwa,IAAA,GACA,GAAA7a,CAAA,CACA,CAWAowB,WAAA,KAuBAuN,CAtBM,MAAA39B,OAAA,CAAAqZ,OAAA,EACN,GAAAnR,EAAAuD,CAAA,YAAAmyB,IAEM,KAAA59B,OAAA,CAAA29B,GAAA,EACN,GAAAz1B,EAAAuD,CAAA,SAkBAkyB,EAlBA,KAAA39B,OAAA,CAAA29B,GAAA,CAmBA,SAAA5hB,CAAA,MACA/B,EAAA,IAAAlE,EAAA,iBAAA6nB,EAAAA,EAAAE,kBAAA,CAAAl9B,KAAAA,CAAA,CAGA,iBAAAmV,GACAA,CAAAA,EAAA,CAAAA,EAAA,EAIA,IACAkE,EAAU+B,EAAA7f,KAAA,CAAA8d,MAAA,CACA,GAAAsjB,GAAAxX,EAAA,EAAgB/J,EAAA7f,KAAA,CAAA8d,MAAA,CAAAlE,GACpB,GAAAwnB,GAAAxX,EAAA,EAAA/J,EAAA7f,KAAA,CAAA4Z,EAAA,CACN,MAAAxK,EAAA,CACA0O,EAAA,YAGA,IAAAA,EAAA5e,MAAA,EAIA,GAAAu2B,EAAAx4B,EAAA,IAAAkD,aAAA,CACA,CACA+8B,SAAA,MAAArd,EAAApe,IAAA,GACO5B,QAAAie,CACP,EACA,CACA9d,MAAA6f,EAAA7f,KAAA,CACAyB,KAAAoe,EAAApe,IAAA,CACO2B,OAAAyc,EAAAzc,MAAA,EAEP,IAhDM,KAAAU,OAAA,CAAA6a,GAAA,EACN,GAAA3S,EAAAuD,CAAA,QAAAqyB,IAEM,KAAA99B,OAAA,CAAAopB,KAAA,EACN,GAAAlhB,EAAAuD,CAAA,UAAAsyB,IAEM,KAAA/9B,OAAA,CAAA8c,OAAA,EACN,GAAA5U,EAAAuD,CAAA,YAAAuyB,GAEE,EAgDF,SAAAJ,GAAA7hB,CAAA,EACA,IDtFA/f,ECsFAM,EAAA,CACA88B,SAAA,UACApqB,KAAA,CACAsO,UAAAvB,EAAA3b,IAAA,CACK2H,OAAA,SACL,EACA/L,MD3FAA,UADAA,EC4Fa+f,EAAQ/f,KAAA,ED3FrB,UAAAuhC,GAAAla,QAAA,CAAArnB,GAAAA,EAAA,MC4FAD,QAAA,GAAAg0B,EAAAkO,EAAA,EAAAliB,EAAA3b,IAAA,OAGA,GAAA2b,WAAAA,EAAA/f,KAAA,EACA,GAAA+f,CAAA,IAAAA,EAAA3b,IAAA,IAKA,MACA,CALA9D,EAAAP,OAAA,yBAAAg0B,EAAAkO,EAAA,EAAAliB,EAAA3b,IAAA,CAAAkE,KAAA,6BACMhI,EAAA0S,IAAA,CAAAsO,SAAA,CAAAvB,EAAA3b,IAAA,CAAAkE,KAAA,GAIN,EAGA,EAAAqtB,EAAAx4B,EAAA,IAAAkD,aAAA,CAAAC,EAAA,CACAqmB,MAAA5G,EAAA3b,IAAA,CACGpE,MAAA+f,EAAA/f,KAAA,EACH,CAMA,SAAA8hC,GAAA/hB,CAAA,EACA,GAAAA,EAAAtP,YAAA,EAEA,GAAAsP,EAAAlB,GAAA,CAAAM,sBAAA,CACA,OAE6C,IAAAhb,OAAAA,CAAA,CAAA2a,IAAAA,CAAA,CAAAQ,YAAAA,CAAA,CAAAM,KAAAA,CAAA,EAAAG,EAAAlB,GAAA,CAAAG,cAAA,KAG7C,GAAA2W,EAAAx4B,EAAA,IAAAkD,aAAA,CACA,CACA+8B,SAAA,MACApqB,KAAA,CACA7O,OAAAA,EACA2a,IAAAA,EACSQ,YAAAA,CACT,EACOnf,KAAA,MACP,EACA,CACA0e,IAAAkB,EAAAlB,GAAA,CACO8H,MAAA/G,CACP,GAGA,MACA,EAMA,SAAAmiB,GAAAhiB,CAAA,EAEA,CAAAA,EAAAtP,YAAA,EAIAsP,EAAAC,SAAA,CAAAlB,GAAA,CAAAI,KAAA,gBAAAa,SAAAA,EAAAC,SAAA,CAAA7b,MAAA,GAKI4b,EAAAQ,KAAA,CACJ,GAAAoV,EAAAx4B,EAAA,IAAAkD,aAAA,CACA,CACA+8B,SAAA,QACApqB,KAAA+M,EAAAC,SAAA,CACAhgB,MAAA,QACOG,KAAA,MACP,EACA,CACA6S,KAAA+M,EAAAQ,KAAA,CACOoG,MAAA5G,EAAA3b,IAAA,GAIP,GAAAuxB,EAAAx4B,EAAA,IAAAkD,aAAA,CACA,CACA+8B,SAAA,QACApqB,KAAA,CACA,GAAA+M,EAAAC,SAAA,CACSV,YAAAS,EAAAO,QAAA,CAAAzc,MAAA,EAEF1D,KAAA,MACP,EACA,CACAwmB,MAAA5G,EAAA3b,IAAA,CACOkc,SAAAP,EAAAO,QAAA,GAGP,CAMA,SAAA0hB,GAAejiB,CAAA,EACf,IAAAzc,EAAA,GAAA2yB,EAAA1yB,CAAA,IACA,IAAAsd,EAAAd,EAAAc,IAAA,CACAD,EAAAb,EAAkBa,EAAA,CAClB,IAAAshB,EAAA,CAAmB,EAAAV,GAAAW,EAAA,EAAQ7+B,EAAA8X,QAAA,CAAAC,IAAA,EAC3B,IAAA+mB,EAAiB,GAAAZ,GAAAW,EAAQ,EAAAthB,GAAA,IAAAwhB,EAAA,GAAAb,GAAAW,EAAA,EAAAvhB,EAIzBwhB,CAAAA,EAAA7Q,IAAA,EACA6Q,CAAAA,EAAAF,CAAA,EAKAA,EAAA1Q,QAAA,GAAA6Q,EAAA7Q,QAAA,EAAA0Q,EAAA5Q,IAAA,GAAA+Q,EAAA/Q,IAAA,EACA1Q,CAAAA,EAAAyhB,EAAA5Q,QAAA,EAEAyQ,EAAA1Q,QAAA,GAAA4Q,EAAA5Q,QAAA,EAAA0Q,EAAA5Q,IAAA,GAAA8Q,EAAA9Q,IAAA,EACAzQ,CAAAA,EAAAuhB,EAAA3Q,QAAA,EAGA,GAAAkE,EAAAx4B,EAAA,IAAAkD,aAAA,EACA+8B,SAAA,aACApqB,KAAA,CACA6N,KAAAA,EACKD,GAAAA,CACF,CACH,GAvLE8gB,GAAAxN,YAAA,GCjEF,IAAA5wB,GAAA,GAAA2yB,EAAA1yB,CAAA,IAyCA,SAAA++B,IAAA,CACA,GAAAhP,EACA,OAAAA,CAAA,CAIA,MAAA4C,EAAAqM,EAAA,EAAAj/B,GAAA8pB,KAAA,EACA,OAAAkG,EAAAhwB,GAAA8pB,KAAA,CAAAzP,IAAA,CAAAra,GAAA,CAGA,IAAA6X,EAAA7X,GAAA6X,QAAA,CACA,IAAAqnB,EAAAl/B,GAAA8pB,KAAA,CACA,GAAAjS,GAAA,mBAAAA,EAAAmS,aAAA,CACA,IACA,IAAAC,EAAApS,EAAAmS,aAAA,UACAC,CAAAA,EAAAC,MAAA,IACArS,EAAAsS,IAAA,CAAAC,WAAA,CAAAH,GACA,IAAAI,EAAAJ,EAAAI,aAAA,CACAA,GAAAA,EAAAP,KAAA,EACAoV,CAAAA,EAAA7U,EAAAP,KAAA,EAEMjS,EAAAsS,IAAA,CAAAG,WAAA,CAAAL,EACN,OAAAje,EAAA,CACA,qBAAQnN,kBAAWA,gBAAA,GACnB0xB,EAAAzxB,EAAA,CAAAC,IAAA,mFAAAiN,EACA,QAGAgkB,EAAAkP,EAAA7kB,IAAA,CAAAra,GAAA,CClEkC,IAAAm/B,GAAA,GAAAxM,EAAA1yB,CAAA,GASlC,OAAAm/B,WAAA7I,EAMA57B,YAAA+F,CAAA,EACAA,EAAAo1B,SAAA,CAAAp1B,EAAAo1B,SAAA,KACAp1B,EAAAo1B,SAAA,CAAAC,GAAA,CAAAr1B,EAAAo1B,SAAA,CAAAC,GAAA,GACA13B,KAAA,4BACA46B,SAAA,CACA,CACA56B,KAAA,sBACShD,QAAAi1B,CACT,EACA,CACAj1B,QAAAi1B,CAAA,EAEA,MAAA5vB,GAGAA,EAAAq5B,iBAAA,EAAAoF,GAAAtnB,QAAA,EACAsnB,GAAAtnB,QAAA,CAAA2C,gBAAA,yBACA,WAAA2kB,GAAAtnB,QAAA,CAAAwnB,eAAA,EACA,KAAAC,cAAA,EAEA,EACA,CAMA5H,mBAAW/9B,CAAkB,CAAAqC,CAAA,MJoF7B2sB,EAGAqU,EAGEpgC,EIzFF,OJmFA+rB,EInFA,KAAAkI,QAAA,CAAAlI,WAAA,CJsFAqU,EItFA,KAAAnM,QAAA,CAAAmM,gBAAA,CJyFEpgC,EAAAmgC,GAAApU,EIzFFhvB,EJwFA,GAAAqC,EAAAK,kBAAA,EAAAgF,KAAAA,EACiD27B,GACjD,GAAAxM,EAAAsN,EAAA,EAAAlhC,GACAA,EAAAF,KAAA,SI3FAV,GJ4FAA,EAAAG,QAAA,EACAS,CAAAA,EAAAT,QAAA,CAAAH,EAAAG,QAAA,EAEA,GAAAu3B,EAAA6E,EAAA,EAAA37B,EI/FA,CAMAk7B,iBACAr7B,CAAA,CACAC,EAAA,OACAV,CAAA,CACA,CACA,OAAA87B,SJ4FAnP,CAAA,CACAlsB,CAAA,CACAC,EAAA,OACAV,CAAA,CACAghC,CAAA,CACA,CAEA,IAAApgC,EAAA2gC,GAAA5U,EAAAlsB,EADA,GAAAT,EAAAK,kBAAA,EAAAgF,KAAAA,EACA27B,GAKA,OAJApgC,EAAAF,KAAA,CAAAA,EACAV,GAAAA,EAAAG,QAAA,EACAS,CAAAA,EAAAT,QAAA,CAAAH,EAAAG,QAAA,EAEA,GAAAu3B,EAAA6E,EAAA,EAAA37B,EAAA,EIxGA,KAAAi0B,QAAA,CAAAlI,WAAA,CAAAlsB,EAAAC,EAAAV,EAAA,KAAA60B,QAAA,CAAAmM,gBAAA,EAMApE,UAAAh8B,CAAA,CAAAZ,CAAA,EAOA,IAAAujC,EAAA,KAAA7G,kBAAA,CAAAyF,IAEAoB,GAIAA,EAAA7+B,OAAA,EACA6+B,EAAA7+B,OAAA,CAAAK,MAAA,EAEA,GAAAsxB,EAAAx4B,EAAA,IAAAkD,aAAA,CACA,CACA+8B,SAAA,UAAAl9B,gBAAAA,EAAAC,IAAA,yBACAV,SAAAS,EAAAT,QAAA,CACAO,MAAAE,EAAmBF,KAAA,CACVD,QAAA,GAAA+zB,EAAAiB,EAAA,EAAA70B,EACT,EACA,CACSA,MAAAA,CACT,GAIA,MAAAg8B,SAAA,CAAAh8B,EAAAZ,EAAA,CAMA0+B,cAAA99B,CAAA,CAAAZ,CAAA,CAAAnB,CAAA,EAEA,OADA+B,EAAA4iC,QAAA,CAAA5iC,EAAA4iC,QAAA,eACA,MAAA9E,aAAA,CAAA99B,EAAAZ,EAAAnB,EAAA,CAMAykC,gBAAA,KLlGAnM,EIsEA7W,EC4BAggB,EAAA,KAAAD,cAAA,GAGA,GAAAC,IAAAA,EAAAxgC,MAAA,EACA,qBAAA+C,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,wBACA,UAGA,MAAAowB,IAAA,EACA,qBAAA/3B,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,4CACA,QAE+E,oBAAA3H,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,qBAAA81B,GAG/E,IAAA9gB,EAAAka,EAA6C,KAAAkB,IAAA,MAAA/F,QAAA,EAA8CkD,ELvG3FJ,EAAAR,CAVAA,EKiH2F,KAAAtC,QAAA,CAAA+E,MAAA,EAAA1C,EAAA,KAAA0D,IAAA,GLvG3F,CAAAzD,IAAAA,CAAA,MAPM,CACN,CAAAt2B,KAAA,iBACA,CACAO,UAAA,GAAAyW,EAAAxW,EAAA,IACKoiC,iBK0GsFnD,CLzG3F,EACA,CACA,EK0GA,GAAM,CD9CNhgB,EC+CMkY,EAAAT,GD9CN2L,uBAAAl7B,OAAAxJ,SAAA,CAAAmY,QAAA,CAAAlY,IAAA,CAAA+E,IAAAA,GAAAG,SAAA,sBAAAH,GAAAG,SAAA,CAAAw/B,UAAA,CAMIA,GADJx/B,SAAA,CAAAw/B,UAAA,CAAAtlB,IAAA,CAAAra,GAAAG,SAAA,ECyCMqb,EDxCOc,GACb,GAAAsW,EAAAgN,EAAA,KAEA9V,KCqCMtO,EDrCN,CACAc,KAAAA,EACAzb,OAAA,OACAg/B,YAAA,OACKC,UAAA,EACL,GAAAp5B,IAAA,MAAAuW,GAAA,CACK,qBAAApe,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,CAAAA,EACL,EC+BA,OAAAjR,EAAA,CACA,qBAAAnN,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,CAAAjR,EACA,CACA,ECxHA,SAAA+zB,GAAAtX,CAAA,CAAA5C,CAAA,CAAAma,CAAA,CAAAC,CAAA,EACA,IAAA/X,EAAA,CACAO,SAAAA,EACAH,SAAAzC,EAEAqa,OAAA,IAWA,OARA7+B,KAAAA,IAAA2+B,GACA9X,CAAAA,EAAA8X,MAAA,CAAAA,CAAA,EAGA3+B,KAAAA,IAAA4+B,GACA/X,CAAAA,EAAA+X,KAAA,CAAAA,CAAA,EAGA/X,CAAA,CAIA,IAAAiY,GACA,sLAAAC,GAAA,gCAGA7V,GAAAzM,GAAA,KAAA4W,EAAAyL,GAAAjJ,IAAA,CAAApZ,GAGA,GAAA4W,EAAA,CAGA,GAH6DA,CAAA,KAAAA,IAAAA,CAAA,IAAAlM,OAAA,SAG7D,KAAA6X,EAAAD,GAAAlJ,IAAA,CAAAxC,CAAA,KAGA2L,IAEA3L,CAAA,IAAA2L,CAAA,IACA3L,CAAA,IAAA2L,CAAA,IACA3L,CAAA,IAAA2L,CAAA,IACA,IAIA,CAAAxa,EAAA4C,EAAA,CAAA6X,GAAA5L,CAAA,KAnDA,IAmDAA,CAAA,KAGA,OAAAqL,GAAAtX,EAAA5C,EAAA6O,CAAA,KAAAA,CAAA,IAAArzB,KAAAA,CAAA,CAAAqzB,CAAA,KAAAA,CAAA,IAAArzB,KAAAA,CAAA,IAWAk/B,GACA,sOAAAC,GAAA,gDAGAC,GAAA3iB,GAAA,KAAA4W,EAAA6L,GAAArJ,IAAA,CAAApZ,GAGA,GAAA4W,EAAA,CAEA,GADAA,CAAA,KAAAA,CAAA,IAAAlM,OAAA,eACA,KAAA6X,EAAAG,GAAAtJ,IAAA,CAAAxC,CAAA,KAGA2L,IAEA3L,CAAA,IAAAA,CAAA,YACAA,CAAA,IAAA2L,CAAA,IACA3L,CAAA,IAAA2L,CAAuB,IACvB3L,CAAA,OACA,KAGAjM,EAAAiM,CAAA,IACA7O,EAAA6O,CAAA,KAvFA,IA0FA,MAHA,CAAA7O,EAAA4C,EAAA,CAAA6X,GAAAza,EAAA4C,GAGAsX,GAAAtX,EAAA5C,EAAA6O,CAAA,KAAAA,CAAA,IAAArzB,KAAAA,CAAA,CAAAqzB,CAAA,KAAAA,CAAA,IAAArzB,KAAAA,CAAA,IAQAq/B,GAAA,gHAGAC,GAAA7iB,GAAA,KAAA4W,EAAAgM,GAAAxJ,IAAA,CAAApZ,GAGA,OAAA4W,EACAqL,GAAArL,CAAA,IAAAA,CAAA,KAzGA,IAyGA,CAAAA,CAAA,IAAAA,CAAA,KAAAA,CAAA,IAAArzB,KAAAA,CAAA,EACAA,KAAAA,CAAA,EAyB0Cu/B,GAAA,GAAAxd,EAAAyd,EAAA,KAF1C,CAtEA,CAtDA,GAsDAtW,GAAA,CAoCA,CAzFA,GAyFAkW,GAAA,CAaA,CAtGA,GAsGAE,GAAA,CAqBA,EAyBAL,GAAA,CAAAza,EAAA4C,IAAA,CACA,IAAAqY,EAAAjb,KAAAA,EAAA2C,OAAA,qBAAAuY,EAAAlb,KAAAA,EAAA2C,OAAA,yBAGA,OAAAsY,GAAAC,EACA,CACAlb,KAAAA,EAAA2C,OAAA,MAAA3C,EAAA7Q,KAAA,KAAgD,IAhKhD,GAgKyD,CACzD8rB,EAAA,oBAAArY,EAAA,0BAAAA,EAAA,EACA,CACA,CAAA5C,EAAA4C,EAAA,EAGAuY,GAAA3nC,EAAA,MCtKA,IAAA4nC,GAAA,EA8BA,SAAAC,GACAzoB,CAAA,CAAA/X,EAGA,GACAygC,CAAA,CACA,CAQA,sBAAA1oB,EACA,OAAAA,CAAA,CAGA,IAGA,IAAA2oB,EAAA3oB,EAAA4oB,kBAAA,CACA,GAAAD,EACA,OAAAA,CAAA,CAIA,MAAAve,EAAAsP,EAAA,EAAA1Z,GACA,OAAAA,CACI,CACJ,MAAAzM,EAAA,CAIA,OAAAyM,CAAA,CAIA,IAAA6oB,EAAA,eAAAxgC,EAAAmhB,MAAAjnB,SAAA,CAAAgK,KAAA,CAAA/J,IAAA,CAAA+iB,WAGA,IACAmjB,GAAA,mBAAAA,GACAA,EAAAhgC,KAAA,MAAA6c,WAEA,IAAAujB,EAAAzgC,EAAAgL,GAAA,IAAAo1B,GAAAM,EAAA9gC,IAOM,OAAA+X,EAAAtX,KAAA,MAAAogC,EACN,OAAAnH,EAAA,CAqBA,MAzFA6G,IAAA,EACA/yB,WAAA,KACG+yB,IAAA,CACH,GAoEA,GAAAD,GAAAS,EAAA,MACA5mC,EAAA2I,iBAAA,KACY9C,EAAAghB,SAAA,GACA,GAAA8O,EAAAgN,EAAA,EAAqB5gC,EAAAyE,KAAAA,EAAAA,KAAAA,GACjC,GAAAmvB,EAAAsN,EAAA,EAAAlhC,EAAA8D,EAAAghB,SAAA,GAGA9kB,EAAAuB,KAAA,EACA,GAAAvB,EAAAuB,KAAA,CACA6f,UAAAld,CAAA,EAGSlE,IAGF,GAAAokC,GAAAU,EAAA,EAAAtH,EAAA,GAGPA,CAAA,CAEA,EAIA,IACA,QAAA1T,KAAAjO,EACAjU,OAAAxJ,SAAA,CAAA2f,cAAA,CAAA1f,IAAA,CAAAwd,EAAAiO,IACA4a,CAAAA,CAAA,CAAA5a,EAAA,CAAAjO,CAAA,CAAAiO,EAAA,CAGA,OAAA9nB,EAAA,EAEqB,GAAAikB,EAAA8e,EAAA,EAAAL,EAAA7oB,GAEK,GAAAoK,EAAAf,EAAA,EAAArJ,EAAA,qBAAA6oB,GAI1B,IAEAM,OADAC,wBAAA,CAAAP,EAAA,QACA1b,YAAA,EACAphB,OAAAkhB,cAAA,CAAA4b,EAAA,QACAla,IAAAA,IACS3O,EAAApa,IAAA,EAGD,OAAAO,EAAA,EAGR,OAAA0iC,CAAA,CCtIA,IAAAQ,GAAA,CACA,cACA,SACA,OACA,mBACA,iBACA,oBACA,kBACA,cACA,aACA,qBACA,cACA,aACA,iBACA,eACA,kBACA,cACA,cACA,eACA,qBACA,SACA,YACA,eACA,gBACA,YACA,kBACA,SACA,iBACA,4BACA,8BAIAC,GAG0B,OAAAnR,cAAA,MAAA5xB,EAAA,YAKbvE,QAAA,MAAA4D,IAAA,CAAA0jC,GAAA/iC,EAAA,CASbrE,YAAA+F,CAAA,EAAAqhC,GAAA/mC,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OACA,KAAA41B,QAAA,EACAxV,eAAA,GACA2mB,YAAA,GACAC,sBAAA,GACAzH,YAAA,GACAtsB,WAAA,GACA,GAAAxN,CAAA,CACA,CAOAowB,WAAA,CAAgC,IAAA9wB,EAAA,GAAA2yB,EAAA1yB,CAAA,GAG1B,MAAA4wB,QAAA,CAAA3iB,UAAI,EACV,GAAA2U,EAAA7I,EAAA,EAAAha,EAAA,aAAAkiC,IAGM,KAAArR,QAAA,CAAA2J,WAAI,EACV,GAAA3X,EAAA7I,EAAA,EAAAha,EAAA,cAAAkiC,IAGM,KAAArR,QAAA,CAAAoR,qBAAI,EACV,GAAApf,EAAA7I,EAAA,EAAAha,EAAA,wBAAAmiC,IAGM,KAAAtR,QAAA,CAAAxV,cAAI,qBAAArb,GACV,GAAA6iB,EAAA7I,EAAA,EAAAqB,eAAArgB,SAAA,QAAAonC,IAGA,IAAAC,EAAA,KAAAxR,QAAA,CAAAmR,WAAA,CACAK,GAEAL,CADA/f,MAAApN,OAAA,CAAAwtB,GAAAA,EAAAP,EAAA,EACAl7B,OAAA,CAAA07B,GAEE,EAIF,SAAAJ,GAAA/lB,CAAA,EACA,mBAAArb,CAAA,EACA,IAAAyhC,EAAkBzhC,CAAA,IAQlB,OAPAA,CAAA,IAAAogC,GAAAqB,EAAA,CACA7gB,UAAgB,CAChBhS,KAAA,CAAA4Y,SAAA,GAAAlF,EAAAjF,EAAA,EAAAhC,EAAA,EACAwF,QAAA,GACO9kB,KAAA,YACF,CACL,GACAsf,EAAAhb,KAAA,MAAAL,EACA,EAIA,SAAAqhC,GAAAhmB,CAAA,EACA,gBAAAriB,CAAA,EACM,OAAIqiB,EAAAhb,KAAA,OACV+/B,GAAApnC,EAAA,CACA4nB,UAAA,CACAhS,KAAA,CACA4Y,SAAqB,wBACVrN,QAAA,GAAAmI,EAAAjF,EAAA,EAAAhC,EACX,EACAwF,QAAA,GACS9kB,KAAA,YACF,CACP,GACA,CACA,EAIA,SAAAulC,GAAA/lB,CAAA,EACA,mBAAAvb,CAAA,EACA,IAAAya,EAAA,KA6BA,MA1BAinB,CAHA,sDAGA57B,OAAA,CAAA67B,GAAA,CACAA,KAAgBlnB,GAAA,mBAAAA,CAAA,CAAAknB,EAAI,EACpB,GAAA5f,EAAA7I,EAAA,EAAAuB,EAAAknB,EAAA,SAAAtmB,CAAA,EACA,IAAAumB,EAAA,CACAhhB,UAAA,CACAhS,KAAA,CACA4Y,SAAyBma,EACVxnB,QAAA,GAAAmI,EAAAjF,EAAA,EAAAhC,EACf,EACAwF,QAAA,GACa9kB,KAAA,YACb,GAIA8lC,EAAA,GAAA9f,EAAAsP,EAAA,EAAAhW,GAMS,OALTwmB,GACAD,CAAAA,EAAAhhB,SAAA,CAAAhS,IAAA,CAAAuL,OAAA,IAAAmI,EAAAjF,EAAA,EAAAwkB,EAAA,EAISzB,GAAA/kB,EAAAumB,EACT,EACK,GAGLrmB,EAAAlb,KAAA,MAAAL,EACA,EAIA,SAAAwhC,GAAiB5nB,CAAA,EACjB,IAAA1a,EAAA,GAAA2yB,EAAA1yB,CAAA,IAAAwa,EAAAza,CAAA,CAAA0a,EAAA,EAAA1a,CAAA,CAAA0a,EAAA,CAAA1f,SAAA,CAGAyf,GAAAA,EAAAE,cAAA,EAAAF,EAAAE,cAAA,uBAGM,GAAAkI,EAAA7I,EAAA,EAAAS,EAAA,4BAAA0B,CAAA,CAGN,CACA,gBAEAymB,CAAA,CACAnqB,CAAA,CACA/X,CAAA,CACA,CACA,IACA,mBAAA+X,EAAAoqB,WAAA,EAMApqB,CAAAA,EAAAoqB,WAAA,CAAA3B,GAAAzoB,EAAAoqB,WAAA,EACAnhB,UAAA,CACAhS,KAAA,CACA4Y,SAAyB,cACzBrN,QAAA,GAAAmI,EAAAjF,EAAA,EAAA1F,GACeiC,OAAAA,CACf,EACAiH,QAAA,GACa9kB,KAAA,YACF,CACX,GAEA,OAAAklB,EAAA,CACA,CAGA,OAAA5F,EAAAhb,KAAA,OACAyhC,EACA1B,GAAAzoB,EAAA,CACAiJ,UAAA,CACAhS,KAAA,CACA4Y,SAAuB,mBACvBrN,QAAA,GAAAmI,EAAAjF,EAAA,EAAA1F,GACaiC,OAAAA,CACb,EACAiH,QAAA,GACW9kB,KAAA,YACF,CACT,GACA6D,EACA,CACG,IAGH,GAAAmiB,EAAA7I,EAAA,EACAS,EACA,sBACA,SACAS,CAAA,CACA,CACA,gBAEA0nB,CAAA,CACAnqB,CAAA,CACA/X,CAAA,CACA,CAmBA,IACA,IAAAoiC,EAAAC,GAAAA,EAAA1B,kBAAA,CACAyB,GACA5nB,EAAAjgB,IAAA,MAAA2nC,EAAAE,EAAApiC,EAEA,OAAAsL,EAAA,CAEA,CACA,OAAAkP,EAAAjgB,IAAA,MAAA2nC,EATAnqB,EASA/X,EACK,CACL,GACA,CA5KEqhC,GAAAnR,YAAA,ECtFF,OAAAoS,GAG0B,OAAApS,cAAA,MAAA5xB,EAAA,kBAKbvE,QAAA,MAAA4D,IAAA,CAAA2kC,GAAAhkC,EAAA,CAUbsO,SAAA,MAAA21B,YAAA,EACArlB,QAAAslB,GACAhlB,qBAAAilB,EAAA,EAIAxoC,YAAA+F,CAAA,EAAAsiC,GAAAhoC,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAAA+nC,GAAAhoC,SAAA,CAAAsS,OAAA,CAAArS,IAAA,OACA,KAAA41B,QAAA,EACAjT,QAAA,GACAM,qBAAA,GACA,GAAAxd,CAAA,CAEA,CAIAowB,WAAA,CACArR,MAAA2jB,eAAA,QAAA1iC,EAAA,KAAAmwB,QAAA,CAKA,QAAA7yB,KAAA0C,EAAA,CACA,IAyKA7D,EAzKAwmC,EAAA,KAAAJ,YAAA,CAAAjlC,EAAA,CACAqlC,GAAA3iC,CAAA,CAAA1C,EAAA,GAwKAnB,EAvKAmB,EAwKA,qBAAAa,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,6BAAA3J,EAAA,GAvKAwmC,IACA,KAAAJ,YAAA,CAAAjlC,EAAA,CAAAqD,KAAAA,EAEA,CACE,EAIF,SAAE6hC,IAAA,CACF,GAAAt6B,EAAAuD,CAAA,EACA,QACA,IACA,IAAA/K,EAAAunB,EAAAqU,EAAA,CAAAsG,KACA,IAAAliC,EAAA1C,cAAA,CAAAskC,IACA,MACA,CACA,GAAU,CAAAnlB,IAAAA,CAAA,CAAArC,IAAAA,CAAA,CAAAsC,KAAAA,CAAA,CAAmBC,OAAAA,CAAA,CAAAd,MAAAA,CAAA,EAAAvN,EAC7B,GAAA6zB,CF1DAtC,CAAAA,GAAA,IE0DAhkB,CAAAA,CAAAA,IAAAA,EAAApB,sBAAA,OA+FApf,EAAA4B,EA3FA,IA8FAmlC,EA9FA5mC,EACAqgB,KAAA5b,IAAA4b,GAAA,GAAAvU,EAAAoM,EAAA,EAAA+I,IA0FAphB,EAAA,GAAAiM,EAAAw0B,EAAA,EAzFArf,GAyFAA,EAAAphB,OAAA,CAzFAohB,CAyFA,CAAAxf,EAAA,SAGAmlC,EAAA/mC,EAAAmf,KAAA,CAPA,+GASAvd,EAAAmlC,CAAA,IACA/mC,EAAA+mC,CAAA,KAcAC,GAXA,CACA9pC,UAAA,CACA2nB,OAAA,CACA,CACAzkB,KAAAwB,EACSJ,MAAAxB,CACT,EACK,CACL,EA1GA+e,EAAAsC,EAAAC,IACA0lB,GACA1G,GAAApU,EAAA1L,GAAAY,EAAAxc,KAAAA,EAAA27B,EAAA,IACAxhB,EACAsC,EACAC,EAAA,CAEAnhB,EAAAF,KAAA,SAGKgnC,GAAAtiC,EAAA6b,EAAArgB,EAAA,WAfL,EAiBA,CAIA,SAAEumC,IAAyB,CAC3B,GAAAv6B,EAAAuD,CAAA,EACA,qBACA,IACA,IAAA/K,EAAAunB,EAAAqU,EAAA,CAAAsG,KACA,IAAAliC,EAAA1C,cAAA,CAAAskC,IACA,MACA,KAAA/lB,EAAAjR,EAIA,IAGA,WAAAA,EACAiR,EAAAjR,EAAAkf,MAAA,CAOA,WAAAlf,GAAA,WAAAA,EAAAsa,MAAA,EACArJ,CAAAA,EAAAjR,EAAAsa,MAAA,CAAA4E,MAAA,CAEA,OAAAtsB,EAAA,CACA,CAGA,GAAA2kC,GF7GA,GE6GAtmB,GAAAA,EAAApB,sBAAA,CACA,SAGA,IAAAjf,EAAA,GAAA8L,EAAAmvB,EAAA,EAAA5a,GAmBA,CACAtjB,UAAA,CACA2nB,OAAA,CACA,CACAzkB,KAAA,qBAESoB,MAAA,oDAAAqS,OAxBsB2M,GAwBtB,GAEJ,CAEL,EA5B+B8f,GAAApU,EAAA1L,EAAA5b,KAAAA,EAAA27B,EAAA,IAE/BpgC,EAAAF,KAAA,SAGAgnC,GAAAtiC,EAAA6b,EAAArgB,EAAA,uBAEA,EACA,CAuDA,SAAA6mC,GAAA7mC,CAAA,CAAA4e,CAAA,CAAAsC,CAAA,CAAAC,CAAA,EAEA,IAAA/R,EAAApP,EAAAjD,SAAA,CAAAiD,EAAAjD,SAAA,KAEAgqC,EAAA33B,EAAAsV,MAAA,CAAAtV,EAAAsV,MAAA,KAEAsiB,EAAAD,CAAA,IAAAA,CAAA,QAEAE,EAAAD,EAAAxgB,UAAA,CAAAwgB,EAAAxgB,UAAA,KACA0gB,EAAAD,EAAA9b,MAAA,CAAA8b,EAAA9b,MAAA,KAGAkY,EAAA7gB,MAAA4X,SAAAjZ,EAAA,KAAA1c,KAAAA,EAAA0c,CAAA,CACAiiB,EAAA5gB,MAAiB4X,SAAAlZ,EAAA,KAAQzc,KAAAA,EAAAyc,CAAA,CAA+C2K,EAAA,GAAA/f,EAAAoM,EAAA,EAAA0G,IAAAA,EAAA1f,MAAA,GAAA0f,EAAA,GAAAwiB,GAAA+F,EAAA,IAcxE,OAVA,IAAAD,EAAAhoC,MAAA,EACAgoC,EAAA5qC,IAAA,EACA+mC,MAAAA,EACAxX,SAAAA,EACAH,SAAA,IACA4X,OAAA,GACKF,OAAAA,CACL,GAGApjC,CAAA,CAOA,SAAE8mC,GAAAtiC,CAAA,CAAA6b,CAAqB,CAAArgB,CAAA,CAAAC,CAAA,EACvB,GAAA2zB,EAAAsN,EAAA,EAAAlhC,EAAA,CACA+kB,QAAA,GACG9kB,KAAAA,CACH,GACAuE,EAAAzE,YAAA,CAAAC,EAAA,CACGL,kBAAA0gB,CACH,GAGA,SAAAqmB,IAAY,CACZ,IAAAliC,EAAA,GAAAixB,EAAAx4B,EAAA,IACAe,EAAAwG,EAAAxF,SAAA,GACA8E,EAAA,GAAA9F,EAAAuC,UAAA,KACAwrB,YAAA,OACAqU,iBAAA,EACA,EACA,OAAA57B,EAAAV,EAAAioB,WAAA,CAAAjoB,EAAAs8B,gBAAA,EAvLEgG,GAAApS,YAAA,EC9CF,OAAAoT,GAG0B,OAAApT,cAAA,MAAA5xB,EAAA,gBAKZvE,QAAA,MAAA4D,IAAA,CAAA2lC,GAAAhlC,EAAA,CAgBdrE,YAAA+F,EAAA,IAAAsjC,GAAAhpC,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OACA,KAAAgpC,IAAA,CAAAvjC,EAAA1C,GAAA,EA7BA,QA8BA,KAAAkmC,MAAA,CAAAxjC,EAAAyjC,KAAA,EA9BA,CA8BA,CAMArT,WAAA,CACA,IAAAl2B,EAAA,GAAAy3B,EAAAx4B,EAAA,IAAA+B,SAAA,GACAhB,GAGA,GAAAw3B,EAAiBhR,CAAA,GAAaxkB,EAAAZ,IAAA,CAC9B,IAAA/C,EAAA,GAAAo5B,EAAAx4B,EAAA,IAAA6E,cAAA,CAAAslC,IACK,OAAA/qC,EAAAmrC,SASLnc,CAAA,CACAjqB,CAAA,CACAmmC,CAAA,CACAvnC,CAAA,CACAZ,CAAA,CACA,CACA,IAAAY,EAAAjD,SAAA,GAAAiD,EAAAjD,SAAA,CAAA2nB,MAAA,GAAAtlB,GAAA,IAAA0M,EAAAmU,EAAA,EAAA7gB,EAAAO,iBAAA,CAAAkjB,OACA,OAAA7iB,CACA,CACA,IAAAynC,EAAAC,SAQAA,EACArc,CAAA,CACAkc,CAAA,CACAlnB,CAAA,CACAjf,CAAA,CACA+nB,EAAA,GACA,CACA,OAAArd,EAAAmU,EAAA,EAAAI,CAAA,CAAAjf,EAAA,CAAAyhB,QAAAsG,EAAAjqB,MAAA,IAAAqoC,EACA,OAAApe,CACA,CACA,IAAApsB,EAAA6iC,EAAAvU,EAAAhL,CAAA,CAAAjf,EAAA,EACA,OAAAsmC,EAAArc,EAAAkc,EAAAlnB,CAAA,CAAAjf,EAAA,CAAAA,EAAA,CAAArE,KAAAosB,EAAA,GAnBAkC,EAAAkc,EAAAnoC,EAAAO,iBAAA,CAAAyB,GAEA,OADApB,EAAAjD,SAAA,CAAA2nB,MAAA,KAAA+iB,KAAAznC,EAAAjD,SAAA,CAAA2nB,MAAA,EACA1kB,CAAA,EApBKhC,EAAAuC,UAAA,GAAAwrB,WAAA,CAAA1vB,EAAAgrC,IAAA,CAAAhrC,EAAAirC,MAAA,CAAAtnC,EAAAZ,GAAAY,CAAA,EAEH,EAAAonC,GAAApT,YAAA,EC9CF,OAAA2T,GAAA5pC,aAAA,CAAA4pC,GAAAvpC,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAG0B,OAAA21B,cAAA,MAAA5xB,EAAA,UAKbvE,QAAA,MAAA4D,IAAA,CAAAkmC,GAAAvlC,EAAA,CAWb8xB,UAAA5uB,CAAA,CAAAnI,CAAA,EACA,IAAAyqC,EAAAC,GAAA,CACA,IAuBAC,EAkBAC,EAAAC,EA8BAC,EAAAC,EAvEA7rC,EAAAc,IAAA2E,cAAA,CAAA6lC,IACA,GAAAtrC,EAAA,CAEA,IACA,GAoBA,CADAyrC,EAnBAzrC,EAAA8rC,cAAA,IAqCAJ,EAAAF,EAAAhoC,OAAA,CAAAmoC,EAAAF,EAAAjoC,OAAA,CAIA,IAAAmoC,CAAA,GAKAD,CAAAA,CAAAA,GAAAC,CAAA,QAAAA,CAAA,GAIAD,IAAAC,GAIAI,GAtDAP,EAwBAC,IAkCAO,GA1DAR,EAwBAC,KA2CAG,EAAAK,GAvCAR,GAuCAI,EAAAI,GAnEAT,GAsEAI,GAAAC,GAIAD,EAAAhoC,IAAA,GAAAioC,EAAAjoC,IAAA,EAAAgoC,EAAA5mC,KAAA,GAAA6mC,EAAA7mC,KAAA,EAIA+mC,GA9EAP,EA4BAC,IAsDAO,GAlFAR,EA4BAC,KA1BA,MADA,qBAAA7lC,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,yEACA,KAEA,MAAAH,EAAA,CACA,CAGA,OAAA3F,EAAA8rC,cAAA,CAAAN,CACA,QACAA,CAAA,CAGAD,CAAAA,EAAAxlC,EAAA,MAAAX,IAAA,CACA6D,EAAAsiC,EACE,EA2EF,SAAAS,GAAAR,CAAA,CAAAC,CAAA,EACA,IAAAS,EAAAC,GAAAX,GAAAY,EAAAD,GAAAV,GAIA,IAAAS,GAAA,CAAAE,EACA,SAIA,GAAAF,GAAA,CAAAE,GAAA,CAAAF,GAAAE,GAQAA,EAAAvpC,MAAA,GAAAqpC,EAAArpC,MAAA,CAPA,SAYA,QAAAqb,EAAA,EAAAA,EAAAkuB,EAAAvpC,MAAA,CAAAqb,IAAA,CACA,IAAAmuB,EAAAD,CAAA,CAAAluB,EAAA,CAAAouB,EAAAJ,CAAA,CAAAhuB,EAAA,CAGA,GACAmuB,EAAA7c,QAAA,GAAA8c,EAAA9c,QAAA,EACA6c,EAAAtF,MAAA,GAAAuF,EAAAvF,MAAA,EACAsF,EAAArF,KAAA,GAAAsF,EAAAtF,KAAA,EACAqF,EAAAhd,QAAA,GAAAid,EAAAjd,QAAA,CAEA,QACA,CAGA,SAIA,SAAA0c,GAAAP,CAAA,CAAAC,CAAA,EACA,IAAAc,EAAAf,EAAA3gC,WAAA,CAAA2hC,EAAAf,EAAA5gC,WAAA,CAIA,IAAA0hC,GAAA,CAAAC,EACA,SAIA,OAAAA,GAAA,CAAAD,GAAAC,EACA,SAOA,IACI,UAAAz2B,IAAA,OAAAy2B,EAAAz2B,IAAA,KACJ,OAAApQ,EAAA,CACA,QACA,EAIA,SAAAsmC,GAAAtoC,CAAA,EACA,OAAAA,EAAAjD,SAAA,EAAAiD,EAAAjD,SAAA,CAAA2nB,MAAA,EAAA1kB,EAAAjD,SAAA,CAAA2nB,MAAA,IAIA,SAAA8jB,GAAAxoC,CAAA,MAAAjD,EAAAiD,EAAAjD,SAAA,CAGA,GAAAA,EACA,IAEM,OAAAA,EAAA2nB,MAAA,IAAA8B,UAAA,CAAA2E,MAAA,CACN,MAAAnpB,EAAA,CAEA,CACA,CA7JE2lC,GAAA3T,YAAA,GCzC0B,IAAA8U,GAAA,GAAA/S,EAAA1yB,CAAA,GAI5B,OAAA0lC,GAAAhrC,aAAA,CAAAgrC,GAAA3qC,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OAG0B,OAAA21B,cAAA,MAAA5xB,EAAA,eAKbvE,QAAA,MAAA4D,IAAA,CAAAsnC,GAAA3mC,EAAA,CAMb8xB,WAAI,CACJ,GAAAsB,EAAuBhR,CAAA,MACvB,MAAAiR,EAAAx4B,EAAA,IAAA6E,cAAA,CAAAinC,IAAA,CAEA,IAAAD,GAAAvlC,SAAA,GAAAulC,GAAA5tB,QAAA,GAAA4tB,GAAA7tB,QAAA,CACA,OAAAjb,CAAA,CAIA,IAAA4e,EAAgB,EAAAgH,OAAa,EAAA5lB,EAAA4lB,OAAM,CAAAhH,GAAA,EAAAkqB,GAAA5tB,QAAA,EAAA4tB,GAAA5tB,QAAA,CAAAC,IAAA,CACnC,IAAgB6tB,SAAAA,CAAA,EAAYF,GAAQ7tB,QAAA,MAAA3X,UAAAA,CAAA,EAAAwlC,GAAAvlC,SAAA,KAGpC,IAAAyzB,EAAA,CACA,GAAAh3B,EAAA4lB,OAAA,EAA4B5lB,EAAA4lB,OAAA,CAAAoR,OAAmB,CAC/C,GAAAgS,GAAA,CAAAC,QAA6BD,CAAA,EAC7B,GAAA1lC,GAAA,cAAAA,CAAA,GAC0CsiB,EAAA,IAAAhH,GAAA,CAAAA,IAAAA,CAAA,EAAAoY,QAAAA,CAAA,EAG1C,UAAAh3B,CAAA,CAAA4lB,QAAAA,CAAA,CACA,QACK5lB,CACL,EACE,EGlCF,SAAAkpC,GACAplC,CAAA,CACAqlC,CAAW,CACX1Q,EAAA2Q,SFNA7B,CAAA,MAAA9O,EAAA,GAaA,SAAA4Q,EAAAC,CAAA,EACA,OAAA7Q,EAAAzR,MAAA,CAAAyR,EAAA7M,OAAA,CAAA0d,GAAA,MAwEA,OACAC,EAAA9Q,EACAroB,IA7DA,SAAAo5B,CAAA,EACA,IAxBAjC,CAAAA,KAAA9iC,IAAA8iC,GAAA9O,EAAAv5B,MAAA,CAAAqoC,CAAA,EAyBA,SAAAzQ,EAAAkI,EAAA,MAAA9I,EAAA,yDAIA,IAAAoT,EAAAE,IAcA,OAbA,KAAA/Q,EAAA7M,OAAA,CAAA0d,IACA7Q,EAAAn8B,IAAA,CAAAgtC,GAEAA,EACAx/B,IAAA,KAAAu/B,EAAAC,IAIAx/B,IAAA,UACAu/B,EAAAC,GAAAx/B,IAAA,WAEA,IAEAw/B,CAAA,EA0CAG,MA9BA,SAAelO,CAAA,EACf,WAAAzE,EAAAvtB,EAAA,EAAAC,EAAAC,IAAA,KAAAigC,EAAAjR,EAAAv5B,MAAA,CAGA,IAAAwqC,EACA,OAAAlgC,EAAA,IAIA,IAAAmgC,EAAAr4B,WAAA,KACAiqB,GAAAA,EAAA,GACA/xB,EAAA,GACO,EAAA+xB,GAIP9C,EAAazuB,OAAA,CAAA2gB,GAAA,CACb,GAAAmM,EAAA6E,EAAA,EAAAhR,GAAA7gB,IAAA,MACA,EAAA4/B,IACAz3B,aAAA03B,GACAngC,EAAA,IAEO,EAAAC,EACF,EACL,GAOA,GEpFA3F,EAAA8lC,UAAA,EAZA,GAYA,CACA,KAAAC,EAAA,GAEA,IAAAvO,EAAA,GAAA7C,EAAAgR,KAAA,CAAAlO,GA4DA,OACAiE,KA1DA,SAAArI,CAAA,MAAA2S,EAAA,GAcA,GAVA5S,EAAAC,EAAA,CAAAxM,EAAqC1qB,IAAA,CACrC,IAAU8pC,EnB2FVrR,CAAA,CmB3FuBz4B,EnB2FvB,CmB1FA+pC,CDSA,SAAAC,CAAA,CAAA/M,CAAA,CAAA7d,EAAApU,KAAAoU,GAAA,IACA,MAAA6qB,CAPAD,CAAA,CAOA/M,EAPA,EAAA+M,EAAAE,GAAA,KAOA9qB,CAAA,GCVAwqB,EAAAE,GACQjmC,EAAAuR,kBAAA,qBAAA00B,GAERD,EAAAxtC,IAAA,CAAAquB,EACK,GAILmf,IAAAA,EAAa5qC,MAAA,CACb,SAAA43B,EAAA6E,EAAA,IAE6C,IAAAyO,EAAArT,EAAAI,CAAA,IAAA2S,GAIvCO,EAAmB,IACzBnT,EAAAkT,EAA2C,CAAA7b,EAAAtuB,IAAA,CACpC6D,EAAAuR,kBAAA,CAAAiZ,EnByEPoK,CAAA,CmBzEOz4B,EnByEP,CmBxEA,IAGAqqC,EAAoB,IACpBnB,EAAA,CAAAzpB,KAAAkY,EAAAwS,EAAAtmC,EAAA0zB,WAAA,IAAA1tB,IAAA,CACAsW,GAAA,CAEA3b,KAAAA,IAAA2b,EAAAmqB,UAAA,EAAAnqB,CAAAA,EAAAmqB,UAAA,MAA6EnqB,EAAAmqB,UAAA,QAC7E,qBAAAtoC,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,sCAAAie,EAAAmqB,UAAA,mBAGSV,EAAAW,SDXTP,CAAI,CACJ,CAAAM,WAAAA,CAAA,CAAAvT,QAAAA,CAAA,EACA3X,EAAApU,KAAAoU,GAAA,GACA,CACA,IAAAorB,EAAA,CACA,GAAAR,CAAA,EAKAS,EAAA1T,GAAAA,CAAA,yBAAA2T,EAAA3T,GAAAA,CAAA,gBAGA,GAAA0T,EAaA,QAAAnD,KAAAmD,EAAApyB,IAAA,GAAAF,KAAA,OACA,IAAAwyB,EAAAC,EAAA,CAAAtD,EAAAnvB,KAAA,QACA,IAAA0yB,EAAA1Q,SAAAwQ,EAAA,IACAG,EAAA,OAAAD,GAAA,GAAAA,CAAA,MACA,GAAAD,EAGA,QAAA3N,KAAA2N,EAAAzyB,KAAA,MACAqyB,CAAA,CAAAvN,EAAA,CAAA7d,EAAA0rB,OAHQN,EAAAN,GAAA,CAAA9qB,EAAA0rB,CAKR,MAEAJ,EACIF,EAAAN,GAAA,CAAA9qB,EAAA2rB,SAxEJC,CAAgC,CAAO5rB,EAAApU,KAAAoU,GAAA,IACvC,IAAAyrB,EAAA1Q,SAAA,GAAA6Q,EAAA,MACA,IAAAzoB,MAAAsoB,GACA,OAAAA,IAAAA,CAAA,CAGA,IAAAI,EAAAjgC,KAAAkgC,KAAA,IAAAF,EAAA,UACA,MAAAC,GAhBqC,IAiBrCA,EAAA7rB,CAAA,EAgEIsrB,EAAAtrB,GACJ,MAAAkrB,GACAE,CAAAA,EAAAN,GAAA,CAAA9qB,EAAA,KAGA,OAAAorB,CAAA,ECjCSZ,EAAAzpB,EACT,EACAC,GAAA,CACA,qBAAApe,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,+BAAAA,GACSgqB,EAAA,gBACT,GAGA,OAAA5R,EAAAroB,GAAA,CAAAk6B,GAAAxgC,IAAA,CACAH,GAAAA,EACA0W,GAAA,CACA,GAAAA,aAAA6V,EAGU,MAFV,qBAAAj0B,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAme,KAAA,kDACAgqB,EAAiB,kBACP,GAAAvT,EAAA6E,EAAA,GAGH,OADPtb,CAAA,EAGA,EAKAib,MAAAA,CACA,ECzEA,SAAA8P,GACAtnC,CAAA,CACAunC,EAAAjJ,IAAA,CACA,CAmBA,OAAA8G,GAAAplC,EAlBA,SAAA8hB,CAAA,EACA,IAAA0lB,EAAA,CACA5rB,KAAAkG,EAAAlG,IAAA,CACAzb,OAAA,OACAsnC,eAAA,SACAvU,QAAAlzB,EAAAkzB,OAAA,CACA,GAAAlzB,EAAA0nC,YAAA,EAGA,OAAAH,EAAAvnC,EAAA8a,GAAA,CAAA0sB,GAAAxhC,IAAA,CAAAsW,GAAA,EACAmqB,WAAAnqB,EAAAzc,MAAA,CACAqzB,QAAA,CACA,uBAAA5W,EAAA4W,OAAA,CAAAxM,GAAA,yBACO,cAAApK,EAAA4W,OAAA,CAAAxM,GAAA,eACF,CACL,KAGA,CCZA,SAAAihB,GAAA3nC,CAAA,EA+BA,OAAAolC,GAAAplC,EA9BA,SAAe8hB,CAAA,EACf,WAAAkR,EAAAvtB,EAAA,EAAAC,EAAAC,IAAA,KAAAkV,EAAA,IAAAF,eAmBA,QAAAwsB,KAjBAtsB,EAAAqC,OAAA,CAAAvX,EAGAkV,EAAAW,kBAAA,MAbA,IAcAX,EAAAQ,UAAA,EACA3V,EAAA,CACA+gC,WAAA5rB,EAAAhb,MAAA,CACAqzB,QAAA,CACA,uBAAArY,EAAA+sB,iBAAA,yBACa,cAAA/sB,EAAA+sB,iBAAA,eACF,CACX,EACA,EAEA/sB,EAAAgtB,IAAA,QAAA7nC,EAAA8a,GAAA,EAGA9a,EAAAkzB,OAAA,CACApvB,OAAAxJ,SAAA,CAAA2f,cAAA,CAAA1f,IAAA,CAAAyF,EAAAkzB,OAAA,CAAAiU,IACAtsB,EAAAitB,gBAAA,CAAAX,EAAAnnC,EAAAkzB,OAAA,CAAAiU,EAAA,EAIKtsB,EAAA6gB,IAAA,CAAA5Z,EAAAlG,IAAA,CACL,IAGA,CLHEqpB,GAAA/U,YAAA,GM5BF,IAAA6X,GAAiC,CACjC,IAAM9X,EACN,IAAMsB,EACN,IAAM8P,GACN,IAAM3D,GACN,IAAM4E,GACN,IAAMgB,GACN,IAAMO,GACN,IAAAoB,GAAA,CAiNA,SAAA+C,GAAqBtnC,CAAA,EACrBA,EAAAvB,YAAA,EAAA6H,eAAA,KACAtG,EAAA/B,cAAA,GCvNA,IAAAspC,GAAAtvC,EAAA,MAAAif,GAAAjf,EAAA,MCpBAuvC,GAAA,OACA,6DAcA,SAAAC,GAAAC,CAAA,EACA,IAAAC,EAAAD,EAAAltB,KAAA,CAAAgtB,IACA,GAAAG,EAAA,CACA,IAAAh/B,EAMA,MALAg/B,MAAAA,CAAA,IACMh/B,EAAA,GACN,MAAAg/B,CAAA,KACAh/B,CAAAA,EAAA,IAEA,CACAuF,QAAAy5B,CAAA,IACAh/B,cAAAA,EACA6F,aAAAm5B,CAAA,IAEA,EAIA,IAAA7/B,GAAA7P,EAAA,MAAAwP,GAAAxP,EAAA,MC/B4B2vC,GAAA,GAAArW,EAAA1yB,CAAA,IAiC5BkY,GAAA9e,EAAA,MCnCA4vC,GAAA,CACAnvC,EACAovC,EACAC,IACA,CACA,IAAAC,EACA,WACAF,EAAAjrC,KAAA,KACAorC,CAAAA,GAAAF,CAAA,IAAAD,EAAAI,KAAA,CAAAJ,EAAAjrC,KAAA,CAAAmrC,CAAAA,GAAA,GAOAF,CAAAA,EAAAI,KAAA,EAAAF,KAAA/nC,IAAA+nC,CAAA,IACAA,EAAAF,EAAAjrC,KAAA,CACAnE,EAAAovC,IAIA,GCAAK,GAAe,IACf,MAAA1hC,KAAAoU,GAAA,MAAAnX,KAAA0kC,KAAA,CAAA1kC,KAAAsF,MAAA,oBCnBAq/B,GAAA,CAAAprC,EAAAJ,IACA,EACAI,KAAAA,EACAJ,MAAA,GAAAka,GAAArH,CAAA,EAAA7S,EAAA,QACAqrC,MAAA,EACAI,QAAQ,GACR1qC,GAAAuqC,IACA,GCcAI,GAAA,CAAA9sC,EAAA/C,IAAA,CACA,IACA,GAAA8vC,oBAAAC,mBAAA,CAAA9lB,QAAA,CAAAlnB,GAAA,CAGA,GAAAA,gBAAAA,GAAA,6BAAA5D,IAAA,EACA,OAEA,IAAA6wC,EAAA,IAAAF,oBAAAG,GAAAA,EAAAC,UAAA,GAAAl+B,GAAA,CAAAhS,IAIA,OADAgwC,EAAAH,OAAA,EAAA9sC,KAAAA,EAAAotC,SAAA,KACAH,CACI,EACJ,MAAA99B,EAAA,CAEA,CACA,ECvBAk+B,GAAA,CAAAC,EAAAC,IAAA,CACA,IAAAC,EAAA,GAAqC,CACrCztC,CAAAA,aAAAA,EAAAC,IAAA,gBAAA81B,EAAA1yB,CAAA,IAAA4X,QAAA,CAAAwnB,eAAA,IACA8K,EAAAvtC,GACAwtC,IACAE,oBAAA,mBAAAD,EAAA,IACAC,oBAAA,WAAAD,EAAA,KAGA,EACA7vB,iBAAA,mBAAA6vB,EAAA,IAGA7vB,iBAAA,WAAA6vB,EAAA,KCRAE,GAAA,CAAAC,EAAerB,IAAU,KACzBsB,EAAA,IAAAvB,EAAAO,GAAA,SAGA,IAAAiB,EAAA,EAAAC,EAAA,GAGA,IAAAC,EAAA,IAGA,GAAA31B,GAAA,CAAAA,EAAA41B,cAAA,EACA,IAAAC,EAAAH,CAAA,IAAAI,EAAAJ,CAAA,CAAAA,EAAA7uC,MAAA,IAOA4uC,GACAC,IAAAA,EAAA7uC,MAAA,EACAmZ,EAAA+1B,SAAA,CAAAD,EAAAC,SAAA,MACA/1B,EAAA+1B,SAAA,CAAAF,EAAAE,SAAA,MAEAN,GAAAz1B,EAAAhX,KAAA,CACQ0sC,EAAAzxC,IAAA,CAAA+b,KAERy1B,EAAAz1B,EAAAhX,KAAA,CACA0sC,EAAA,CAAA11B,EAAA,EAKAy1B,EAAAxB,EAAAjrC,KAAA,GACAirC,EAAAjrC,KAAA,CAAAysC,EACAxB,EAAAQ,OAAA,CAAAiB,EACAF,GACAA,IAGA,GAGAX,EAAAH,GAAA,eAAAiB,GACAd,IAAyBW,EAAAxB,GAAAuB,EAAAtB,EAAAC,GAGzBe,GAAA,KACAJ,EAAAmB,WAAA,GAAAn/B,GAAA,CAAA8+B,GACKH,EAAA,GACL,GACA,ECvDA,IAAAS,GAAA,GAGA,IAAAC,GAAS,IACT,cAAAxY,EAAA1yB,CAAA,IAAA4X,QAAA,CAAAwnB,eAAA,GAAA+L,GAAA,CAGAC,GAAA,KAEAnB,GAAA,EAAAoB,UAAAA,CAAA,KACGJ,GAAAI,CACH,OAEAC,GAAA,KAIAL,GAAA,IAKAA,GAAAC,KACAE,MAEA,CACA,IAAAH,iBAAA,CACK,OAAAA,EACL,CACA,GCzBAM,GAAA,CAAAhB,EAAArB,IAA0B,KAE1BsB,EADA,IAAAgB,EAAyBF,KACzBrC,EAAAO,GAAA,OAGAmB,EAAA,IAEAH,GAAAx1B,EAAA+1B,SAAA,CAAAS,EAAAP,eAAA,GACAhC,EAAAjrC,KAAA,CAAAgX,EAAAy2B,eAAA,CAAAz2B,EAAA+1B,SAAA,CACA9B,EAAAQ,OAAA,CAAAxwC,IAAA,CAAA+b,GACAw1B,EAAA,IACA,EAGAX,EAAAH,GAAA,cAAAiB,GACAd,IACIW,EAAQxB,GAAAuB,EAAAtB,EAAAC,GACZe,GAAA,KACAJ,EAAAmB,WAAA,GAAAn/B,GAAA,CAAA8+B,GACKd,EAAA6B,UAAA,EACL,MACA,ECpBAC,GAAA,GAGAC,GAAA,CAAArB,EAAArB,IAA0B,KAE1BsB,EADA,IAAAgB,EAAyBF,KACzBrC,EAAAO,GAAA,OAGAmB,EAAA,IAEA,IAAA3sC,EAAAgX,EAAA+1B,SAAA,CAKA/sC,EAAAwtC,EAAAP,eAAA,GACAhC,EAAAjrC,KAAA,CAAAA,EACAirC,EAAAQ,OAAA,CAAAxwC,IAAA,CAAA+b,IAGAw1B,GACAA,GACA,EAEkBX,EAAAH,GAAA,2BAAAiB,GAGlB,GAAAd,EAAA,CAAyBW,EAAAxB,GAAAuB,EAAAtB,EAAAC,GAGzB,IAAA2C,EAAA,KACAF,EAAA,CAAA1C,EAAAlqC,EAAA,IACA8qC,EAAAmB,WAAA,GAAAn/B,GAAA,CAAA8+B,GACAd,EAAA6B,UAAA,GACAC,EAAA,CAAA1C,EAAAlqC,EAAA,KACAyrC,EAAA,IACA,EAMA,oBAAA7jC,OAAA,CAAA/J,GAAA,CACK2d,iBAAA3d,EAAAivC,EAAA,CAAA1B,KAAA,GAAA2B,QAAA,OAGL7B,GAAA4B,EAAA,GACA,GCnEA,SAAAE,GAAA/tC,CAAA,EACA,uBAAAA,GAAAguC,SAAAhuC,EAAA,CAQA,SAAAiuC,GAAA7nC,CAAA,EAAAiK,eAAAA,CAAA,IAAA69B,EAAA,EAKA,OAJA79B,GAAAjK,EAAAiK,cAAA,CAAAA,GACAjK,CAAAA,EAAAiK,cAAA,CAAAA,CAAA,EAGAjK,EAAAyL,UAAA,EACAxB,eAAAA,EACG,GAAA69B,CAAA,EACH,CCX4B,IAAAC,GAAA,GAAAzZ,EAAA1yB,CAAA,IAG5B,SAASosC,IAAU,CACnB,OAAAD,IAAAA,GAAA5xB,gBAAA,EAAA4xB,GAAAnf,WAAA,CAEA,IAAAqf,GAAA,EAGAh7B,GAAA,GAsQA,SAAAi7B,GACAloC,CAAA,CACA4Q,CAAA,CACArY,CAAA,CACAuwB,CAAA,CACAtd,CAAA,CACA28B,CAAA,CACA,CACA,IAAAC,EAAAD,EAAuBv3B,CAAM,CAAAu3B,EAAA,CAAAv3B,CAAA,IAAArY,EAAA,MAC7B8vC,EAAAz3B,CAAA,IAAArY,EAAA,QACA8vC,GAAAD,GAGAP,GAAA7nC,EAAA,CACAgG,GAAA,UACAwF,YAAA,GAAAsI,GAAwCrH,CAAA,EAAAjB,EAAA,IAAAjT,GACxC0R,eAAA6e,EAA+B,GAAAtkB,GAAA8jC,EAAO,EAAAD,GACnCv/B,aAAAggB,EAAA,GAAAtkB,GAAA8jC,EAAA,EAAAF,EACH,GCnSA,IAAAG,GAAA,CACAC,WAAA,GACAC,SAAA,GACAC,eARA,qBCD4BC,GAAA,GAAAra,EAAA1yB,CAAA,ICa5BgtC,GAAe,CACftiC,YAAAzB,GAAgBgkC,EAAA,CAChBtiC,aAAA1B,GAAAikC,EAAA,CACAC,2BAA0B,GAC1BC,uBDXA,SACAC,CAAA,CACAC,EAAA,GACAC,EAAA,GACA,KAQAzkC,EAPA,IAAAikC,IAAA,CAAAA,GAAAl1B,QAAA,EACA,qBAAAjZ,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,yEACA,WAE0B0uC,EAAAT,GAAAl1B,QAAA,CAAAC,IAAA,CAI1Bw1B,GACAxkC,CAAAA,EAAYukC,EAAM,CAClBjvC,KAAA2uC,GAAAl1B,QAAA,CAAA41B,QAAA,CACArjC,GAAA,WACK4F,SAAA,CAAA2B,OAAA,MACL,IAGI47B,GACJ,GAAA5kC,EAAAuD,CAAA,cAAAmR,GAAAA,CAAA,CAAAC,KAAAA,CAAA,KAUA,GAAAA,KAAAlc,IAAAkc,GAAAkwB,GAAAA,KAAAA,EAAAjlB,OAAA,CAAAlL,GAAA,CACAmwB,EAAApsC,KAAAA,EACA,WAGAic,IACAmwB,EAAApsC,KAAAA,EACA0H,IACA,qBAAAlK,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,qDAAAuC,EAAAsB,EAAA,IAEAtB,EAAAmE,MAAA,IAEAnE,EAAgBukC,EAAM,CACtBjvC,KAAA2uC,GAAAl1B,QAAA,CAAA41B,QAAA,CACArjC,GAAA,aACS4F,SAAA,CAAA2B,OAAA,MACT,GAEA,EACA,ECvCA47B,iCAAA,GACAD,2BAAkB,GAClB9iC,aAAK,CAAAkjC,eAAA,IACL,GAAAf,EAAA,CAUA,OAAAgB,GAWanzC,QAAA,MAAA4D,IAAA,CAlCb,gBAkCa,CAGb1D,YAAAk2B,CAAA,CAAyB,CAAA+c,GAAA5yC,SAAA,CAAAP,MAAA,CAAAQ,IAAA,OACzB,IAAA8xC,EAAAH,GAAAG,cAAA,CAEAlc,IACAA,EAAAkc,cAAA,EAAA9qB,MAAApN,OAAA,CAAAgc,EAAAkc,cAAA,EACQA,EAAAlc,EAAAkc,cAAA,CAER,qBAAAluC,kBAAAA,gBAAA,SAAAgvC,mBAAA,MAIA,KAAAntC,OAAA,EACA,GAAAusC,EAAA,CACA,GAAApc,CAAA,CACAkc,eAAAA,CAAA,EAGI,IAAAe,eAAAA,CAAsB,OAAAptC,OAAA,EAC1BqtC,SHvCA5E,EAAA,IACA,IAAAlc,EAAAof,KACApf,GAAApZ,EAAAm6B,EAAA,GACM/gB,EAAMghB,IAAA,EACZ7B,GAAAnf,WAAA,CAAAghB,IAAA,wBAmCA1D,GAAArB,GAAA,CACA,IAAAj0B,EAAAi0B,EAAAQ,OAAA,CAAA3tC,GAAA,GACAkZ,IAIA,qBAAApW,kBAA6BA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,8BAC7B8K,GAAA,KAAArT,MAAAirC,EAAAjrC,KAAA,CAAA8T,KAAA,IACGme,EAAAjb,EACH,GAKA42B,GAAA3C,GAAA,CACA,IAAAj0B,EAAAi0B,EAAAQ,OAAA,CAAA3tC,GAAA,GACAkZ,IAIA,qBAAApW,kBAA6BA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,8BAC7B8K,GAAA,KAAArT,MAAAirC,EAAAjrC,KAAA,CAAA8T,KAAA,eACGke,EAAAhb,EACH,EAvDAk0B,GA4DAqC,GAAAtC,GAAA,CACA,IAAAj0B,EAAAi0B,EAAAQ,OAAA,CAAA3tC,GAAA,GACA,GAAAkZ,GAIA,IAAAkY,EAAoB,GAAAtkB,GAAA8jC,EAAO,EAAA94B,EAAAm6B,EAAA,EAC3BhD,EAAA,GAAAniC,GAAA8jC,EAAA,EAAA13B,EAAA+1B,SAAA,CACA,sBAAAnsC,kBAA6BA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,8BAC7B8K,GAAA,KAAArT,MAAkCirC,EAAAjrC,KAAA,CAAA8T,KAAA,eAC/BT,EAAA,cAAArT,MAAAkvB,EAAA6d,EAAAj5B,KAAA,UAPH,GA7DA,EG8BQ+7B,GAAAA,EAAcI,iBAAA,EAChB,GAAA51B,GAAsB61B,CAAA,iBAAAC,GAAAA,EAAA1tC,OAAA,UAAA2tC,GAAAA,EAAA5jC,YAAA,kBAAA6jC,GAAAA,EAAAX,cAAA,IHT5BhE,GAAA,WAfA,GAAsB,CACtB,IAAAtlC,EAAA,GAAAwE,GAAAG,EAAA,IACA,GAAA3E,GAGA,IAAA2mC,EAAmB,GAAAniC,GAAA8jC,EAAO,IAAAqB,EAAA,CAAA/4B,EAAA+1B,SAAA,EAC1BxjC,EAAA,GAAAqB,GAAA8jC,EAAA,EAAA13B,EAAAzN,QAAA,EACAnD,EAAAyL,UAAA,EACAD,YAAA,yBACAxF,GAAA,eACAiE,eAAA08B,EACK79B,aAAA69B,EAAAxjC,CACL,GARA,EGsBA,CAMAspB,UAAA3F,CAAA,CAAApxB,CAAA,OAAAw0C,cAAA,CAAAx0C,EAGA,KAAA8zC,mBAAA,GACA,qBAAQhvC,kBAAWA,gBAAA,GACnB0xB,EAAAzxB,EAAA,CAAAC,IAAA,CACA,4GAEA,qBAAQF,kBAAWA,gBAAA,GACnB0xB,EAAAzxB,EAAA,CAAAC,IAAA,CACA,oDAAA6tC,GAAAG,cAAA,KAIA,IACAM,uBAAAmB,CAAA,CACAhB,iCAAAA,CAAA,CACAD,2BAAAA,CAAA,CACAH,2BAAAA,CAAA,CACAP,WAAAA,CAAA,CACAC,SAAAA,CAAA,CACAC,eAAAA,CAAA,CACM0B,2BAAAA,CAAA,OAAA/tC,OAAA,CAGN8tC,EACA,QAAAE,uBAAA,CAAApwC,GACAivC,EACAC,GAGMJ,Id9FFpE,IAAMA,GAAAnxB,QAAA,CACVmxB,GAAAnxB,QAA8B,CAAA2C,gBAAA,oBAAoB,KAClD,IAAUzR,EAAM,GAAAF,GAAAG,EAAA,IAChB,GAAAggC,GAAAnxB,QAAA,CAAAqS,MAAA,EAAAnhB,EAAA,KAAA4lC,EAAA,WAGA,sBAAU9vC,kBAAUA,gBAAA,GACpB0xB,EAAAzxB,EAAsC,CAAA0H,GAAA,CACtC,0BAAAmoC,EAAA,6CAAA5lC,EAAAsB,EAAA,IAIAtB,EAAAxI,MAAA,EACAwI,EAAAE,SAAA,CAAA0lC,GAEA5lC,EAAAhL,MAAA,uCACAgL,EAAAmE,MAAA,EACK,IAGL,qBAAMrO,kBAAWA,gBAAA,GACjB0xB,EAAAzxB,EAAA,CAAAC,IAAA,wFc6EA6vC,SF9FY/d,CAAA,EACZ,IAAAgc,WAAAA,CAAA,CAAAC,SAAAA,CAAA,CAAAC,eAAAA,CAAA,CAAA0B,2BAAAA,CAAA,GACA,GAAA7B,EAAA,CACA,GAAA/b,CAAA,EAIA,IAAAge,EAAA,GAGAC,EAAA,IACAD,CAAA,CAAArzB,EAAA,EAIAqzB,CAAAA,CAAA,CAAArzB,EAAA,CACAuzB,EAAOpd,IAAA,OAAAlB,EAAiBmB,EAAA,EAAApW,EAAAwzB,KACxB,IAAAve,EAAAmB,EAAA,EAAApW,EAAA,eALAqzB,CAAA,CAAArzB,EAAA,EAWA,IAAAyzB,EAAAH,EACA,mBAAAL,GACAQ,CAAAA,EAAA,GACAH,EAAAtzB,IAAAizB,EAAAjzB,EACA,EAEA,IAAApN,EAAA,GAGIy+B,GACJ,GAAAjkC,EAAAuD,CAAA,cACK+iC,CAcL,SACAzyB,CAAA,CACAwyB,CAAA,CACA7gC,CAAA,CACA,CACA,MAAAvF,GAAAY,EAAA,KAAAgT,EAAAC,SAAA,EAAAuyB,EAAAxyB,EAAAC,SAAA,CAAAlB,GAAA,GAIA,GAAAiB,EAAAtP,YAAA,EACA,IAAAF,EAAAwP,EAAAC,SAAA,CAAAyyB,MAAA,KAAAliC,EAAA,OAGA,IAAA/I,EAAAkK,CAAA,CAAAnB,EAAA,CACA/I,IACAuY,EAAAO,QAAA,CAEQ9Y,EAAAkM,aAAA,CAAAqM,EAAAO,QAAA,CAAAzc,MAAA,EACRkc,EAAAQ,KAAA,EACA/Y,EAAA+E,SAAA,mBACA/E,EAAAgJ,MAAA,GAGA,OAAAkB,CAAA,CAAAnB,EAAA,EAEA,WAGAlE,EAAA,GAAAF,GAAAG,EAAA,IACA,GAAAD,EAAA,CACA,IAAA7E,EAAA6E,EAAA+G,UAAA,EACAJ,KAAA,CACA,GAAA+M,EAAAC,SAAA,CACO7f,KAAA,OACP,EACAgT,YAAA,GAAA4M,EAAAC,SAAA,CAAA7b,MAAA,IAAA4b,EAAAC,SAAA,CAAAlB,GAAA,GACKnR,GAAA,eAGLoS,CAAAA,EAAAC,SAAA,CAAAyyB,MAAA,CAAAjrC,EAAA+I,MAAA,CAAAmB,CAAA,CAAAlK,EAAA+I,MAAA,EAAA/I,EAGA,IAAAse,EAAA/F,EAAA3b,IAAA,IAAA2b,EAAA3b,IAAA,IACAJ,EAAA+b,EAAA3b,IAAA,MAAAA,IAAA,OACAJ,CAAAA,EAAAkzB,OAAA,CAAAwb,SAKA5sB,CAAA,CACA/M,CAAA,CACAvR,CAAA,CACAxD,CAAA,CACA,KAAAkzB,EAAAlzB,EAAAkzB,OAAA,CAOA,GAJA,GAAAlrB,EAAAmU,EAAA,EAAA2F,EAAA1F,UACA8W,CAAAA,EAAA,EAAAA,OAAA,EAGAA,GACA,sBAAAA,EAAAe,MAAA,CACAf,EAAAe,MAAA,CAA2B,eAAAzwB,EAAAkF,aAAA,IACrBwqB,EAAAe,MAAA,CAAAyB,EAAAiZ,EAAA,IAAAjZ,EAAA3vB,EAAA,EAAAgP,EAAAme,EAAAxM,GAAA,CAAAgP,EAAAiZ,EAAA,SACN,GAAAptB,MAAApN,OAAA,CAAA+e,GAAA,CACA,KAAA0b,EAAA,CAAA1b,EAAA2b,IAAA,GAAAvxC,EAAAmtB,EAAA,GAAAntB,IAAAo4B,EAAAiZ,EAAA,EACAzb,EAAA,IACAA,EACA,CAAS,eAAA1vB,EAAAkF,aAAA,IACT,CAAAgtB,EAAAiZ,EAAA,IAAAjZ,EAAA3vB,EAAA,EAAAgP,EAAA65B,GAAA,CACM,MAEN1b,EAAA,CACA,GAAAA,CAAA,CACA,eAAA1vB,EAAyBkF,aAAA,GACzBkJ,QAAA,GAAA8jB,EAAA3vB,EAAA,EAAAgP,EAAAme,EAAAthB,OAAA,CACA,CACI,MAEJshB,EAAA,gBAAA1vB,EAAAkF,aAAA,GAAAkJ,QAAA,GAAA8jB,EAAA3vB,EAAA,EAAAgP,EAAA,CACA,CACA,OAAAme,CAAA,EArCApR,EAAAzZ,EAAAwJ,UAAA,GAAArO,EAAAxD,EACA,EAvCA,CAuCA,EA3DK+b,EAAAwyB,EAAA7gC,EACL,GAGI0+B,GACJ,GAAAlkC,EAAAuD,CAAA,YACKqjC,CA+FL,SACA/yB,CAAA,CACAwyB,CAAA,CACA7gC,CAAA,CACA,CACA,GACA,GAAAvF,GAAAY,EAAA,KACAgT,CAAAA,CAAAA,EAAAlB,GAAA,GAAAkB,EAAAlB,GAAA,CAAAM,sBAAA,GACAY,EAAAlB,GAAA,EAAAkB,EAAAlB,GAAA,CAAAG,cAAA,EAAAuzB,EAAAxyB,EAAAlB,GAAA,CAAAG,cAAA,CAAAF,GAAA,GAIA,IAAAD,EAAAkB,EAAAlB,GAAA,CAAAG,cAAA,CAIA,GAAAe,EAAAtP,YAAA,EACA,IAAAF,EAAAwP,EAAAlB,GAAA,CAAAk0B,sBAAA,KAAAxiC,EAAA,OAGA,IAAA/I,EAAAkK,CAAA,CAAAnB,EAAA,CACA/I,IACAA,EAAAkM,aAAA,CAAAmL,EAAAS,WAAA,EAAA9X,EAAAgJ,MAAA,GAGA,OAAAkB,CAAA,CAAAnB,EAAA,EAEA,WAIAlE,EAAA,GAAAF,GAAAG,EAAA,IACA,GAAAD,EAAA,CACA,IAAA7E,EAAA6E,EAAA+G,UAAA,EACAJ,KAAA,CACA,GAAA6L,EAAA7L,IAAA,CACA7S,KAAA,MACAgE,OAAA0a,EAAA1a,MAAA,CACO2a,IAAAD,EAAAC,GAAA,EAEP3L,YAAA,GAAA0L,EAAA1a,MAAA,IAAA0a,EAAAC,GAAA,GACKnR,GAAA,gBAML,GAHAoS,EAAAlB,GAAA,CAAAk0B,sBAAA,CAAAvrC,EAAA+I,MAAA,CAAAmB,CAAA,CAAAqO,EAAAlB,GAAA,CAAAk0B,sBAAA,EAAAvrC,EAGAuY,EAAAlB,GAAA,CAAAitB,gBAAA,CACA,IAAA/rB,EAAAlB,GAAA,CAAAitB,gBAAA,gBAAAtkC,EAAAkF,aAAA,IAGA,IAAAkmC,EAAkG7yB,EAAAlB,GAAA,CAAAm0B,gBAAA,EAAAjzB,EAAAlB,GAAA,CAAAm0B,gBAAA,CAAAtZ,EAAAiZ,EAAA,EAGlG5yB,EAAUlB,GAAA,CAAAitB,gBAAA,CACApS,EAAAiZ,EAAA,CACV,GAAAjZ,EAAA3vB,EAAA,EAAAsC,EAAAwJ,UAAA,GAAA+8B,GAEA,OAAAnkB,EAAA,CAEA,CACA,CACA,CApDA,CAoDA,EA7JK1O,EAAAwyB,EAAA7gC,EACL,EACA,EEoDA,CAAAy+B,WAAAA,EAAAC,SAAAA,EAAAC,eAAAA,EAAA0B,2BAAAA,CAAA,GAIAC,wBAAApwC,CAAA,EACA,SAAAiwC,cAAA,EACA,qBAAQ1vC,kBAAWA,gBAAA,GACnB0xB,EAAAzxB,EAAA,CAAAC,IAAA,6BAAAT,EAAA+L,EAAA,mDACA,UAE4D,CAAAslC,eAAAA,CAAA,CAAAhlC,YAAAA,CAAA,CAAAC,aAAAA,CAAA,OAAAlK,OAAA,CAE5D,IAAAkvC,EAAAtxC,aAAAA,EAAA+L,EAAA,CAAAwlC,UA4DA,CACA,IAAAC,EAAAC,GAAA,gBAAAC,EAAAD,GAAA,WAGAE,EAAgBH,EAAAjH,GAAyBiH,GAAAzuC,KAAAA,CAAA,CAAAiR,EAAA,GAAA8jB,EAAA8Z,EAAA,EAAAF,EAAAF,GAIzC,GAAAG,GAAA39B,EACA,OACA,GAAA29B,GAAuBA,CAAY,CACnC,GAAA39B,GAAA,CAAArC,SAAA,CAAAqC,QAAAA,CAAA,GACA,IAxEAjR,KAAAA,CAAA,CAGA8uC,EAAA,CACA,GAAA7xC,CAAA,CACA,GAAAsxC,CAAA,CACA,GAAAA,GAAA,CACA3/B,SAAA,CACA,GAAA3R,EAAA2R,QAAA,CACS,GAAA2/B,EAAA3/B,QAAA,CAET,EACAyB,QAAA,EACA,EAAA0+B,EAAA,mBAAAT,EAAAA,EAAAQ,GAAAA,CAAA,CAI8FE,EAAAD,KAAA/uC,IAAA+uC,EAAA,IAAAD,CAAA,CAAAzmC,QAAA,IAAA0mC,CAAA,CAI9FC,EAAApgC,QAAA,CACAogC,EAAYhyC,IAAA,GAAA8xC,EAAA9xC,IAAA,CACZ,IAAAgyC,EAAApgC,QAAA,CAAA2B,OAAA,UAAAy+B,EAAApgC,QAAA,CAGA,KAAAogC,EAAA3mC,OAAA,EACA,qBAAQ7K,kBAAUA,gBAAA,GAClB0xB,EAAAzxB,EAAA,CAAA0H,GAAA,4BAAA6pC,EAAAhmC,EAAA,2CAEuH,qBAAAxL,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,uBAAA6pC,EAAAhmC,EAAA,yBAGvH,IAAAjJ,EAAY,KAAAmtC,cAAa,GAAe,IAAAz2B,SAAAA,CAAA,KAAA6a,EAAA1yB,CAAA,IAGxC,IAAAqwC,EAAA,GAAA3H,GAAA4H,EAAA,EACAnvC,EACAivC,EACA1lC,EACAC,EACA,GACA,CAAAkN,SAAAA,CAAA,GAUA,OARAw4B,EAAM/hC,4BAAqB,CAAAlK,GAAA,CAC3BmsC,CH1DA,SAAAnsC,CAAA,MAYAosC,EAAAC,EAXA,IAAAzjB,EAAAof,KACA,MAAAD,GAAAnf,WAAA,CAAA+c,UAAA,EAAAn2B,EAAAm6B,EAAA,EAKA,qBAAAnvC,kBAA2BA,gBAAA,GAAA0xB,EAA4BzxB,EAAA,CAAA0H,GAAA,iEAAA2mB,EAAA,GAAAtkB,GAAA8jC,EAAA,EAAA94B,EAAAm6B,EAAA,EAEvD2C,EAAA1jB,EAAA+c,UAAA,GAwDA,GAlDA2G,EAAoB3rC,KAAA,CAAAsnC,IAAO1lC,OAAA,KAC3B,IAAAokC,EAAmB,GAAAniC,GAAA8jC,EAAO,EAAA13B,EAAA+1B,SAAA,EAAAxjC,EAAA,GAAAqB,GAAA8jC,EAAA,EAAA13B,EAAAzN,QAAA,EAG1B,GAAAnD,eAAAA,EAAAgG,EAAA,GAAA8iB,CAAAA,EAAA6d,EAAA3mC,EAAAiK,cAAA,EAIA,OAAA2G,EAAA27B,SAAA,EACA,iBA2IA,yEAAAhqC,OAAA,CAAAhK,GAAA,CACG2vC,GA3IHloC,EAAA4Q,EA2IGrY,EA3I2CuwB,EA4I9C,GACAof,GA7IAloC,EAAA4Q,EA6IA,mBA7I8CkY,EA6I9C,wBACAof,GA9IAloC,EAAA4Q,EA8IA,QA9I8CkY,EA8I9C,6BACAof,GA/IAloC,EAAA4Q,EA+IA,eA/I8CkY,EA+I9C,OA4BA+e,GA3KA7nC,EA2KA,CACAgG,GAAA,UACAwF,YAAA,UACAvB,eAAA6e,EAA+B,GAAAtkB,GAAA8jC,EAAO,EAAA13B,EAAA47B,YAAA,EACnC1jC,aAAAggB,EAAA,GAAAtkB,GAAA8jC,EAAA,EAAA13B,EAAA67B,WAAA,IAGH5E,GAlLA7nC,EAkLA,CACAgG,GAAA,UACAwF,YAAA,WACAvB,eAAA6e,EAA+B,GAAAtkB,GAAA8jC,EAAO,EAAA13B,EAAA87B,aAAA,EACnC5jC,aAAAggB,EAAA,GAAAtkB,GAAA8jC,EAAA,EAAA13B,EAAA67B,WAAA,CACH,GAtLAL,EAAAtjB,EAA6C,GAAAtkB,GAAA8jC,EAAO,EAAA13B,EAAA87B,aAAA,EACpDL,EAAAvjB,EAAA,GAAAtkB,GAAA8jC,EAAA,EAAA13B,EAAA47B,YAAA,EACA,UAEA,OACA,YACA,cAoHAG,EAAA7jB,EApHA6d,EAuHAkB,GAvHA7nC,EAuHA,CACAwL,YAAAoF,EAAA5W,IAAA,CACA8O,aALA6jC,EApHAxpC,EA0HA6C,GAAA4K,EAAA27B,SAAA,CACGtiC,eAAA0iC,CAAA,GAvHH,IAgHAA,EAhHAC,EAAA1F,KACA2F,EAAAj8B,EAAA+1B,SAAA,CAAAiG,EAAA/F,eAAA,CAGA,gBAAAj2B,EAAA5W,IAAA,EAAA6yC,IACA,qBAAAryC,kBAAkCA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,6BAClC8K,GAAA,IAAArT,MAAAgX,EAAA+1B,SAAA,CAAAj5B,KAAA,gBAEA,2BAAAkD,EAAA5W,IAAA,EAAA6yC,IACA,qBAAAryC,kBAAmCA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,8BACnC8K,GAAA,KAAArT,MAAAgX,EAAA+1B,SAAA,CAAAj5B,KAAA,gBAEA,UAEA,WACA,IAAAo/B,EAAA,EAAA9yC,IAAA,CAAAqS,OAAA,CAAA07B,GAAAt0B,QAAA,CAAAk3B,MAAA,KACAoC,CAgKA,SACA/sC,CAAA,CACA4Q,CAAA,CACAk8B,CAAA,CACAnG,CAAA,CACAxjC,CAAA,CACA2lB,CAAA,CACA,CAGA,GAAAlY,mBAAAA,EAAAo8B,aAAA,EAAAp8B,UAAAA,EAAAo8B,aAAA,EAIA,IAAA3hC,EAAA,GACA,iBAAAuF,GACAvF,CAAAA,CAAA,kBAAAuF,EAAAq8B,YAAA,EAEA,oBAAAr8B,GACAvF,CAAAA,CAAA,sBAAAuF,EAAAs8B,eAAA,EAEA,oBAAAt8B,GACAvF,CAAAA,CAAA,sBAAAuF,EAAAu8B,eAAA,EAGA,IAAAljC,EAAA6e,EAAA6d,EAGAkB,GAAA7nC,EAAA,CACAwL,YAAAshC,EACAhkC,aALAmB,EAAA9G,EAMA6C,GAAA4K,EAAAo8B,aAAA,aAAAp8B,EAAAo8B,aAAA,cACA/iC,eAAAA,EACGoB,KAAAA,CACH,GAvBA,CAuBA,EAlMArL,EAAA4Q,EAAAk8B,EAAAnG,EAAAxjC,EAAA2lB,EAKG,CArCH,GAuCAmf,GAAAxnC,KAAAokB,GAAA,CAAAynB,EAAA70C,MAAA,MAEA21C,SA+LkBptC,CAAM,EACxB,IAAAlE,EAAAisC,GAAAjsC,SAAA,CACA,GAAAA,GAKA,IAAAuxC,EAAAvxC,EAAAuxC,UAAA,CACAA,IACAA,EAAAC,aAAA,EACAttC,EAAAtG,MAAA,2BAAA2zC,EAAAC,aAAA,EAGAD,EAAA70C,IAAA,EACAwH,EAAAtG,MAAA,kBAAA2zC,EAAA70C,IAAA,EAGAmvC,GAAA0F,EAAAE,GAAA,GACAtgC,CAAAA,EAAA,oBAAArT,MAAAyzC,EAAAE,GAAA,CAAA7/B,KAAA,gBAGAi6B,GAAA0F,EAAAG,QAAA,GACAvgC,CAAAA,EAAA,yBAAArT,MAAAyzC,EAAAG,QAAA,CAAA9/B,KAAA,MAIAi6B,GAAA7rC,EAAA2xC,YAA0C,GAC1CztC,EAAAtG,MAAA,mBAAAoC,EAAA2xC,YAAA,OAGA9F,GAAA7rC,EAAA4xC,mBAAA,GACA1tC,EAAAtG,MAAA,uBAAAuS,OAAAnQ,EAAA4xC,mBAAA,GA5BA,EAlMA1tC,GAIAA,aAAAA,EAAAgG,EAAA,EAGA,iBAAAomC,IACA,qBAAA5xC,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,+BACA8K,GAAA,MACArT,MAAA,CAAAwyC,EAAApsC,EAAAiK,cAAA,MACAyD,KAAA,eAGA,iBAAA2+B,GAAAA,GAAAD,GAGAn/B,CAAAA,EAAA,sBACArT,MAAA,CAAAwyC,EAAAC,CAAA,MACA3+B,KAAA,aACA,IAIA,mBAAAnL,OAAA,CAAAvI,GAAA,CACA,MAAAA,EAAA,GAAA8uB,CAAAA,GAAA9oB,EAAAiK,cAAA,GAMA,IAAA0jC,EAAA1gC,EAAA,CAAAjT,EAAA,CAAAJ,KAA8C,CAI9Cg0C,EAAAntC,KAAA0oB,GAAA,EAAA0kB,EAJqD,GAAArpC,GAAA8jC,EAAA,EAAAqF,GAIrD3tC,EAAAiK,cAAA,MAGA,sBAAQzP,kBAAUA,gBAAA,GAClB0xB,EAAAzxB,EAAA,CAAA0H,GAAA,8BAAAnI,EAAA,QAAA2zC,EAAA,MAAAC,EAAA,IAJAA,EAAAD,EAIA,IACK1gC,EAAA,CAAAjT,EAAA,CAAAJ,KAAA,CAAAg0C,EAbL,GAgBA,IAAAE,EAAA7gC,EAAA,aACA6gC,GAAA7gC,GAAA,MAEA46B,GAAA7nC,EAAA,CACAwL,YAAA,oBACA1C,aAAAglC,EAAAl0C,KAAA,IAAA4K,GAAA8jC,EAAA,EAAAr7B,GAAA,IAAArT,KAAA,EACAoM,GAAA,aACOiE,eAAA6jC,EAAAl0C,KAAA,GAIP,OAAAqT,EAAA,cAKA,QAAAA,IACA,OAAAA,GAAA8gC,GAAA,CAGA5tC,OAAAC,IAAA,CAAA6M,IAAA1K,OAAA,CAAAyrC,GAAA,CACAhuC,EAAAyN,cAAA,CACAugC,EACA/gC,EAAA,CAAA+gC,EAAA,CAAAp0C,KAAA,CACAqT,EAAA,CAAA+gC,EAAA,CAAAtgC,IAAA,CACK,GAgKLke,IAA+E,qBAAApxB,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,mCAK/EypB,EAAAqiB,OAAA,EACAjuC,EAAAtG,MAAA,kBAAAigC,GAAAxX,EAAA,EAAAyJ,EAAAqiB,OAAA,GAGAriB,EAAAjxB,EAAA,EACAqF,EAAAtG,MAAA,UAAAkyB,EAAAjxB,EAAA,EAGAixB,EAAAzU,GAAA,EAEAnX,EAAAtG,MAAA,WAAAkyB,EAAAzU,GAAA,CAAAtG,IAAA,GAAAlQ,KAAA,SAGAX,EAAAtG,MAAA,YAAAkyB,EAAAsiB,IAAA,GAIAriB,GAAAA,EAAAsiB,OAAA,GACA,qBAAA3zC,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAA0H,GAAA,mCACA0pB,EAAAsiB,OAAA,CAAA5rC,OAAA,EAAAgL,EAAuC1L,IACvC7B,EAAAtG,MAAA,eAAAmI,EAAA,OAAA83B,GAAAxX,EAAA,EAAA5U,EAAAjJ,IAAA,IAtLA,GAGAtH,KAAAA,EACA6uB,EAAA7uB,KAAAA,EACAiQ,GAAA,GArIA,CAqIA,EG/EAjN,GACAA,EAAAtG,MAAA,CACA,0BACA4C,QAAA,KAAAD,OAAA,CAAAotC,cAAA,OAAAptC,OAAA,CAAAotC,cAAA,CAAAI,iBAAA,EACK,GAGLoC,CACA,EA0BA,SAAAP,GAAA0C,CAAA,EAIA,IAAAC,EAAA,GAAA1U,GAAA2U,EAAA,eAAAF,EAAA,IACA,OAAAC,EAAAA,EAAAl7B,YAAA,iBCxLA,qBAAAo7B,oBAAAA,kBAAA,GAEA,GAAAjK,GAAAkK,EAAA,IACA,IAAAC,GAAAz5C,EAAA,MAAA05C,GAAA15C,EAAA81B,CAAA,CAAA2jB,ICpB4BE,GAAA,GAAArgB,EAAA1yB,CAAA,IAsD5BgzC,GAAA,CACA,yCAiB0Br4C,GAAA,GAAAy3B,EAAAx4B,EAAA,IAAA+B,SAAA,GAW1B,SAAAs3C,GACAC,CAAA,CACA5F,EAAA,GACAC,EAAA,GACA,CAGA,GAHAvuC,EAAAk0C,EAGA5F,EAAY,CAA0C,IAAA6F,MAAAA,CAAA,CAAAC,gBAAAA,CAAA,CAAA/gC,QAAAA,CAAA,CAAAghC,OAAAA,CAAA,EAAAC,UA5EtD,KACAC,EAGA,IAAAC,EAAAT,GAAAn7B,QAAA,CAAA67B,cAAA,kBACA,GAAAD,GAAAA,EAAAE,SAAA,CACA,IACMH,EAAAtpC,KAAA69B,KAAA,CAAA0L,EAAAE,SAAA,CACN,OAAA3nC,EAAA,CACA,qBAAAnN,kBAAAA,gBAAA,GAAA0xB,EAAAzxB,EAAA,CAAAC,IAAA,mCACA,IAGA,CAAAy0C,EACA,SAEA,IAAAI,EAAA,GAE+B,IAAAC,KAAAA,CAAA,CAAA/lB,MAAAA,CAAA,CAAAgmB,MAAAA,CAAA,EAAAN,EAmB/B,OAbAI,EAAAR,KAAA,CAAAS,EAAAD,EAAAN,MAAA,CAAAxlB,EAGAgmB,GAAAA,EAAAvkB,SAAA,GACAukB,EAAAvkB,SAAA,CAAAwkB,cAAA,EACAH,CAAAA,EAAAthC,OAAA,CAAAwhC,EAAAvkB,SAAA,CAAAwkB,cAAA,EAGAD,EAAAvkB,SAAA,CAAAykB,gBAAwC,EACxCJ,CAAAA,EAAAP,eAAA,CAAAxK,GAAAiL,EAAAvkB,SAAA,CAAAykB,gBAAA,IAIAJ,CAAA,IA0CAxjB,EAAuBgjB,GAAAJ,GAAMl7B,QAAA,CAAA41B,QAAA,CAAAvd,EAAA6iB,GAAAl7B,QAAA,CAAA41B,QAAA,CAK7B3kC,EAAAoqC,EAAA,CACA90C,KAAA+xB,EACA/lB,GAAA,WACAzM,KAAAq1C,GACA,GAAAK,GAAA14C,IAAAA,GAAAuC,UAAA,GAAAyD,cAAA,GAAA8O,KAAA4jC,CAAA,EACA,GAAAD,CAAA,CACApjC,SAAA,CACA2B,OAVAwhC,EAAA,cAWO,GAAA9gC,GAAA,CAAAA,QAAA,GAAA8jB,EAAA6d,EAAA,EAAA3hC,EAAA,EAEP,QAGA4hC,KAAA,MAEA,GAAA1G,GASI,IAAA2G,EAAA3vC,OAAI4f,cAAA,MAAA0uB,MAAA,EACL,GAAAjwB,EAAA7I,EAAA,EAAAm6B,EAAA,cAAAC,IAVH,EAWA,CAQA,SAAAA,GAAAC,CAAA,EACA,gBAEAxzC,CAAA,CAEA2a,CAAA,CAEA84B,CAAA,CACA5zC,CAAA,CAIA,GAAAI,CAAA,CACA,CAAqD,IAAAyzC,EAAA,GAAArW,GAAAsW,EAAA,EAAAh5B,GAIrD,GAAAvc,KAAAoC,IAAApC,GAAAkxB,IAAAmkB,EAAA,CAAAnkB,EAAAmkB,EAGAvrC,GACAA,EAAAmE,MAAA,GAGA,IAAAtP,EAAA,CACA,GAAAq1C,EAAA,CACApyC,OAAAA,EACA,GAAAH,CAAA,EAGA0vB,GACAxyB,CAAAA,EAAA2f,IAAA,CAAA6S,CAAA,EAIArnB,EAAA9J,EAAA,CACAZ,KAFA+xB,EAAAmkB,EAGAlqC,GAAA,aACAzM,KAAAA,EACOqS,SAAA,CAAA2B,OAAA,QACP,EACA,QACAyiC,EAAAp5C,IAAA,MAAA4F,EAAA2a,EAAA84B,EAAA5zC,KAAAI,EACA,EEvIA,SAAA2zC,GACA91C,CAAA,CACA+1C,CAAA,CACAh0C,CAAA,CACA,CACA,IAAAi0C,EAAoB,GACpB,QAAAxG,EAAA,EAAAA,EAAAuG,EAAA54C,MAAA,CAAAqyC,IAAA,CACAuG,CAAA,CAAAvG,EAAA,CAAA9vC,IAAA,GAAAM,EAAAN,IAAA,EACAs2C,CAAAA,EAAA,IAGA,IAAAtqC,EAAA3J,CAAA,CAAAg0C,CAAA,CAAAvG,EAAA,CAAA9vC,IAAA,EACAgM,GACAuqC,SA/CAA,EAAA37B,CAAA,CAAA47B,CAAA,CAAA52C,CAAA,EAEA,IAAA2d,EAAAi5B,EAAAj5B,KAAA,mBACAA,CAAA,OAAAA,EACI3C,CAAA,CAAA47B,EAAA,CAAA52C,EAEJ22C,EAAA37B,CAAA,CAAA2C,CAAA,KAAAA,CAAA,IAAA3d,EACA,EAwCAy2C,CAAA,CAAAvG,EAAA,CAAA9jC,EAAAwqC,OAAA,CAAAxqC,EAAApM,KAAA,CACA,QAGA,EACAy2C,EAEA,IAAAA,EAAA/1C,EAAA,CEhEA,IAAA0jB,GAAAhpB,EAAA,MAQA,IAAAy7C,GAAYzyB,GAAAuM,GAAA,CAAAkmB,UAAA,EAAAzyB,GAAAuM,GAAA,CAAAmmB,sBAAA,EHEZr0C,EEKeA,ECNR,CACLyyB,IAAA2hB,IAAM,qFAKN/0C,YAAA,MAAcixB,aACZ,CAQA,6BACA,6DACA,yBACD,uBACH,GHjBA8E,SAAA,CAAAp1B,EAAAo1B,SAAA,KACAp1B,EAAAo1B,SAAA,CAAAC,GAAA,CACAr1B,EAAAo1B,SAAA,CAAAC,GAAA,EACA,CACA13B,KAAA,2BACA46B,SAAA+b,CEAA,kBFAiBlpC,GAAA,CAAAzN,GAAA,EACjBA,KAAA,eAA4BA,GAAA,CACrBhD,QAAAi1B,CACP,IACMj1B,QAAAi1B,CACN,EELmE5vB,EAAAX,WAAA,CAAAW,EAAAX,WAAA,eAEnEmM,EAAAxL,EAAAwL,YAAA,CAIA,qBAAA0mC,oBAAAA,kBAAA,GAEAlyC,CAAAA,KAAAW,IAAAX,EAAAsJ,gBAAA,EAAAtJ,KAAAW,IAAAX,EAAAmJ,aAAA,IAmBAqC,EAlBAxL,EAAAwL,YAAA,CAmBAmkB,EAAwB,IAAAud,GAAA,CACxBb,eAAA,IAAAH,GAAqDG,cAAA,aAClDM,uBAAA6F,EAAA,GArBHhnC,EAwBA,EACA+oC,SDjBAt2C,CAAA,CACA+1C,CAAc,CACdh0C,EAAA,GACA,QACA,MAAAmU,OAAA,CAAA6/B,GACID,GAAA91C,EAAA+1C,EAAAh0C,GAkCJ+nC,GAEAgM,GAlCA91C,EAiCAu2C,EAAAzM,GAjCA/nC,EACA,ECSwB2vB,EAAAnkB,EAAkD,CACrE0hC,eAAA,CAAAiH,QAAA,iCAAA52C,MAAAi1C,EAAA,CACD,GAEJ,CAAA7iB,EAAA,ErB/CA3vB,CADAA,EqBuBA,CACA,GAAAA,CAAA,CACGwL,aAAAA,CAAA,GrBxBH4pB,SAAA,CAAAp1B,EAAAo1B,SAAA,KACAp1B,EAAAo1B,SAAA,CAAAC,GAAA,CAAAr1B,EAAAo1B,SAAA,CAAAC,GAAA,GACA13B,KAAA,0BACA46B,SAAA,CACA,CACA56B,KAAA,oBACOhD,QAAAi1B,CACP,EACA,CACAj1B,QAAAi1B,CACE,EACFhpB,SDmEA5G,EAAA,Q1B7DAwL,E0BiEA,GAHA7K,KAAAA,IAAAX,EAAA+nC,mBAAA,EACA/nC,CAAAA,EAAA+nC,mBAAA,CAAAA,EAAA,EAEA/nC,KAAiBW,IAAjBX,EAAAZ,OAAiB,EACjB,I1BpEA2oC,EAAAiM,EAoBAS,EACAC,EClBAh0C,EACAvG,EAKAD,EyB2DAme,EAAA,GAAA4Z,EAAA1yB,CAAA,GAEA8Y,CAAAA,EAAAyV,cAAA,EAAAzV,EAAAyV,cAAA,CAAAxvB,EAAA,EACA0B,CAAAA,EAAAZ,OAAA,CAAAiZ,EAAAyV,cAAA,CAAAxvB,EAAA,CAEA,MACAqC,IAAAX,EAAA20C,mBAAA,EACA30C,CAAAA,EAAA20C,mBAAA,KAEAh0C,KAAAA,IAAAX,EAAAq5B,iBAAA,EACAr5B,CAAAA,EAAAq5B,iBAAA,KAGA,IAAA9I,EAAA,CACA,GAAAvwB,CAAA,CACAioB,YAAA,CAAkB,EAAAvF,EAAsBkyB,EAAA,EAAA50C,EAAAioB,WAAA,EAAAiY,IACxC10B,YAAA,E1BpFAu8B,EAAA,EAAAA,mBAAA,MAAA/nC,EAAA+nC,mBAAA,MAAAiM,EAAAh0C,EAAAwL,YAAA,CAEAA,EAAA,IAAAqmB,EAAAkW,GAAA,CAGAxmB,MAAApN,OAAA,CAAA6/B,GAEAxoC,EAAA,IACAA,EAAAP,MAAA,CAAAO,GACAwoC,EAAAjiB,KAAA,CAAA8iB,GAAAA,EAAAl3C,IAAA,GAAA6N,EAAA7N,IAAA,MAGAk0B,EAAAmiB,GACI,CACJ,mBAAAA,GAEAxoC,CAAAA,EAAA+V,MAAApN,OAAA,CADA3I,EAAAwoC,EAAAxoC,IACAA,EAAA,CAAAA,EAAA,EAIAipC,EAAAjpC,EAAAJ,GAAA,CAAAqL,GAAAA,EAAA9Y,IAAA,EACA+2C,EAAA,QACA,KAAAD,EAAA3sB,OAAA,CAAA4sB,IACAlpC,EAAAhT,IAAA,IAAAgT,EAAA0X,MAAA,CAAAuxB,EAAA3sB,OAAA,CAAA4sB,GAAA,IAGAlpC,G0B2DAorB,UAAA52B,EAAA42B,SAAA,MAAA1E,EAAAgN,EAAA,IAAAoI,GAAAK,EAAA,EzB1FA,MAAA3nC,EAAA80C,KAAA,GACM,oBAAA32C,kBAAaA,iBACb0xB,EAAAzxB,EAAA,CAAA22C,MAAA,GAGN17B,QAAAhb,IAAA,mFAIAlE,EAAAuG,CADAA,EAAA,GAAAixB,EAAAx4B,EAAA,KACA6B,QAAA,KAEAb,EAAAyJ,MAAA,CAAA5D,EAAAg1C,YAAA,EAGA96C,EAAA,IyB8E2BwkC,GAAAnO,GzB7E3B7vB,EAAAjG,UAAA,CAAAP,GyBgFA8F,EAAA20C,mBAAA,EACAM,UAiIe,CAIf,YAHA58B,CAAA,EAAA4Z,EAAA1yB,CAAA,IAAA4X,QAAA,CAGA,CACA,qBAAMhZ,kBAAWA,gBAAA,GACjB0xB,EAAAzxB,EAAA,CAAAC,IAAA,uFACA,WAEyBqC,EAAA,GAAAixB,EAAAx4B,EAAA,GASzBuH,CAAAA,EAAA/B,cAAA,GAOAqpC,GAAAtnC,GAIA,GAAAwH,EAAAuD,CAAA,cAAAoR,KAAAA,CAAA,CAAAD,GAAAA,CAAA,KAEAjc,KAAAA,IAAAkc,GAAwBA,IAAAD,GACxBorB,GAAA,GAAArW,EAAAx4B,EAAA,IAEA,MAlKA,EChGA6G,GqBgBA,GAAAsgC,GAAAh1B,CAAA,EAAAnR,GAAA,CACAA,EAAAkD,MAAA,sBACA,IAAA63C,EAAAh5C,GACAA,gBAAAA,EAAAC,IAAA,EAAAD,SAAAA,EAAAyH,WAAA,MAAAzH,CAAA,CACAg5C,EAAA52C,EAAA,uBACGnE,EAAA2I,iBAAA,CAAAoyC,EACH,ECZA,kBC5BA,gBAAAttC,CAAA,GCAs4E,eAAA0D,EAAA,cAAAA,CAAA,MAAA8iB,EAAAK,EAAA0mB,EAAAC,EAAA9pC,EAAA2iB,OAAA,aAAAonB,GAAA,yDAAAC,GAAA,2DAAAC,EAAAjqC,CAAA,KAAA8iB,IAAA5gB,WAAA,OAAAA,WAAAlC,EAAA,OAAA8iB,IAAAinB,GAAA,CAAAjnB,CAAAA,GAAA5gB,WAAA,OAAA4gB,EAAA5gB,WAAAA,WAAAlC,EAAA,cAAA8iB,EAAA9iB,EAAA,SAAA8pC,EAAA,YAAAhnB,EAAA7zB,IAAA,MAAA+Q,EAAA,SAAA8pC,EAAA,QAAAhnB,EAAA7zB,IAAA,MAAA+Q,EAAA,qBAAA8iB,EAAA,mBAAA5gB,WAAAA,WAAA6nC,CAAA,OAAA/pC,EAAA,CAAA8iB,EAAAinB,CAAA,KAAA5mB,EAAA,mBAAAtgB,aAAAA,aAAAmnC,CAAA,OAAAhqC,EAAA,CAAAmjB,EAAA6mB,CAAA,SAAA7+B,EAAA,GAAAhL,EAAA,GAAAyb,EAAA,YAAAsuB,GAAA,CAAA/pC,GAAA0pC,IAAA1pC,EAAA,GAAA0pC,EAAA/5C,MAAA,CAAAqb,EAAA0+B,EAAA/uC,MAAA,CAAAqQ,GAAAyQ,EAAA,GAAAzQ,EAAArb,MAAA,EAAAq6C,IAAA,UAAAA,GAAA,KAAAhqC,GAAA,IAAAH,EAAAiqC,EAAAC,GAAA/pC,EAAA,WAAA2pC,EAAA3+B,EAAArb,MAAA,CAAAg6C,GAAA,KAAAD,EAAA1+B,EAAAA,EAAA,KAAAyQ,EAAAkuB,GAAAD,GAAAA,CAAA,CAAAjuB,EAAA,CAAArpB,GAAA,GAAAqpB,EAAA,GAAAkuB,EAAA3+B,EAAArb,MAAA,CAAA+5C,EAAA,KAAA1pC,EAAA,GAAAiqC,SAAApqC,CAAA,KAAAmjB,IAAAtgB,aAAA,OAAAA,aAAA7C,EAAA,KAAAmjB,IAAA6mB,GAAA,CAAA7mB,CAAAA,GAAAtgB,aAAA,OAAAsgB,EAAAtgB,aAAAA,aAAA7C,EAAA,KAAAmjB,EAAAnjB,EAAA,OAAA8pC,EAAA,YAAA3mB,EAAAl0B,IAAA,MAAA+Q,EAAA,OAAA8pC,EAAA,QAAA3mB,EAAAl0B,IAAA,MAAA+Q,EAAA,IAAAA,GAAA,UAAAqqC,EAAArqC,CAAA,CAAA8pC,CAAA,OAAAQ,GAAA,CAAAtqC,EAAA,KAAAuqC,KAAA,CAAAT,CAAA,UAAAU,GAAA,EAAAV,EAAAW,QAAA,UAAAzqC,CAAA,MAAA8pC,EAAA,MAAA93B,UAAAliB,MAAA,OAAAkiB,UAAAliB,MAAA,WAAAgzB,EAAA,EAAAA,EAAA9Q,UAAAliB,MAAA,CAAAgzB,IAAAgnB,CAAA,CAAAhnB,EAAA,GAAA9Q,SAAA,CAAA8Q,EAAA,CAAA3X,EAAAje,IAAA,KAAAm9C,EAAArqC,EAAA8pC,IAAA,IAAA3+B,EAAArb,MAAA,EAAAqQ,GAAA8pC,EAAAE,EAAA,EAAAE,EAAAr7C,SAAA,CAAAuD,GAAA,iBAAA+3C,GAAA,CAAAn1C,KAAA,WAAAo1C,KAAA,GAAAT,EAAAY,KAAA,WAAAZ,EAAA9X,OAAA,IAAA8X,EAAAlnB,GAAA,IAAAknB,EAAAa,IAAA,IAAAb,EAAAz6C,OAAA,IAAAy6C,EAAAc,QAAA,IAAAd,EAAAe,EAAA,CAAAL,EAAAV,EAAAgB,WAAA,CAAAN,EAAAV,EAAA1L,IAAA,CAAAoM,EAAAV,EAAAiB,GAAA,CAAAP,EAAAV,EAAAkB,cAAA,CAAAR,EAAAV,EAAAmB,kBAAA,CAAAT,EAAAV,EAAAoB,IAAA,CAAAV,EAAAV,EAAAqB,eAAA,CAAAX,EAAAV,EAAAsB,mBAAA,CAAAZ,EAAAV,EAAAuB,SAAA,UAAArrC,CAAA,YAAA8pC,EAAAwB,OAAA,UAAAtrC,CAAA,mDAAA8pC,EAAApzB,GAAA,uBAAAozB,EAAAyB,KAAA,UAAAvrC,CAAA,iDAAA8pC,EAAA0B,KAAA,wBAAA1B,EAAA,YAAA2B,EAAA3oB,CAAA,MAAAK,EAAA2mB,CAAA,CAAAhnB,EAAA,IAAAK,KAAA9tB,IAAA8tB,EAAA,OAAAA,EAAAR,OAAA,KAAAxX,EAAA2+B,CAAA,CAAAhnB,EAAA,EAAAH,QAAA,IAAAxiB,EAAA,OAAAH,CAAA,CAAA8iB,EAAA,CAAA3X,EAAAA,EAAAwX,OAAA,CAAA8oB,GAAAtrC,EAAA,WAAAA,GAAA,OAAA2pC,CAAA,CAAAhnB,EAAA,QAAA3X,EAAAwX,OAAA,CAAA8oB,EAAAC,EAAA,CAAAC,KAAA,IAAA7oB,EAAA2oB,EAAA,IAAAnvC,CAAAA,EAAAqmB,OAAA,CAAAG,CAAA,mBAAAxmB,CAAA,CAAAgmB,CAAA,CAAAj1B,CAAA,ECAt1EiP,EAAAqmB,OAAA,CAAAt1B,EAAA,oBAAAiP,CAAA,CAAAgmB,CAAA,CAAAj1B,CAAA,ECAnC,aAIb,IAE8E4f,EAF9E2+B,EAE8E3+B,CAAAA,EAJ5C5f,EAAA,QAI4C4f,EAAA4+B,UAAA,CAAA5+B,EAAA,CAAA6+B,QAAA7+B,CAAA,EAmC9E3Q,EAAAqmB,OAAA,CA9BA,CACA/wB,KAAA,SAAAm6C,CAAA,EACA,IAAA/4C,EAAA+4C,EAAA/4C,EAAA,CACAg5C,EAAAD,EAAAC,MAAA,CACAC,EAAAF,EAAAE,SAAA,CACAC,EAAAH,EAAAG,aAAA,CACAC,EAAAJ,EAAAI,OAAA,CAGAC,EAAA,aAHAL,EAAAM,IAAA,CAGAC,EAAA,gBAAAH,EAEAn5C,GAAA,GAAA44C,EAAAE,OAAA,wBAI2hB,IAAAS,EAAA,qHAAAruC,KAAAC,SAAA,CAAA6tC,GAAAhzC,KAAA,6LAAAozC,EAAAE,EAAA,qGAAAJ,EAAA,MAAAl5C,EAAA,MAK3hB,OACAw5C,OAR4L,oEAAAx5C,EAAAo5C,EAAAE,EAAA,sHAS5LC,OAAAA,EACAE,aANA,KAAAR,SAAA,CAAAA,EAAAC,EAOG,CACH,EACAD,UAAA,SAAAS,CAAA,CAAAR,CAAA,EACA,wBAAAA,EAAA,aAAAA,EAAA,yBAAAA,EAAA,SAAAhuC,KAAAC,SAAA,CAAAuuC,GAAA,GACA,EAEA,gBAAApwC,CAAA,CAAAgmB,CAAA,CAAAj1B,CAAA,ECzCa,aAIb,IAE8E4f,EAF9E0/B,EAE8E1/B,CAAAA,EAJ1C5f,EAAA,QAI0C4f,EAAA4+B,UAAA,CAAA5+B,EAAA,CAAA6+B,QAAA7+B,CAAA,EAmE9E3Q,EAAAqmB,OAAA,CAhEA,CACAiqB,WAAA,SAAAX,CAAA,EACA,IAAAM,EAAA1gC,SAAAmS,aAAA,WAEG,OADHuuB,EAAA5E,SAAA,CAAAsE,EACGM,CACH,EACAM,IAAA,SAAA/3C,CAAA,MAAAg4C,EAAAH,EAAAb,OAAA,CAAAl6C,IAAA,CAAAkD,GAiBA,OACAi4C,SAfA,WACA,IAAAC,EAAAnhC,SAAAmS,aAAA,aAEA,OADAgvB,EAAArF,SAAA,CAAAmF,EAAAN,MAAA,CACAQ,CAAA,EAaAT,OAVA,WACA,IAAAA,EAAA1gC,SAAAmS,aAAA,WAEA,OADAuuB,EAAA5E,SAAA,CAAAmF,EAAAP,MAAA,CACAA,CAAA,EAQAK,WANA,KAAAA,UAAA,CAAAE,EAAAL,YAAA,CAOG,CACH,EACAhpB,WAAA,SAAAsoB,CAAA,EACA,IAAAroB,EAAAqoB,EAAAroB,KAAA,CACAupB,EAAAlB,EAAAC,MAAA,CAEAC,EAAAF,EAAAE,SAAA,CACAiB,EAAAnB,EAAAG,aAAA,CAEAiB,EAAApB,EAAAM,IAAA,CAEAe,EAAArB,EAAAI,OAAA,CAGAU,EAAA,KAAAA,GAAA,EACA75C,GAAA0wB,EACAsoB,OAXAiB,KAAA53C,IAAA43C,EAAA,GAAAA,CAAA,CAYAhB,UAAAA,GAAA52C,KAAAA,EACA62C,cAVAgB,KAAA73C,IAAA63C,EAAA,YAAAA,CAAA,CAWAb,KATAc,KAAA93C,IAAA83C,EAAA,GAAAA,CAAA,CAUKhB,QATLiB,KAAA/3C,IAAA+3C,EAAA,GAAAA,CAAA,GAWAnB,GAAApgC,SAAAsS,IAAA,CAAAC,WAAA,CAAAyuB,EAAAD,UAAA,EACA/gC,SAAAsS,IAAA,CAAAkvB,YAAA,CAAAR,EAAAN,MAAA,GAAA1gC,SAAAsS,IAAA,CAAAmvB,UAAA,KACGzhC,SAAAyE,IAAA,CAAA+8B,YAAA,CAAAR,EAAAE,QAAA,GAAAlhC,SAAAyE,IAAA,CAAAg9B,UAAA,IACH,EACArB,UAAA,SAAAsB,CAAA,EACA,IAAAb,EAAAa,EAAAtB,SAAA,CACAuB,EAAAD,EAAArB,aAAA,CAAAA,EAAAsB,KAAAn4C,IAAAm4C,EAAA,YAAAA,CAAA,CAGA,GAAAzgC,MAAA,CAAAm/B,EAAA,QAAAn/B,MAAA,CAAAm/B,EAAA,CAAAh/C,IAAA,CAAAw/C,EAAA,CACA,IAAAI,EAAAH,EAAAb,OAAA,CAAAG,SAAA,CAAAS,EAAAR,GACAU,EAAA,KAAAA,UAAA,CAAAE,GACAjhC,SAAAsS,IAAA,CAAAkvB,YAAA,CAAAT,EAAA/gC,SAAAsS,IAAA,CAAAmvB,UAAA,IACA,EAEA,gBAAAhxC,CAAA,CAAAgmB,CAAA,CAAAj1B,CAAA,ECzEa,aAIb,IAE8E4f,EAF9EwgC,EAE8ExgC,CAAAA,EAJtC5f,EAAA,QAIsC4f,EAAA4+B,UAAA,CAAA5+B,EAAA,CAAA6+B,QAAA7+B,CAAA,EAE9E3Q,EAAAqmB,OAAA,CAAA8qB,EAAA3B,OAAA,gBAAA3+C,CAAA,CAAAw1B,CAAA,ECRa,aAGbnqB,OAAAkhB,cAAA,CAAAiJ,EAAA,cACC1wB,MAAC,EACF,GAIe0wB,EAAA,QAHf,SAAA7zB,CAAA,EACAif,QAAAhb,IAAA,eAAAjE,EAAA,CAEe,YAAAzB,CAAA,MAAAqgD,EAAA,SAAAC,CAAA,SAAAtgD,EAAAA,EAAAyB,CAAA,CAAA6+C,EAAA,EAAAtgD,EAAAugD,CAAA,+BAAAF,EAAA,MAAAA,EAAA,MAAAA,EAAA,MAAAA,EAAA,OAAAG,KAAAxgD,EAAAugD,CAAA","sources":["webpack://_N_E/./node_modules/@sentry/hub/esm/exports.js","webpack://_N_E/./node_modules/@sentry/hub/esm/hub.js","webpack://_N_E/./node_modules/@sentry/hub/esm/scope.js","webpack://_N_E/./node_modules/@sentry/hub/esm/session.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/errors.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/hubextensions.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/idletransaction.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/span.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/transaction.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/utils.js","webpack://_N_E/./node_modules/@sentry/utils/esm/baggage.js","webpack://_N_E/./node_modules/@sentry/utils/esm/browser.js","webpack://_N_E/./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","webpack://_N_E/./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","webpack://_N_E/./node_modules/@sentry/utils/esm/global.js","webpack://_N_E/./node_modules/@sentry/utils/esm/instrument.js","webpack://_N_E/./node_modules/@sentry/utils/esm/is.js","webpack://_N_E/./node_modules/@sentry/utils/esm/logger.js","webpack://_N_E/./node_modules/@sentry/utils/esm/misc.js","webpack://_N_E/./node_modules/@sentry/utils/esm/env.js","webpack://_N_E/./node_modules/@sentry/utils/esm/node.js","webpack://_N_E/./node_modules/@sentry/utils/esm/memo.js","webpack://_N_E/./node_modules/@sentry/utils/esm/normalize.js","webpack://_N_E/./node_modules/@sentry/utils/esm/object.js","webpack://_N_E/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://_N_E/./node_modules/@sentry/utils/esm/string.js","webpack://_N_E/./node_modules/@sentry/utils/esm/supports.js","webpack://_N_E/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://_N_E/./node_modules/@sentry/utils/esm/time.js","webpack://_N_E/./node_modules/@sentry/utils/esm/url.js","webpack://_N_E/./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js","webpack://_N_E/./node_modules/next/dist/build/polyfills/process.js","webpack://_N_E/?adc8","webpack://_N_E/./pages/_app.tsx","webpack://_N_E/./node_modules/@sentry/core/esm/version.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://_N_E/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://_N_E/./node_modules/@sentry/core/esm/integration.js","webpack://_N_E/./node_modules/@sentry/core/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/utils/esm/error.js","webpack://_N_E/./node_modules/@sentry/utils/esm/dsn.js","webpack://_N_E/./node_modules/@sentry/utils/esm/envelope.js","webpack://_N_E/./node_modules/@sentry/core/esm/api.js","webpack://_N_E/./node_modules/@sentry/core/esm/envelope.js","webpack://_N_E/./node_modules/@sentry/core/esm/baseclient.js","webpack://_N_E/./node_modules/@sentry/utils/esm/clientreport.js","webpack://_N_E/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://_N_E/./node_modules/@sentry/utils/esm/severity.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://_N_E/./node_modules/@sentry/browser/esm/client.js","webpack://_N_E/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/helpers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://_N_E/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://_N_E/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://_N_E/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://_N_E/./node_modules/@sentry/core/esm/transports/base.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://_N_E/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://_N_E/./node_modules/@sentry/browser/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/react/esm/sdk.js","webpack://_N_E/./node_modules/@sentry/utils/esm/tracing.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/backgroundtab.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/metrics/utils.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/metrics/index.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/request.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/router.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/browser/browsertracing.js","webpack://_N_E/./node_modules/@sentry/tracing/esm/index.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/performance/client.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/utils/metadata.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/utils/userIntegrations.js","webpack://_N_E/./node_modules/@sentry/nextjs/esm/index.client.js","webpack://_N_E/./sentry.client.config.js","webpack://_N_E/./styles/main.scss","webpack://_N_E/./node_modules/next/dist/compiled/process/browser.js","webpack://_N_E/./node_modules/next/router.js","webpack://_N_E/./node_modules/react-gtm-module/dist/Snippets.js","webpack://_N_E/./node_modules/react-gtm-module/dist/TagManager.js","webpack://_N_E/./node_modules/react-gtm-module/dist/index.js","webpack://_N_E/./node_modules/react-gtm-module/dist/utils/warn.js","webpack://_N_E/"],"sourcesContent":["import { getCurrentHub } from './hub.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\nfunction captureException(exception, captureContext) {\n return getCurrentHub().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n var level = typeof captureContext === 'string' ? captureContext : undefined;\n var context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction(\n {\n metadata: { source: 'custom' },\n ...context,\n },\n customSamplingContext,\n );\n}\n\nexport { addBreadcrumb, captureEvent, captureException, captureMessage, configureScope, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withScope };\n//# sourceMappingURL=exports.js.map\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, getGlobalObject, getGlobalSingleton, isNodeEnv } from '@sentry/utils';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nvar API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n __init() {this._stack = [{}];}\n\n /** Contains the last event id of a captured event. */\n \n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new Scope(), _version = API_VERSION) {;this._version = _version;Hub.prototype.__init.call(this);\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n var scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n ) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n var syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n var eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n var timestamp = dateTimestampInSeconds();\n var mergedBreadcrumb = { timestamp, ...breadcrumb };\n var finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n var scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n var scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n var scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n var scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n var scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n setContext(name, context) {\n var scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n var client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n var layer = this.getStackTop();\n var scope = layer && layer.scope;\n var session = scope && scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n var global = getGlobalObject();\n const { userAgent } = global.navigator || {};\n\n var session = makeSession({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n var currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n var client = this.getClient();\n var options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n var session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n _callExtensionMethod(method, ...args) {\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n var sentry = getMainCarrier().__SENTRY__;\n var activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n var __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\nexport { API_VERSION, Hub, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { isPlainObject, dateTimestampInSeconds, getGlobalSingleton, SyncPromise, logger, isThenable, arrayify } from '@sentry/utils';\nimport { updateSession } from './session.js';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n \n\n /** Callback for client to receive scope changes. */\n \n\n /** Callback list that will be called after {@link applyToEvent}. */\n \n\n /** Array of breadcrumbs. */\n \n\n /** User */\n \n\n /** Tags */\n \n\n /** Extra */\n \n\n /** Contexts */\n \n\n /** Attachments */\n \n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n \n\n /** Fingerprint */\n \n\n /** Severity */\n \n\n /** Transaction Name */\n \n\n /** Span */\n \n\n /** Session */\n \n\n /** Request Mode Session Status */\n \n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n var span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n var updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n var maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n var mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n applyToEvent(event, hint = {}) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n var transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n _notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n ) {\n return new SyncPromise((resolve, reject) => {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n var result = processor({ ...event }, hint) ;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n processor.id &&\n result === null &&\n logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\nexport { Scope, addGlobalEventProcessor };\n//# sourceMappingURL=scope.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n var startingTime = timestampInSeconds();\n\n var session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n var duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\nimport { getActiveTransaction } from './utils.js';\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { getMainCarrier } from '@sentry/hub';\nimport { logger, isNaN, dynamicRequire, loadModule, isNodeEnv } from '@sentry/utils';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { Transaction } from './transaction.js';\nimport { hasTracingEnabled } from './utils.js';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n var scope = this.getScope();\n if (scope) {\n var span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n \n transactionContext,\n customSamplingContext,\n) {\n var client = this.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n) {\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, finalTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nfunction _addTracingExtensions() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n var carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n var packageToIntegrationMapping = {\n mongodb() {\n var integration = dynamicRequire(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo();\n },\n mongoose() {\n var integration = dynamicRequire(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n var integration = dynamicRequire(module, './integrations/node/mysql') \n\n;\n return new integration.Mysql();\n },\n pg() {\n var integration = dynamicRequire(module, './integrations/node/postgres') \n\n;\n return new integration.Postgres();\n },\n };\n\n var mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) ;\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nfunction addExtensionMethods() {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n\nexport { _addTracingExtensions, addExtensionMethods, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","import { timestampWithMs, logger } from '@sentry/utils';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nvar DEFAULT_IDLE_TIMEOUT = 1000;\nvar DEFAULT_FINAL_TIMEOUT = 30000;\nvar HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId;;\n }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n __init() {this.activities = {};}\n\n // Track state of activities in previous heartbeat\n \n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n __init2() {this._heartbeatCounter = 0;}\n\n // We should not use heartbeat if we finished a transaction\n __init3() {this._finished = false;}\n\n __init4() {this._beforeFinishCallbacks = [];}\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n \n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = DEFAULT_FINAL_TIMEOUT,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._onScope = _onScope;IdleTransaction.prototype.__init.call(this);IdleTransaction.prototype.__init2.call(this);IdleTransaction.prototype.__init3.call(this);IdleTransaction.prototype.__init4.call(this);;\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = timestampWithMs()) {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (var callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n var pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n var popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n _cancelIdleTimeout() {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n _startIdleTimeout(endTimestamp) {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this._cancelIdleTimeout();\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] popActivity ${spanId}`);\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n var endTimestamp = timestampWithMs() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n var heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, HEARTBEAT_INTERVAL);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n var scope = hub.getScope();\n if (scope) {\n var transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n\nexport { DEFAULT_FINAL_TIMEOUT, DEFAULT_IDLE_TIMEOUT, HEARTBEAT_INTERVAL, IdleTransaction, IdleTransactionSpanRecorder };\n//# sourceMappingURL=idletransaction.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { uuid4, timestampWithMs, logger, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n __init() {this.spans = [];}\n\n constructor(maxlen = 1000) {;SpanRecorder.prototype.__init.call(this);\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n __init2() {this.traceId = uuid4();}\n\n /**\n * @inheritDoc\n */\n __init3() {this.spanId = uuid4().substring(16);}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Internal keeper of the status\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Timestamp in seconds when the span was created.\n */\n __init4() {this.startTimestamp = timestampWithMs();}\n\n /**\n * Timestamp in seconds when the span ended.\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n __init5() {this.tags = {};}\n\n /**\n * @inheritDoc\n */\n __init6() {this.data = {};}\n\n /**\n * List of spans that were finalized\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {;Span.prototype.__init2.call(this);Span.prototype.__init3.call(this);Span.prototype.__init4.call(this);Span.prototype.__init5.call(this);Span.prototype.__init6.call(this);\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n var childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n var opStr = (spanContext && spanContext.op) || '< unknown op >';\n var nameStr = childSpan.transaction.name || '< unknown name >';\n var idStr = childSpan.transaction.spanId;\n\n var logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n logger.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n var spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = _nullishCoalesce(spanContext.data, () => ( {}));\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = _nullishCoalesce(spanContext.spanId, () => ( this.spanId));\n this.startTimestamp = _nullishCoalesce(spanContext.startTimestamp, () => ( this.startTimestamp));\n this.status = spanContext.status;\n this.tags = _nullishCoalesce(spanContext.tags, () => ( {}));\n this.traceId = _nullishCoalesce(spanContext.traceId, () => ( this.traceId));\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\nexport { Span, SpanRecorder, spanStatusfromHttpCode };\n//# sourceMappingURL=span.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { getCurrentHub } from '@sentry/hub';\nimport { logger, dropUndefinedKeys, isBaggageMutable, createBaggage, getSentryBaggageItems } from '@sentry/utils';\nimport { Span, SpanRecorder } from './span.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n \n\n /**\n * The reference to the current hub.\n */\n \n\n __init() {this._measurements = {};}\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);Transaction.prototype.__init.call(this);;\n\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` */\n set name(newName) {\n this._name = newName;\n this.metadata.source = 'custom';\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n this.name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n var client = this._hub.getClient();\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n var finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n var metadata = this.metadata;\n\n var transaction = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n baggage: this.getBaggage(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n var hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n var spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = _nullishCoalesce(transactionContext.name, () => ( ''));\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getBaggage() {\n var existingBaggage = this.metadata.baggage;\n\n // Only add Sentry baggage items to baggage, if baggage does not exist yet or it is still\n // empty and mutable\n var finalBaggage =\n !existingBaggage || isBaggageMutable(existingBaggage)\n ? this._populateBaggageWithSentryValues(existingBaggage)\n : existingBaggage;\n\n // Update the baggage stored on the transaction.\n this.metadata.baggage = finalBaggage;\n\n return finalBaggage;\n }\n\n /**\n * Collects and adds data to the passed baggage object.\n *\n * Note: This function does not explicitly check if the passed baggage object is allowed\n * to be modified. Implicitly, `setBaggageValue` will not make modification to the object\n * if it was already set immutable.\n *\n * After adding the data, the baggage object is set immutable to prevent further modifications.\n *\n * @param baggage\n *\n * @returns modified and immutable baggage object\n */\n _populateBaggageWithSentryValues(baggage = createBaggage({})) {\n var hub = this._hub || getCurrentHub();\n var client = hub && hub.getClient();\n\n if (!client) return baggage;\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n var sample_rate =\n this.metadata &&\n this.metadata.transactionSampling &&\n this.metadata.transactionSampling.rate &&\n this.metadata.transactionSampling.rate.toString();\n\n var scope = hub.getScope();\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n var source = this.metadata.source;\n var transaction = source && source !== 'url' ? this.name : undefined;\n\n return createBaggage(\n dropUndefinedKeys({\n environment,\n release,\n transaction,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n ...getSentryBaggageItems(baggage), // keep user-added values\n } ),\n '',\n false, // set baggage immutable\n );\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { getCurrentHub } from '@sentry/hub';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n var client = getCurrentHub().getClient();\n var options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n var hub = maybeHub || getCurrentHub();\n var scope = hub.getScope();\n return scope && (scope.getTransaction() );\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nfunction secToMs(time) {\n return time * 1000;\n}\n\nexport { getActiveTransaction, hasTracingEnabled, msToSec, secToMs };\n//# sourceMappingURL=utils.js.map\n","import { isString } from './is.js';\nimport { logger } from './logger.js';\n\nvar BAGGAGE_HEADER_NAME = 'baggage';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nvar MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nfunction createBaggage(initItems, baggageString = '', mutable = true) {\n return [{ ...initItems }, baggageString, mutable];\n}\n\n/** Get a value from baggage */\nfunction getBaggageValue(baggage, key) {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nfunction setBaggageValue(baggage, key, value) {\n if (isBaggageMutable(baggage)) {\n baggage[0][key] = value;\n }\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nfunction isSentryBaggageEmpty(baggage) {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Returns Sentry specific baggage values */\nfunction getSentryBaggageItems(baggage) {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nfunction getThirdPartyBaggage(baggage) {\n return baggage[1];\n}\n\n/**\n * Checks if baggage is mutable\n * @param baggage\n * @returns true if baggage is mutable, else false\n */\nfunction isBaggageMutable(baggage) {\n return baggage[2];\n}\n\n/**\n * Sets the passed baggage immutable\n * @param baggage\n */\nfunction setBaggageImmutable(baggage) {\n baggage[2] = false;\n}\n\n/** Serialize a baggage object */\nfunction serializeBaggage(baggage) {\n return Object.keys(baggage[0]).reduce((prev, key) => {\n var val = baggage[0][key] ;\n var baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n var newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/**\n * Parse a baggage header from a string or a string array and return a Baggage object\n *\n * If @param includeThirdPartyEntries is set to true, third party baggage entries are added to the Baggage object\n * (This is necessary for merging potentially pre-existing baggage headers in outgoing requests with\n * our `sentry-` values)\n */\nfunction parseBaggageHeader(\n inputBaggageValue,\n includeThirdPartyEntries = false,\n) {\n // Adding this check here because we got reports of this function failing due to the input value\n // not being a string. This debug log might help us determine what's going on here.\n if ((!Array.isArray(inputBaggageValue) && !isString(inputBaggageValue)) || typeof inputBaggageValue === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n '[parseBaggageHeader] Received input value of incompatible type: ',\n typeof inputBaggageValue,\n inputBaggageValue,\n );\n\n // Gonna early-return an empty baggage object so that we don't fail later on\n return createBaggage({}, '');\n }\n\n var baggageEntries = (isString(inputBaggageValue) ? inputBaggageValue : inputBaggageValue.join(','))\n .split(',')\n .map(entry => entry.trim())\n .filter(entry => entry !== '' && (includeThirdPartyEntries || SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(entry)));\n\n return baggageEntries.reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n var baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n true,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`, true];\n }\n },\n [{}, '', true],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param thirdPartyBaggageHeader possibly existing baggage header string or string[] added from a third\n * party to the request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nfunction mergeAndSerializeBaggage(incomingBaggage, thirdPartyBaggageHeader) {\n if (!incomingBaggage && !thirdPartyBaggageHeader) {\n return '';\n }\n\n var headerBaggage = (thirdPartyBaggageHeader && parseBaggageHeader(thirdPartyBaggageHeader, true)) || undefined;\n var thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n var finalBaggage = createBaggage((incomingBaggage && incomingBaggage[0]) || {}, thirdPartyHeaderBaggage || '');\n return serializeBaggage(finalBaggage);\n}\n\n/**\n * Helper function that takes a raw baggage value (if available) and the processed sentry-trace header\n * data (if available), parses the baggage value and creates a Baggage object. If there is no baggage\n * value, it will create an empty Baggage object.\n *\n * In a second step, this functions determines if the created Baggage object should be set immutable\n * to prevent mutation of the Sentry data. It does this by looking at the processed sentry-trace header.\n *\n * @param rawBaggageValue baggage value from header\n * @param sentryTraceHeader processed Sentry trace header returned from `extractTraceparentData`\n */\nfunction parseBaggageSetMutability(\n rawBaggageValue,\n sentryTraceHeader,\n) {\n var baggage = parseBaggageHeader(rawBaggageValue || '');\n\n // Because we are always creating a Baggage object by calling `parseBaggageHeader` above\n // (either a filled one or an empty one, even if we didn't get a `baggage` header),\n // we only need to check if we have a sentry-trace header or not. As soon as we have it,\n // we set baggage immutable. In case we don't get a sentry-trace header, we can assume that\n // this SDK is the head of the trace and thus we still permit mutation at this time.\n // There is one exception though, which is that we get a baggage-header with `sentry-`\n // items but NO sentry-trace header. In this case we also set the baggage immutable for now\n // but if something like this would ever happen, we should revisit this and determine\n // what this would actually mean for the trace (i.e. is this SDK the head?, what happened\n // before that we don't have a sentry-trace header?, etc)\n (sentryTraceHeader || !isSentryBaggageEmpty(baggage)) && setBaggageImmutable(baggage);\n\n return baggage;\n}\n\nexport { BAGGAGE_HEADER_NAME, MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, createBaggage, getBaggageValue, getSentryBaggageItems, getThirdPartyBaggage, isBaggageMutable, isSentryBaggageEmpty, mergeAndSerializeBaggage, parseBaggageHeader, parseBaggageSetMutability, serializeBaggage, setBaggageImmutable, setBaggageValue };\n//# sourceMappingURL=baggage.js.map\n","import { getGlobalObject } from './global.js';\nimport { isString } from './is.js';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(elem, keyAttrs) {\n \n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n let height = 0;\n let len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n var elem = el \n\n;\n\n var out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n var keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n var global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `var element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\nfunction getDomElement(selector) {\n var global = getGlobalObject();\n if (global.document && global.document.querySelector) {\n return global.document.querySelector(selector) ;\n }\n return null;\n}\n\nexport { getDomElement, getLocationHref, htmlTreeAsString };\n//# sourceMappingURL=browser.js.map\n","/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\nexport { _nullishCoalesce };\n//# sourceMappingURL=_nullishCoalesce.js.map\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n var op = ops[i] ;\n var fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// var op = ops[i];\n// var fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\nexport { _optionalChain };\n//# sourceMappingURL=_optionalChain.js.map\n","import { isNodeEnv } from './node.js';\n\n/** Internal */\n\nvar fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nfunction getGlobalObject() {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' ? window : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n var global = (obj || getGlobalObject()) ;\n var __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n var singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=global.js.map\n","import { getGlobalObject } from './global.js';\nimport { isInstanceOf, isString } from './is.js';\nimport { logger, CONSOLE_LEVELS } from './logger.js';\nimport { fill } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\nimport { supportsNativeFetch, supportsHistory } from './supports.js';\n\nvar global = getGlobalObject();\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nvar handlers = {};\nvar instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (var handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch) {\n return function (...args) {\n var handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs = []) {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs = []) {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n var xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n var xhr = this;\n var url = args[1];\n var xhrInfo = (xhr.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function (...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function ( ...args) {\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nvar debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n var target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n var name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n var proto = (global )[target] && (global )[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n\nexport { addInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","var objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable };\n//# sourceMappingURL=is.js.map\n","import { getGlobalObject, getGlobalSingleton } from './global.js';\n\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n\nvar CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n var global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n var originalConsole = global.console ;\n var wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n var originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n var logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger };\n//# sourceMappingURL=logger.js.map\n","import { getGlobalObject } from './global.js';\nimport { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n var global = getGlobalObject() ;\n var crypto = (global.crypto || global.msCrypto) ;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n var getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n var firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n var exception = (event.exception = event.exception || {});\n var values = (exception.values = exception.values || []);\n var firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n var firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n var defaultMechanism = { type: 'generic', handled: true };\n var currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n var mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\nexport { isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n var hasWeakSet = typeof WeakSet === 'function';\n var inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n for (let i = 0; i < inner.length; i++) {\n var value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\nexport { memoBuilder };\n//# sourceMappingURL=memo.js.map\n","import { isNaN, isSyntheticEvent } from './is.js';\nimport { memoBuilder } from './memo.js';\nimport { convertToPlainObject } from './object.js';\nimport { getFunctionName } from './stacktrace.js';\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\nfunction normalize(input, depth = +Infinity, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n var normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value ;\n }\n\n var stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n var valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n var jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n var normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n var visitable = convertToPlainObject(value );\n\n for (var visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n var visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) ).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\nexport { normalize, normalizeToSize, visit as walk };\n//# sourceMappingURL=normalize.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n var original = source[name] ;\n var wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n var proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n var newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n var extractedProps = {};\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n var keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n var memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (var key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { _optionalChain } from './buildPolyfills';\n\nvar STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n var sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n var frames = [];\n\n for (var line of stack.split('\\n').slice(skipFirst)) {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n var cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n for (var parser of sortedParsers) {\n var frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n var firstFrameFunction = localStack[0].function || '';\n var lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nvar defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\nfunction node(getModule) {\n var FILENAME_MATCH = /^\\s*[-]{4,}$/;\n var FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\n return (line) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n var lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n var objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n var filename = _optionalChain([lineMatch, 'access', _ => _[2], 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3('file://')]) ? lineMatch[2].substr(7) : lineMatch[2];\n var isNative = lineMatch[5] === 'native';\n var isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n var in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: _optionalChain([getModule, 'optionalCall', _4 => _4(filename)]),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\nexport { createStackParser, getFunctionName, nodeStackLineParser, stackParserFromStackParserOptions, stripSentryFramesAndReverse };\n//# sourceMappingURL=stacktrace.js.map\n","import { isString, isRegExp } from './is.js';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n var lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n var output = [];\n for (let i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nfunction isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nfunction escapeStringForRegex(regexString) {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\nexport { escapeStringForRegex, isMatchingPattern, safeJoin, snipLine, truncate };\n//# sourceMappingURL=string.js.map\n","import { getGlobalObject } from './global.js';\nimport { logger } from './logger.js';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n var global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n var doc = global.document;\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n var chrome = (global ).chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { isNativeFetch, supportsDOMError, supportsDOMException, supportsErrorEvent, supportsFetch, supportsHistory, supportsNativeFetch, supportsReferrerPolicy, supportsReportingObserver };\n//# sourceMappingURL=supports.js.map\n","import { isThenable } from './is.js';\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n var PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n var RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n var REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n __init() {this._state = States.PENDING;}\n __init2() {this._handlers = [];}\n \n\n constructor(\n executor,\n ) {;SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);SyncPromise.prototype.__init5.call(this);SyncPromise.prototype.__init6.call(this);\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init3() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init4() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init5() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init6() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n var cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { getGlobalObject } from './global.js';\nimport { dynamicRequire, isNodeEnv } from './node.js';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n var timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nvar timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nvar dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nvar timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nvar timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nvar usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nvar browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n var timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n var timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n var navigationStart = performance.timing && performance.timing.navigationStart;\n var hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n var navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url)\n\n {\n if (!url) {\n return {};\n }\n\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\nexport { getNumberOfUrlSegments, parseUrl, stripUrlQueryAndFragment };\n//# sourceMappingURL=url.js.map\n","var _global = (typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}); _global.SENTRY_RELEASE={id:\"FEsgFSTXEZVnn1HB_lPmU\"};","\"use strict\";\nvar ref, ref1;\nmodule.exports = ((ref = global.process) == null ? void 0 : ref.env) && typeof ((ref1 = global.process) == null ? void 0 : ref1.env) === \"object\" ? global.process : require(\"../../compiled/process\");\n\n//# sourceMappingURL=process.js.map","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return require(\"private-next-pages/_app.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/_app\"])\n });\n }\n ","import '../styles/main.scss';\nimport type { AppProps } from 'next/app';\nimport { useEffect } from 'react';\nimport TagManager from 'react-gtm-module';\n// import { LiveChatWidget, EventHandlerPayload } from '@livechat/widget-react';\n\nconst GTM_ID = process.env.GTM_ID;\n\nfunction MyApp({ Component, pageProps }: AppProps) {\n useEffect(() => {\n // Initialize Google Tag Manager\n if (GTM_ID) {\n TagManager.initialize({ gtmId: GTM_ID });\n }\n }, []);\n\n // // Logs new events from the LiveChat widget, useful for debugging\n // function handleNewEvent(event: EventHandlerPayload<'onNewEvent'>) {\n // console.log('LiveChatWidget.onNewEvent', event);\n // }\n\n return (\n <>\n {/* */}\n \n \n );\n}\n\nexport default MyApp;\n","var SDK_VERSION = '7.12.1';\n\nexport { SDK_VERSION };\n//# sourceMappingURL=version.js.map\n","import { logger, getEventDescription, isMatchingPattern } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = InboundFilters.id;}\n\n constructor( _options = {}) {;this._options = _options;InboundFilters.prototype.__init.call(this);}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcess = (event) => {\n var hub = getCurrentHub();\n if (hub) {\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n var url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n var url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n var frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n\nexport { InboundFilters, _mergeOptions, _shouldDropEvent };\n//# sourceMappingURL=inboundfilters.js.map\n","import { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {constructor() { FunctionToString.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = FunctionToString.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n originalFunctionToString = Function.prototype.toString;\n\n Function.prototype.toString = function ( ...args) {\n var context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n} FunctionToString.__initStatic();\n\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n\nvar installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] );\n}\n\n/** Gets integration to install */\nfunction getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n var userIntegrations = options.integrations;\n\n let integrations = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(i => i.name);\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(integrations) {\n var integrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n\nexport { getIntegrationsToSetup, installedIntegrations, setupIntegrations };\n//# sourceMappingURL=integration.js.map\n","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n var hub = getCurrentHub();\n var scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n\nexport { initAndBind };\n//# sourceMappingURL=sdk.js.map\n","/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n \n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;;\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\nexport { SentryError };\n//# sourceMappingURL=error.js.map\n","import { SentryError } from './error.js';\n\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nfunction dsnFromString(str) {\n var match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n var requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nfunction makeDsn(from) {\n var components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n\nexport { dsnFromString, dsnToString, makeDsn };\n//# sourceMappingURL=dsn.js.map\n","import { dropUndefinedKeys } from './object.js';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n var envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem) => {\n var envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input, textEncoder) {\n var utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (var item of items) {\n const [itemHeaders, payload] = item ;\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n append(typeof payload === 'string' || payload instanceof Uint8Array ? payload : JSON.stringify(payload));\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n var totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n var merged = new Uint8Array(totalLength);\n let offset = 0;\n for (var buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n var buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n dropUndefinedKeys({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nvar ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\nexport { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, envelopeItemTypeToDataCategory, forEachEnvelopeItem, serializeEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { urlEncode, makeDsn, dsnToString } from '@sentry/utils';\n\nvar SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n var protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n var port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n var tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n var sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n var dsn = makeDsn(dsnLike);\n var endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n var user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint };\n//# sourceMappingURL=api.js.map\n","import { dsnToString, createEnvelope, dropUndefinedKeys, getSentryBaggageItems } from '@sentry/utils';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(metadata) {\n if (!metadata || !metadata.sdk) {\n return;\n }\n const { name, version } = metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n };\n\n var envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n var envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n var eventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n var baggage = event.sdkProcessingMetadata && event.sdkProcessingMetadata.baggage;\n var dynamicSamplingContext = baggage && getSentryBaggageItems(baggage);\n\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsnToString(dsn) }),\n ...(event.type === 'transaction' &&\n dynamicSamplingContext && {\n trace: dropUndefinedKeys({ ...dynamicSamplingContext }) ,\n }),\n };\n}\n\nexport { createEventEnvelope, createSessionEnvelope };\n//# sourceMappingURL=envelope.js.map\n","import { updateSession, Scope } from '@sentry/hub';\nimport { makeDsn, logger, checkOrSetAlreadyCaught, isPrimitive, resolvedSyncPromise, addItemToEnvelope, createAttachmentEnvelopeItem, SyncPromise, uuid4, dateTimestampInSeconds, normalize, truncate, rejectedSyncPromise, SentryError, isThenable, isPlainObject } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegrations } from './integration.js';\n\nvar ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n \n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n \n\n /** Array of set up integrations. */\n __init() {this._integrations = {};}\n\n /** Indicates whether this client's integrations have been set up. */\n __init2() {this._integrationsInitialized = false;}\n\n /** Number of calls being processed */\n __init3() {this._numProcessing = 0;}\n\n /** Holds flushable */\n __init4() {this._outcomes = {};}\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {;BaseClient.prototype.__init.call(this);BaseClient.prototype.__init2.call(this);BaseClient.prototype.__init3.call(this);BaseClient.prototype.__init4.call(this);\n this._options = options;\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n var promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n var transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (var attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n var env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category) {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n var key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n var exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (var ex of exceptions) {\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n var sessionNonTerminal = session.status === 'ok';\n var shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n var tick = 1;\n\n var interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(event, hint, scope) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = this.getOptions();\n var prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || uuid4(),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n var attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n _normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n var normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = normalize(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = normalize(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n _applyClientOptions(event) {\n var options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n _applyIntegrationsMetadata(event) {\n var integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n var sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned null, will not send event.', 'log');\n }\n\n var isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n var beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError('`beforeSend` returned `null`, will not send event.', 'log');\n }\n\n var session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason ,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n var outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n \n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv) {\n var nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n var clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { isEvent, extractExceptionKeysForMessage, normalizeToSize, addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n var frames = parseStackFrames(stackParser, ex);\n\n var exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n var frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace || ex.stack || '';\n\n var popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n level = 'info',\n hint,\n attachStacktrace,\n) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception ) || isDOMException(exception )) {\n var domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n var name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n var objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n var event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n var frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nvar validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nfunction severityFromString(level) {\n return severityLevelFromString(level) ;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\nexport { severityFromString, severityLevelFromString, validSeverityLevels };\n//# sourceMappingURL=severity.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, htmlTreeAsString, severityLevelFromString, safeJoin, getGlobalObject, parseUrl } from '@sentry/utils';\n\n/** JSDoc */\n\nvar BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Breadcrumbs.id;}\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;Breadcrumbs.prototype.__init.call(this);\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n setupOnce() {\n if (this.options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n} Breadcrumbs.__initStatic();\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom) {\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target , keyAttrs)\n : htmlTreeAsString(handlerData.event , keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n var global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\nexport { BREADCRUMB_INTEGRATION_ID, Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map\n","import { getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nvar global = getGlobalObject();\nlet cachedFetchImpl;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * var f = window.fetch;\n * window.fetch = function () {\n * var p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n var document = global.document;\n let fetchImpl = global.fetch;\n if (document && typeof document.createElement === 'function') {\n try {\n var sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n var contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n }\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nfunction sendReport(url, body) {\n var isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n var hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n var sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n sendBeacon(url, body);\n } else if (supportsFetch()) {\n var fetch = getNativeFetchImplementation();\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }).then(null, error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(error);\n });\n }\n}\n\nexport { getNativeFetchImplementation, sendReport };\n//# sourceMappingURL=utils.js.map\n","import { BaseClient, SDK_VERSION, getCurrentHub, getEnvelopeEndpointWithUrlEncodedAuth } from '@sentry/core';\nimport { getGlobalObject, getEventDescription, logger, createClientReportEnvelope, dsnToString, serializeEnvelope } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { BREADCRUMB_INTEGRATION_ID } from './integrations/breadcrumbs.js';\nimport { sendReport } from './transports/utils.js';\n\nvar globalObject = getGlobalObject();\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n var breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n var outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('Sending outcomes:', outcomes);\n\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options);\n var envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error(e);\n }\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { createStackParser } from '@sentry/utils';\n\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n\nvar OPERA10_PRIORITY = 10;\nvar OPERA11_PRIORITY = 20;\nvar CHROME_PRIORITY = 30;\nvar WINJS_PRIORITY = 40;\nvar GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n var frame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chromeRegex =\n /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nvar chrome = line => {\n var parts = chromeRegex.exec(line);\n\n if (parts) {\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n var subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nvar chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nvar gecko = line => {\n var parts = geckoREgex.exec(line);\n\n if (parts) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n var subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nvar geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nvar winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nvar winjs = line => {\n var parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nvar winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nvar opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nvar opera10 = line => {\n var parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nvar opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nvar opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nvar opera11 = line => {\n var parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nvar opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nvar defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nvar defaultStackParser = createStackParser(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nvar extractSafariExtensionDetails = (func, filename) => {\n var isSafariExtension = func.indexOf('safari-extension') !== -1;\n var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\nexport { chromeStackLineParser, defaultStackLineParsers, defaultStackParser, geckoStackLineParser, opera10StackLineParser, opera11StackLineParser, winjsStackLineParser };\n//# sourceMappingURL=stack-parsers.js.map\n","import { withScope, captureException } from '@sentry/core';\nimport { getOriginalFunction, addExceptionTypeValue, addExceptionMechanism, markFunctionWrapped, addNonEnumerableProperty } from '@sentry/utils';\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n ) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n var wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n var wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope) => {\n scope.addEventProcessor((event) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n \n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} \n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\nexport { ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { getGlobalObject, fill, getFunctionName, getOriginalFunction } from '@sentry/utils';\nimport { wrap } from '../helpers.js';\n\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = TryCatch.id;}\n\n /** JSDoc */\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;TryCatch.prototype.__init.call(this);\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n setupOnce() {\n var global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n var eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n var eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n return function ( ...args) {\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapRAF(original) {\n return function ( callback) {\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n return function ( ...args) {\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n var originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n var global = getGlobalObject() ;\n var proto = global[target] && global[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original)\n\n {\n return function (\n \n eventName,\n fn,\n options,\n ) {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n wrap(fn , {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener,\n ) {\n return function (\n \n eventName,\n fn,\n options,\n ) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n var wrappedEventHandler = fn ;\n try {\n var originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map\n","import { getCurrentHub } from '@sentry/core';\nimport { addInstrumentationHandler, isString, isPrimitive, isErrorEvent, getLocationHref, logger, addExceptionMechanism } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder.js';\nimport { shouldIgnoreOnError } from '../helpers.js';\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = GlobalHandlers.id;}\n\n /** JSDoc */\n \n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n __init2() {this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };}\n\n /** JSDoc */\n constructor(options) {;GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\n Error.stackTraceLimit = 50;\n var options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n for (var key in options) {\n var installFunc = this._installFunc[key ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n addInstrumentationHandler(\n 'error',\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n var event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n addInstrumentationHandler(\n 'unhandledrejection',\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n var event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n var ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n var event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n var e = (event.exception = event.exception || {});\n // event.exception.values\n var ev = (e.values = e.values || []);\n // event.exception.values[0]\n var ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n var ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n var ev0sf = (ev0s.frames = ev0s.frames || []);\n\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n var hub = getCurrentHub();\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map\n","import { getCurrentHub, addGlobalEventProcessor } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromError } from '../eventbuilder.js';\n\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = LinkedErrors.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {;LinkedErrors.prototype.__init.call(this);\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n var client = getCurrentHub().getClient();\n if (!client) {\n return;\n }\n addGlobalEventProcessor((event, hint) => {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n} LinkedErrors.__initStatic();\n\n/**\n * @inheritDoc\n */\nfunction _handler(\n parser,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = _walkErrorTree(parser, limit, hint.originalException , key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nfunction _walkErrorTree(\n parser,\n limit,\n error,\n key,\n stack = [],\n) {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n var exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n\nexport { LinkedErrors, _handler, _walkErrorTree };\n//# sourceMappingURL=linkederrors.js.map\n","import { logger } from '@sentry/utils';\n\n/** Deduplication filter */\nclass Dedupe {constructor() { Dedupe.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Dedupe.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcessor = currentEvent => {\n var self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n var previousException = _getExceptionFromEvent(previousEvent);\n var currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n var exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\nexport { Dedupe };\n//# sourceMappingURL=dedupe.js.map\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nvar global = getGlobalObject();\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {constructor() { HttpContext.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = HttpContext.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n addGlobalEventProcessor((event) => {\n if (getCurrentHub().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n var url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n var headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n var request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n} HttpContext.__initStatic();\n\nexport { HttpContext };\n//# sourceMappingURL=httpcontext.js.map\n","import { SentryError } from './error.js';\nimport { rejectedSyncPromise, SyncPromise, resolvedSyncPromise } from './syncpromise.js';\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n var buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n var task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n var capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\nexport { makePromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map\n","// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nvar DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n var headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n var headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n var updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n var rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n var retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (var limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n var headerDelay = parseInt(retryAfter, 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (var category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\nexport { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits };\n//# sourceMappingURL=ratelimit.js.map\n","import { makePromiseBuffer, forEachEnvelopeItem, envelopeItemTypeToDataCategory, isRateLimited, resolvedSyncPromise, createEnvelope, serializeEnvelope, logger, updateRateLimits, SentryError } from '@sentry/utils';\n\nvar DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n) {\n let rateLimits = {};\n\n var flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n var filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n var envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return resolvedSyncPromise();\n }\n\n var filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n var recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n var requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return resolvedSyncPromise();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\nexport { DEFAULT_TRANSPORT_BUFFER_SIZE, createTransport };\n//# sourceMappingURL=base.js.map\n","import { createTransport } from '@sentry/core';\nimport { getNativeFetchImplementation } from './utils.js';\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n function makeRequest(request) {\n var requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n ...options.fetchOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeFetchTransport };\n//# sourceMappingURL=fetch.js.map\n","import { createTransport } from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nvar XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n function makeRequest(request) {\n return new SyncPromise((resolve, reject) => {\n var xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (var header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n\nexport { makeXHRTransport };\n//# sourceMappingURL=xhr.js.map\n","import { Integrations, getIntegrationsToSetup, initAndBind, getCurrentHub, getReportDialogEndpoint } from '@sentry/core';\nimport { getGlobalObject, stackParserFromStackParserOptions, supportsFetch, logger, resolvedSyncPromise, addInstrumentationHandler } from '@sentry/utils';\nimport { BrowserClient } from './client.js';\nimport { wrap as wrap$1 } from './helpers.js';\nimport './integrations/index.js';\nimport { defaultStackParser } from './stack-parsers.js';\nimport './transports/index.js';\nimport { TryCatch } from './integrations/trycatch.js';\nimport { Breadcrumbs } from './integrations/breadcrumbs.js';\nimport { GlobalHandlers } from './integrations/globalhandlers.js';\nimport { LinkedErrors } from './integrations/linkederrors.js';\nimport { Dedupe } from './integrations/dedupe.js';\nimport { HttpContext } from './integrations/httpcontext.js';\nimport { makeFetchTransport } from './transports/fetch.js';\nimport { makeXHRTransport } from './transports/xhr.js';\n\nvar defaultIntegrations = [\n new Integrations.InboundFilters(),\n new Integrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n var clientOptions = {\n ...options,\n stackParser: stackParserFromStackParserOptions(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || (supportsFetch() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n var global = getGlobalObject();\n if (!global.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n var dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n var script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n var injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nfunction wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n var window = getGlobalObject();\n var document = window.document;\n\n if (typeof document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n var hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n\nexport { close, defaultIntegrations, flush, forceLoad, init, lastEventId, onLoad, showReportDialog, wrap };\n//# sourceMappingURL=sdk.js.map\n","import { SDK_VERSION, init as init$1 } from '@sentry/browser';\n\n/**\n * Inits the React SDK\n */\nfunction init(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n init$1(options);\n}\n\nexport { init };\n//# sourceMappingURL=sdk.js.map\n","var TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n\nexport { TRACEPARENT_REGEXP, extractTraceparentData };\n//# sourceMappingURL=tracing.js.map\n","import { getGlobalObject, logger } from '@sentry/utils';\nimport { getActiveTransaction } from '../utils.js';\n\nvar global = getGlobalObject();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n var activeTransaction = getActiveTransaction() ;\n if (global.document.hidden && activeTransaction) {\n var statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\nexport { registerBackgroundTabDetection };\n//# sourceMappingURL=backgroundtab.js.map\n","var bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","/*\n * Copyright 2020 Google LLC\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 * https://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\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nvar generateUniqueID = () => {\n return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { generateUniqueID } from './generateUniqueID.js';\n\nvar initMetric = (name, value) => {\n return {\n name,\n value: _nullishCoalesce(value, () => ( -1)),\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/*\n * Copyright 2020 Google LLC\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 * https://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\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nvar observe = (type, callback) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n\n var po = new PerformanceObserver(l => l.getEntries().map(callback));\n\n po.observe({ type, buffered: true });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { getGlobalObject } from '@sentry/utils';\n\n/*\n * Copyright 2020 Google LLC\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 * https://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 onHidden = (cb, once) => {\n var onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\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 * https://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\n// https://wicg.github.io/layout-instability/#sec-layout-shift\n\nvar getCLS = (onReport, reportAllChanges) => {\n var metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n var entryHandler = (entry) => {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n var firstSessionEntry = sessionEntries[0];\n var lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n\n var po = observe('layout-shift', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n report(true);\n });\n }\n};\n\nexport { getCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { getGlobalObject } from '@sentry/utils';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\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 * https://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\nlet firstHiddenTime = -1;\n\nvar initHiddenTime = () => {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nvar trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nvar getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\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 * https://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 getFID = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('FID');\n let report;\n\n var entryHandler = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n var po = observe('first-input', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n }, true);\n }\n};\n\nexport { getFID };\n//# sourceMappingURL=getFID.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\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 * https://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\n// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\n\nvar reportedMetricIDs = {};\n\nvar getLCP = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('LCP');\n let report;\n\n var entryHandler = (entry) => {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n var value = entry.startTime;\n\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n\n if (report) {\n report();\n }\n };\n\n var po = observe('largest-contentful-paint', entryHandler);\n\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n var stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n\nexport { getLCP };\n//# sourceMappingURL=getLCP.js.map\n","/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\nexport { _startChild, isMeasurementValue };\n//# sourceMappingURL=utils.js.map\n","import { _nullishCoalesce } from '@sentry/utils/esm/buildPolyfills';\nimport { getGlobalObject, browserPerformanceTimeOrigin, logger, htmlTreeAsString } from '@sentry/utils';\nimport { getActiveTransaction, msToSec } from '../../utils.js';\nimport { getCLS } from '../web-vitals/getCLS.js';\nimport { getFID } from '../web-vitals/getFID.js';\nimport { getLCP } from '../web-vitals/getLCP.js';\nimport { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher.js';\nimport { observe } from '../web-vitals/lib/observe.js';\nimport { _startChild, isMeasurementValue } from './utils.js';\n\nvar global = getGlobalObject();\n\nfunction getBrowserPerformanceAPI() {\n return global && global.addEventListener && global.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n */\nfunction startTrackingWebVitals(reportAllChanges = false) {\n var performance = getBrowserPerformanceAPI();\n if (performance && browserPerformanceTimeOrigin) {\n if (performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n var entryHandler = (entry) => {\n var transaction = getActiveTransaction() ;\n if (!transaction) {\n return;\n }\n var startTime = msToSec((browserPerformanceTimeOrigin ) + entry.startTime);\n var duration = msToSec(entry.duration);\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n };\n\n observe('longtask', entryHandler);\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges) {\n getLCP(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n }, reportAllChanges);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n getFID(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n var timeOrigin = msToSec(browserPerformanceTimeOrigin );\n var startTime = msToSec(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n var performance = getBrowserPerformanceAPI();\n if (!performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n var timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n var performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n var startTime = msToSec(entry.startTime);\n var duration = msToSec(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n var firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n var shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n var resourceName = (entry.name ).replace(global.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n var oldValue = _measurements[name].value;\n var measurementTimestamp = timeOrigin + msToSec(oldValue);\n\n // normalizedValue should be in milliseconds\n var normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n var delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n var fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + msToSec(_measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n var measureStartTimestamp = timeOrigin + startTime;\n var measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n var end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n var start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: _nullishCoalesce(description, () => ( event)),\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart ),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n var data = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n var startTimestamp = timeOrigin + startTime;\n var endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n var navigator = global.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n var connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n\n if (isMeasurementValue(connection.downlink)) {\n _measurements['connection.downlink'] = { value: connection.downlink, unit: '' }; // unit is empty string for now, while relay doesn't support download speed units\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n\nexport { _addMeasureSpans, _addResourceSpans, addPerformanceEntries, startTrackingLongTasks, startTrackingWebVitals };\n//# sourceMappingURL=index.js.map\n","import { isMatchingPattern, addInstrumentationHandler, isInstanceOf, BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage } from '@sentry/utils';\nimport { hasTracingEnabled, getActiveTransaction } from '../utils.js';\n\nvar DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\n\nvar defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n var urlMap = {};\n\n var defaultShouldCreateSpan = (url) => {\n if (urlMap[url]) {\n return urlMap[url];\n }\n var origins = tracingOrigins;\n urlMap[url] =\n origins.some((origin) => isMatchingPattern(url, origin)) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n let shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = (url) => {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n\n var spans = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData) => {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData) => {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n var spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n var request = (handlerData.args[0] = handlerData.args[0] );\n var options = (handlerData.args[1] = (handlerData.args[1] ) || {});\n options.headers = addTracingHeaders(request, activeTransaction.getBaggage(), span, options);\n }\n}\n\nfunction addTracingHeaders(\n request,\n incomingBaggage,\n span,\n options,\n) {\n let headers = options.headers;\n\n if (isInstanceOf(request, Request)) {\n headers = (request ).headers;\n }\n\n if (headers) {\n if (typeof headers.append === 'function') {\n headers.append('sentry-trace', span.toTraceparent());\n headers.append(BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headers.get(BAGGAGE_HEADER_NAME)));\n } else if (Array.isArray(headers)) {\n const [, headerBaggageString] = headers.find(([key, _]) => key === BAGGAGE_HEADER_NAME);\n headers = [\n ...headers,\n ['sentry-trace', span.toTraceparent()],\n [BAGGAGE_HEADER_NAME, mergeAndSerializeBaggage(incomingBaggage, headerBaggageString)],\n ];\n } else {\n headers = {\n ...headers,\n 'sentry-trace': span.toTraceparent(),\n baggage: mergeAndSerializeBaggage(incomingBaggage, headers.baggage),\n };\n }\n } else {\n headers = { 'sentry-trace': span.toTraceparent(), baggage: mergeAndSerializeBaggage(incomingBaggage) };\n }\n return headers;\n}\n\n/**\n * Create and track xhr request spans\n */\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n var xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n var spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n var activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n var headerBaggageString =\n handlerData.xhr.getRequestHeader && handlerData.xhr.getRequestHeader(BAGGAGE_HEADER_NAME);\n\n handlerData.xhr.setRequestHeader(\n BAGGAGE_HEADER_NAME,\n mergeAndSerializeBaggage(activeTransaction.getBaggage(), headerBaggageString),\n );\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n\nexport { DEFAULT_TRACING_ORIGINS, defaultRequestInstrumentationOptions, fetchCallback, instrumentOutgoingRequests, xhrCallback };\n//# sourceMappingURL=request.js.map\n","import { getGlobalObject, logger, addInstrumentationHandler } from '@sentry/utils';\n\nvar global = getGlobalObject();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!global || !global.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = global.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: global.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\nexport { instrumentRoutingWithDefaults };\n//# sourceMappingURL=router.js.map\n","import { _optionalChain } from '@sentry/utils/esm/buildPolyfills';\nimport { logger, getGlobalObject, extractTraceparentData, parseBaggageSetMutability, getDomElement } from '@sentry/utils';\nimport { startIdleTransaction } from '../hubextensions.js';\nimport { DEFAULT_IDLE_TIMEOUT, DEFAULT_FINAL_TIMEOUT } from '../idletransaction.js';\nimport '../utils.js';\nimport { registerBackgroundTabDetection } from './backgroundtab.js';\nimport { startTrackingWebVitals, startTrackingLongTasks, addPerformanceEntries } from './metrics/index.js';\nimport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request.js';\nimport { instrumentRoutingWithDefaults } from './router.js';\n\nvar BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nvar DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n finalTimeout: DEFAULT_FINAL_TIMEOUT,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n _experiments: { enableLongTask: true },\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n \n\n /**\n * @inheritDoc\n */\n __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}\n\n constructor(_options) {;BrowserTracing.prototype.__init.call(this);\n let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins)) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && (this._emitOptionsWarning = true);\n }\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n tracingOrigins,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n if (_optionalChain([this, 'access', _2 => _2.options, 'access', _3 => _3._experiments, 'optionalAccess', _4 => _4.enableLongTask])) {\n startTrackingLongTasks();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n\n if (this._emitOptionsWarning) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n );\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(\n `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n );\n }\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const { beforeNavigate, idleTimeout, finalTimeout } = this.options;\n\n var parentContextFromHeader = context.op === 'pageload' ? extractTraceDataFromMetaTags() : undefined;\n\n var expandedContext = {\n ...context,\n ...parentContextFromHeader,\n ...(parentContextFromHeader && {\n metadata: {\n ...context.metadata,\n ...parentContextFromHeader.metadata,\n },\n }),\n trimEnd: true,\n };\n var modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n var finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n var hub = this._getCurrentHub();\n const { location } = getGlobalObject() ;\n\n var idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction ;\n }\n}\n\n/**\n * Gets transaction context data from `sentry-trace` and `baggage` tags.\n * @returns Transaction context data or undefined neither tag exists or has valid data\n */\nfunction extractTraceDataFromMetaTags() {\n var sentrytraceValue = getMetaContent('sentry-trace');\n var baggageValue = getMetaContent('baggage');\n\n var sentrytraceData = sentrytraceValue ? extractTraceparentData(sentrytraceValue) : undefined;\n var baggage = parseBaggageSetMutability(baggageValue, sentrytraceValue);\n\n // TODO more extensive checks for baggage validity/emptyness?\n if (sentrytraceData || baggage) {\n return {\n ...(sentrytraceData && sentrytraceData),\n ...(baggage && { metadata: { baggage } }),\n };\n }\n\n return undefined;\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n var metaTag = getDomElement(`meta[name=${metaName}]`);\n return metaTag ? metaTag.getAttribute('content') : null;\n}\n\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing, extractTraceDataFromMetaTags, getMetaContent };\n//# sourceMappingURL=browsertracing.js.map\n","import { addExtensionMethods } from './hubextensions.js';\nexport { addExtensionMethods, startIdleTransaction } from './hubextensions.js';\nimport * as index from './integrations/index.js';\nexport { index as Integrations };\nimport './browser/index.js';\nexport { Span, spanStatusfromHttpCode } from './span.js';\nexport { SpanStatus } from './spanstatus.js';\nexport { Transaction } from './transaction.js';\nexport { IdleTransaction } from './idletransaction.js';\nexport { getActiveTransaction, hasTracingEnabled } from './utils.js';\nexport { BROWSER_TRACING_INTEGRATION_ID, BrowserTracing } from './browser/browsertracing.js';\nexport { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './browser/request.js';\nexport { TRACEPARENT_REGEXP, extractTraceparentData, stripUrlQueryAndFragment } from '@sentry/utils';\n\n;\n;\n\n// Treeshakable guard to remove all code related to tracing\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n addExtensionMethods();\n}\n//# sourceMappingURL=index.js.map\n","import { getCurrentHub } from '@sentry/hub';\nimport { getGlobalObject, logger, extractTraceparentData, parseBaggageHeader, fill, stripUrlQueryAndFragment } from '@sentry/utils';\nimport Router from 'next/router';\n\nvar global = getGlobalObject();\n\n/**\n * Every Next.js page (static and dynamic ones) comes with a script tag with the id \"__NEXT_DATA__\". This script tag\n * contains a JSON object with data that was either generated at build time for static pages (`getStaticProps`), or at\n * runtime with data fetchers like `getServerSideProps.`.\n *\n * We can use this information to:\n * - Always get the parameterized route we're in when loading a page.\n * - Send trace information (trace-id, baggage) from the server to the client.\n *\n * This function extracts this information.\n */\nfunction extractNextDataTagInformation() {\n let nextData;\n // Let's be on the safe side and actually check first if there is really a __NEXT_DATA__ script tag on the page.\n // Theoretically this should always be the case though.\n var nextDataTag = global.document.getElementById('__NEXT_DATA__');\n if (nextDataTag && nextDataTag.innerHTML) {\n try {\n nextData = JSON.parse(nextDataTag.innerHTML);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Could not extract __NEXT_DATA__');\n }\n }\n\n if (!nextData) {\n return {};\n }\n\n var nextDataTagInfo = {};\n\n const { page, query, props } = nextData;\n\n // `nextData.page` always contains the parameterized route - except for when an error occurs in a data fetching\n // function, then it is \"/_error\", but that isn't a problem since users know which route threw by looking at the\n // parent transaction\n nextDataTagInfo.route = page;\n nextDataTagInfo.params = query;\n\n if (props && props.pageProps) {\n if (props.pageProps._sentryBaggage) {\n nextDataTagInfo.baggage = props.pageProps._sentryBaggage;\n }\n\n if (props.pageProps._sentryTraceData) {\n nextDataTagInfo.traceParentData = extractTraceparentData(props.pageProps._sentryTraceData);\n }\n }\n\n return nextDataTagInfo;\n}\n\nvar DEFAULT_TAGS = {\n 'routing.instrumentation': 'next-router',\n} ;\n\nlet activeTransaction = undefined;\nlet startTransaction = undefined;\n\n// We keep track of the previous page location so we can avoid creating transactions when navigating to the same page.\n// This variable should always contain a pathname. (without query string or fragment)\n// We are making a tradeoff by not starting transactions when just the query string changes. One could argue that we\n// should in fact start transactions when the query changes, however, in some cases (for example when typing in a search\n// box) the query might change multiple times a second, resulting in way too many transactions.\n// Because we currently don't have a real way of preventing transactions to be created in this case (except for the\n// shotgun approach `startTransactionOnLocationChange: false`), we won't start transactions when *just* the query changes.\nlet previousLocation = undefined;\n\n// We keep track of the previous transaction name so we can set the `from` field on navigation transactions.\nlet prevTransactionName = undefined;\n\nvar client = getCurrentHub().getClient();\n\n/**\n * Creates routing instrumention for Next Router. Only supported for\n * client side routing. Works for Next >= 10.\n *\n * Leverages the SingletonRouter from the `next/router` to\n * generate pageload/navigation transactions and parameterize\n * transaction names.\n */\nfunction nextRouterInstrumentation(\n startTransactionCb,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n startTransaction = startTransactionCb;\n\n if (startTransactionOnPageLoad) {\n const { route, traceParentData, baggage, params } = extractNextDataTagInformation();\n\n prevTransactionName = route || global.location.pathname;\n previousLocation = global.location.pathname;\n\n var source = route ? 'route' : 'url';\n\n activeTransaction = startTransactionCb({\n name: prevTransactionName,\n op: 'pageload',\n tags: DEFAULT_TAGS,\n ...(params && client && client.getOptions().sendDefaultPii && { data: params }),\n ...traceParentData,\n metadata: {\n source,\n ...(baggage && { baggage: parseBaggageHeader(baggage) }),\n },\n });\n }\n\n Router.ready(() => {\n // Spans that aren't attached to any transaction are lost; so if transactions aren't\n // created (besides potentially the onpageload transaction), no need to wrap the router.\n if (!startTransactionOnLocationChange) return;\n\n // `withRouter` uses `useRouter` underneath:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/with-router.tsx#L21\n // Router events also use the router:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/router.ts#L92\n // `Router.changeState` handles the router state changes, so it may be enough to only wrap it\n // (instead of wrapping all of the Router's functions).\n var routerPrototype = Object.getPrototypeOf(Router.router);\n fill(routerPrototype, 'changeState', changeStateWrapper);\n });\n}\n\n/**\n * Wraps Router.changeState()\n * https://github.com/vercel/next.js/blob/da97a18dafc7799e63aa7985adc95f213c2bf5f3/packages/next/next-server/lib/router/router.ts#L1204\n * Start a navigation transaction every time the router changes state.\n */\nfunction changeStateWrapper(originalChangeStateWrapper) {\n return function wrapper(\n \n method,\n // The parameterized url, ex. posts/[id]/[comment]\n url,\n // The actual url, ex. posts/85/my-comment\n as,\n options,\n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n ...args\n ) {\n var newTransactionName = stripUrlQueryAndFragment(url);\n\n // do not start a transaction if it's from the same page\n if (startTransaction !== undefined && previousLocation !== as) {\n previousLocation = as;\n\n if (activeTransaction) {\n activeTransaction.finish();\n }\n\n var tags = {\n ...DEFAULT_TAGS,\n method,\n ...options,\n };\n\n if (prevTransactionName) {\n tags.from = prevTransactionName;\n }\n\n prevTransactionName = newTransactionName;\n activeTransaction = startTransaction({\n name: prevTransactionName,\n op: 'navigation',\n tags,\n metadata: { source: 'route' },\n });\n }\n return originalChangeStateWrapper.call(this, method, url, as, options, ...args);\n };\n}\n\nexport { nextRouterInstrumentation };\n//# sourceMappingURL=client.js.map\n","import { SDK_VERSION } from '@sentry/core';\n\nvar PACKAGE_NAME_PREFIX = 'npm:@sentry/';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n * @param options sdk options object that gets mutated\n * @param names list of package names\n */\nfunction buildMetadata(options, names) {\n options._metadata = options._metadata || {};\n options._metadata.sdk =\n options._metadata.sdk ||\n ({\n name: 'sentry.javascript.nextjs',\n packages: names.map(name => ({\n name: `${PACKAGE_NAME_PREFIX}${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n } );\n}\n\nexport { buildMetadata };\n//# sourceMappingURL=metadata.js.map\n","/**\n * Recursively traverses an object to update an existing nested key.\n * Note: The provided key path must include existing properties,\n * the function will not create objects while traversing.\n *\n * @param obj An object to update\n * @param value The value to update the nested key with\n * @param keyPath The path to the key to update ex. fizz.buzz.foo\n */\nfunction setNestedKey(obj, keyPath, value) {\n // Ex. foo.bar.zoop will extract foo and bar.zoop\n var match = keyPath.match(/([a-z]+)\\.(.*)/i);\n if (match === null) {\n obj[keyPath] = value;\n } else {\n setNestedKey(obj[match[1]], match[2], value);\n }\n}\n\n/**\n * Retrieves the patched integrations with the provided integration.\n *\n * The integration must be present in the final user integrations, and they are compared\n * by integration name. If the user has defined one, there's nothing to patch; if not,\n * the provided integration is added.\n *\n * @param integration The integration to patch, if necessary.\n * @param userIntegrations Integrations defined by the user.\n * @param options options to update for a particular integration\n * @returns Final integrations, patched if necessary.\n */\nfunction addIntegration(\n integration,\n userIntegrations,\n options = {},\n) {\n if (Array.isArray(userIntegrations)) {\n return addIntegrationToArray(integration, userIntegrations, options);\n } else {\n return addIntegrationToFunction(integration, userIntegrations, options);\n }\n}\n\nfunction addIntegrationToArray(\n integration,\n userIntegrations,\n options,\n) {\n let includesName = false;\n for (let x = 0; x < userIntegrations.length; x++) {\n if (userIntegrations[x].name === integration.name) {\n includesName = true;\n }\n\n var op = options[userIntegrations[x].name];\n if (op) {\n setNestedKey(userIntegrations[x], op.keyPath, op.value);\n }\n }\n\n if (includesName) {\n return userIntegrations;\n }\n return [...userIntegrations, integration];\n}\n\nfunction addIntegrationToFunction(\n integration,\n userIntegrationsFunc,\n options,\n) {\n var wrapper = defaultIntegrations => {\n var userFinalIntegrations = userIntegrationsFunc(defaultIntegrations);\n return addIntegrationToArray(integration, userFinalIntegrations, options);\n };\n return wrapper;\n}\n\nexport { addIntegration };\n//# sourceMappingURL=userIntegrations.js.map\n","import { init as init$1, configureScope } from '@sentry/react';\nexport * from '@sentry/react';\nexport { Integrations } from '@sentry/react';\nimport { BrowserTracing, defaultRequestInstrumentationOptions } from '@sentry/tracing';\nexport { BrowserTracing } from '@sentry/tracing';\nimport { nextRouterInstrumentation } from './performance/client.js';\nexport { nextRouterInstrumentation } from './performance/client.js';\nimport { buildMetadata } from './utils/metadata.js';\nimport { addIntegration } from './utils/userIntegrations.js';\nexport { captureUnderscoreErrorException } from './utils/_error.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/** Inits the Sentry NextJS SDK on the browser with the React SDK. */\nfunction init(options) {\n buildMetadata(options, ['nextjs', 'react']);\n options.environment = options.environment || process.env.NODE_ENV;\n\n let integrations = options.integrations;\n\n // Guard below evaluates to true unless __SENTRY_TRACING__ is text-replaced with \"false\"\n if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // Only add BrowserTracing if a tracesSampleRate or tracesSampler is set\n if (options.tracesSampleRate !== undefined || options.tracesSampler !== undefined) {\n integrations = createClientIntegrations(options.integrations);\n }\n }\n\n init$1({\n ...options,\n integrations,\n });\n\n configureScope(scope => {\n scope.setTag('runtime', 'browser');\n var filterTransactions = event =>\n event.type === 'transaction' && event.transaction === '/404' ? null : event;\n filterTransactions.id = 'NextClient404Filter';\n scope.addEventProcessor(filterTransactions);\n });\n}\n\nfunction createClientIntegrations(integrations) {\n var defaultBrowserTracingIntegration = new BrowserTracing({\n tracingOrigins: [...defaultRequestInstrumentationOptions.tracingOrigins, /^(api\\/)/],\n routingInstrumentation: nextRouterInstrumentation,\n });\n\n if (integrations) {\n return addIntegration(defaultBrowserTracingIntegration, integrations, {\n BrowserTracing: { keyPath: 'options.routingInstrumentation', value: nextRouterInstrumentation },\n });\n } else {\n return [defaultBrowserTracingIntegration];\n }\n}\n\nexport { init };\n//# sourceMappingURL=index.client.js.map\n","// This file configures the initialization of Sentry on the browser.\n// The config you add here will be used whenever a page is visited.\n// https://docs.sentry.io/platforms/javascript/guides/nextjs/\n\nimport * as Sentry from '@sentry/nextjs';\n\nconst SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN;\n\nSentry.init({\n dsn: SENTRY_DSN || 'https://76c11b094776943f873280b496a37139@o379043.ingest.sentry.io/4505938675171328',\n // ...\n // Note: if you want to override the automatic release value, do not set a\n // `release` value here - use the environment variable `SENTRY_RELEASE`, so\n // that it will also get attached to your source maps\n environment: process.env.SENTRY_ENV,\n ignoreErrors: [\n // These errors are caused by the user cancelling the request.\n // Reference: https://forum.sentry.io/t/typeerror-failed-to-fetch-reported-over-and-overe/8447/2\n // either when they click the \"X\" button or when they navigate away from the page too quickly.\n // unfortunately with fetch API, we don't have a clean way to detect whether an error\n // is due to the request being cancelled or not.\n // So I have checked this https://request-cancellation-test.vercel.app/ for the error message\n // that is thrown when the request is cancelled and added it to the ignoreErrors list.\n 'TypeError: Failed to fetch',\n 'TypeError: NetworkError when attempting to fetch resource.',\n 'TypeError: Load failed',\n 'TypeError: cancelled',\n ],\n});\n","// extracted by mini-css-extract-plugin","(function(){var e={229:function(e){var t=e.exports={};var r;var n;function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}(function(){try{if(typeof setTimeout===\"function\"){r=setTimeout}else{r=defaultSetTimout}}catch(e){r=defaultSetTimout}try{if(typeof clearTimeout===\"function\"){n=clearTimeout}else{n=defaultClearTimeout}}catch(e){n=defaultClearTimeout}})();function runTimeout(e){if(r===setTimeout){return setTimeout(e,0)}if((r===defaultSetTimout||!r)&&setTimeout){r=setTimeout;return setTimeout(e,0)}try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}function runClearTimeout(e){if(n===clearTimeout){return clearTimeout(e)}if((n===defaultClearTimeout||!n)&&clearTimeout){n=clearTimeout;return clearTimeout(e)}try{return n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}var i=[];var o=false;var u;var a=-1;function cleanUpNextTick(){if(!o||!u){return}o=false;if(u.length){i=u.concat(i)}else{a=-1}if(i.length){drainQueue()}}function drainQueue(){if(o){return}var e=runTimeout(cleanUpNextTick);o=true;var t=i.length;while(t){u=i;i=[];while(++a1){for(var r=1;r';\n\n var script = '\\n (function(w,d,s,l,i){w[l]=w[l]||[];\\n w[l].push({\\'gtm.start\\': new Date().getTime(),event:\\'gtm.js\\', ' + JSON.stringify(events).slice(1, -1) + '});\\n var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\\'dataLayer\\'?\\'&l=\\'+l:\\'\\';\\n j.async=true;j.src=\\'https://www.googletagmanager.com/gtm.js?id=\\'+i+dl+\\'' + gtm_auth + gtm_preview + '>m_cookies_win=x\\';\\n f.parentNode.insertBefore(j,f);\\n })(window,document,\\'script\\',\\'' + dataLayerName + '\\',\\'' + id + '\\');';\n\n var dataLayerVar = this.dataLayer(dataLayer, dataLayerName);\n\n return {\n iframe: iframe,\n script: script,\n dataLayerVar: dataLayerVar\n };\n },\n dataLayer: function dataLayer(_dataLayer, dataLayerName) {\n return '\\n window.' + dataLayerName + ' = window.' + dataLayerName + ' || [];\\n window.' + dataLayerName + '.push(' + JSON.stringify(_dataLayer) + ')';\n }\n};\n\nmodule.exports = Snippets;","'use strict';\n\nvar _Snippets = require('./Snippets');\n\nvar _Snippets2 = _interopRequireDefault(_Snippets);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagManager = {\n dataScript: function dataScript(dataLayer) {\n var script = document.createElement('script');\n script.innerHTML = dataLayer;\n return script;\n },\n gtm: function gtm(args) {\n var snippets = _Snippets2.default.tags(args);\n\n var noScript = function noScript() {\n var noscript = document.createElement('noscript');\n noscript.innerHTML = snippets.iframe;\n return noscript;\n };\n\n var script = function script() {\n var script = document.createElement('script');\n script.innerHTML = snippets.script;\n return script;\n };\n\n var dataScript = this.dataScript(snippets.dataLayerVar);\n\n return {\n noScript: noScript,\n script: script,\n dataScript: dataScript\n };\n },\n initialize: function initialize(_ref) {\n var gtmId = _ref.gtmId,\n _ref$events = _ref.events,\n events = _ref$events === undefined ? {} : _ref$events,\n dataLayer = _ref.dataLayer,\n _ref$dataLayerName = _ref.dataLayerName,\n dataLayerName = _ref$dataLayerName === undefined ? 'dataLayer' : _ref$dataLayerName,\n _ref$auth = _ref.auth,\n auth = _ref$auth === undefined ? '' : _ref$auth,\n _ref$preview = _ref.preview,\n preview = _ref$preview === undefined ? '' : _ref$preview;\n\n var gtm = this.gtm({\n id: gtmId,\n events: events,\n dataLayer: dataLayer || undefined,\n dataLayerName: dataLayerName,\n auth: auth,\n preview: preview\n });\n if (dataLayer) document.head.appendChild(gtm.dataScript);\n document.head.insertBefore(gtm.script(), document.head.childNodes[0]);\n document.body.insertBefore(gtm.noScript(), document.body.childNodes[0]);\n },\n dataLayer: function dataLayer(_ref2) {\n var _dataLayer = _ref2.dataLayer,\n _ref2$dataLayerName = _ref2.dataLayerName,\n dataLayerName = _ref2$dataLayerName === undefined ? 'dataLayer' : _ref2$dataLayerName;\n\n if (window[dataLayerName]) return window[dataLayerName].push(_dataLayer);\n var snippets = _Snippets2.default.dataLayer(_dataLayer, dataLayerName);\n var dataScript = this.dataScript(snippets);\n document.head.insertBefore(dataScript, document.head.childNodes[0]);\n }\n};\n\nmodule.exports = TagManager;","'use strict';\n\nvar _TagManager = require('./TagManager');\n\nvar _TagManager2 = _interopRequireDefault(_TagManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _TagManager2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar warn = function warn(s) {\n console.warn('[react-gtm]', s);\n};\n\nexports.default = warn;","(self[\"webpackChunk_N_E\"] = self[\"webpackChunk_N_E\"] || []).push([[888],{\n\n/***/ 2876:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"$e\": function() { return /* binding */ withScope; },\n/* harmony export */ \"Tb\": function() { return /* binding */ captureException; },\n/* harmony export */ \"e\": function() { return /* binding */ configureScope; }\n/* harmony export */ });\n/* unused harmony exports addBreadcrumb, captureEvent, captureMessage, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction */\n/* harmony import */ var _hub_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8641);\n\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @param captureContext Additional scope data to apply to exception event.\n * @returns The generated eventId.\n */\nfunction captureException(exception, captureContext) {\n return (0,_hub_js__WEBPACK_IMPORTED_MODULE_0__/* .getCurrentHub */ .Gd)().captureException(exception, { captureContext });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n var level = typeof captureContext === 'string' ? captureContext : undefined;\n var context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n (0,_hub_js__WEBPACK_IMPORTED_MODULE_0__/* .getCurrentHub */ .Gd)().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n (0,_hub_js__WEBPACK_IMPORTED_MODULE_0__/* .getCurrentHub */ .Gd)().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction(\n {\n metadata: { source: 'custom' },\n ...context,\n },\n customSamplingContext,\n );\n}\n\n\n//# sourceMappingURL=exports.js.map\n\n\n/***/ }),\n\n/***/ 8641:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Gd\": function() { return /* binding */ getCurrentHub; },\n/* harmony export */ \"cu\": function() { return /* binding */ getMainCarrier; }\n/* harmony export */ });\n/* unused harmony exports API_VERSION, Hub, getHubFromCarrier, makeMain, setHubOnCarrier */\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2844);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1170);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2343);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2991);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2448);\n/* harmony import */ var _scope_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6769);\n/* harmony import */ var _session_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5771);\n\n\n\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nvar API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n __init() {this._stack = [{}];}\n\n /** Contains the last event id of a captured event. */\n \n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new _scope_js__WEBPACK_IMPORTED_MODULE_0__/* .Scope */ .s(), _version = API_VERSION) {;this._version = _version;Hub.prototype.__init.call(this);\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n var scope = _scope_js__WEBPACK_IMPORTED_MODULE_0__/* .Scope.clone */ .s.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .uuid4 */ .DM)());\n var syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n ) {\n var eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .uuid4 */ .DM)());\n var syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n var eventId = hint && hint.event_id ? hint.event_id : (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .uuid4 */ .DM)();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n var timestamp = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .dateTimestampInSeconds */ .yW)();\n var mergedBreadcrumb = { timestamp, ...breadcrumb };\n var finalBreadcrumb = beforeBreadcrumb\n ? ((0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .consoleSandbox */ .Cf)(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n var scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n var scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n var scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n var scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n var scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n setContext(name, context) {\n var scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n var client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.warn */ .kg.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n var layer = this.getStackTop();\n var scope = layer && layer.scope;\n var session = scope && scope.getSession();\n if (session) {\n (0,_session_js__WEBPACK_IMPORTED_MODULE_4__/* .closeSession */ .RJ)(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n var global = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .getGlobalObject */ .R)();\n const { userAgent } = global.navigator || {};\n\n var session = (0,_session_js__WEBPACK_IMPORTED_MODULE_4__/* .makeSession */ .Hv)({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n var currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n (0,_session_js__WEBPACK_IMPORTED_MODULE_4__/* .updateSession */ .CT)(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n var client = this.getClient();\n var options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n var session = scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n _callExtensionMethod(method, ...args) {\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.warn */ .kg.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n var carrier = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .getGlobalObject */ .R)();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if ((0,_sentry_utils__WEBPACK_IMPORTED_MODULE_6__/* .isNodeEnv */ .KV)()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n var sentry = getMainCarrier().__SENTRY__;\n var activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, _scope_js__WEBPACK_IMPORTED_MODULE_0__/* .Scope.clone */ .s.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .getGlobalSingleton */ .Y)('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n var __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\n\n//# sourceMappingURL=hub.js.map\n\n\n/***/ }),\n\n/***/ 6769:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"c\": function() { return /* binding */ addGlobalEventProcessor; },\n/* harmony export */ \"s\": function() { return /* binding */ Scope; }\n/* harmony export */ });\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7597);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1170);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6893);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2343);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2844);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2991);\n/* harmony import */ var _session_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5771);\n\n\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n \n\n /** Callback for client to receive scope changes. */\n \n\n /** Callback list that will be called after {@link applyToEvent}. */\n \n\n /** Array of breadcrumbs. */\n \n\n /** User */\n \n\n /** Tags */\n \n\n /** Extra */\n \n\n /** Contexts */\n \n\n /** Attachments */\n \n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n \n\n /** Fingerprint */\n \n\n /** Severity */\n \n\n /** Transaction Name */\n \n\n /** Span */\n \n\n /** Session */\n \n\n /** Request Mode Session Status */\n \n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n (0,_session_js__WEBPACK_IMPORTED_MODULE_0__/* .updateSession */ .CT)(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n var span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n var updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if ((0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .isPlainObject */ .PO)(captureContext)) {\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n var maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n var mergedBreadcrumb = {\n timestamp: (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .dateTimestampInSeconds */ .yW)(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n applyToEvent(event, hint = {}) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n var transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = { ...event.sdkProcessingMetadata, ...this._sdkProcessingMetadata };\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n _notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n ) {\n return new _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .SyncPromise */ .cW((resolve, reject) => {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n var result = processor({ ...event }, hint) ;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n processor.id &&\n result === null &&\n _sentry_utils__WEBPACK_IMPORTED_MODULE_4__/* .logger.log */ .kg.log(`Event processor \"${processor.id}\" dropped event`);\n\n if ((0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .isThenable */ .J8)(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .arrayify */ .lE)(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_6__/* .getGlobalSingleton */ .Y)('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\n\n//# sourceMappingURL=scope.js.map\n\n\n/***/ }),\n\n/***/ 5771:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"CT\": function() { return /* binding */ updateSession; },\n/* harmony export */ \"Hv\": function() { return /* binding */ makeSession; },\n/* harmony export */ \"RJ\": function() { return /* binding */ closeSession; }\n/* harmony export */ });\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1170);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2844);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(535);\n\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n var startingTime = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_0__/* .timestampInSeconds */ .ph)();\n\n var session = {\n sid: (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .uuid4 */ .DM)(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_0__/* .timestampInSeconds */ .ph)();\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .uuid4 */ .DM)();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n var duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .dropUndefinedKeys */ .Jr)({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\n\n//# sourceMappingURL=session.js.map\n\n\n/***/ }),\n\n/***/ 2758:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"ro\": function() { return /* binding */ addExtensionMethods; },\n \"lb\": function() { return /* binding */ startIdleTransaction; }\n});\n\n// UNUSED EXPORTS: _addTracingExtensions\n\n// EXTERNAL MODULE: ./node_modules/@sentry/hub/esm/hub.js\nvar hub = __webpack_require__(8641);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/logger.js\nvar logger = __webpack_require__(2343);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/is.js\nvar is = __webpack_require__(7597);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/node.js + 1 modules\nvar node = __webpack_require__(2448);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/instrument.js\nvar instrument = __webpack_require__(9732);\n// EXTERNAL MODULE: ./node_modules/@sentry/tracing/esm/utils.js\nvar utils = __webpack_require__(3233);\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/errors.js\n\n\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n (0,instrument/* addInstrumentationHandler */.o)('error', errorCallback);\n (0,instrument/* addInstrumentationHandler */.o)('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n var activeTransaction = (0,utils/* getActiveTransaction */.x1)();\n if (activeTransaction) {\n var status = 'internal_error';\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger/* logger.log */.kg.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n\n//# sourceMappingURL=errors.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/tracing/esm/idletransaction.js\nvar idletransaction = __webpack_require__(6458);\n// EXTERNAL MODULE: ./node_modules/@sentry/tracing/esm/transaction.js\nvar esm_transaction = __webpack_require__(3391);\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/hubextensions.js\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n\n\n\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders() {\n var scope = this.getScope();\n if (scope) {\n var span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!(0,utils/* hasTracingEnabled */.zu)(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger/* logger.warn */.kg.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger/* logger.log */.kg.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger/* logger.log */.kg.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger/* logger.log */.kg.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n if ((0,is/* isNaN */.i2)(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger/* logger.warn */.kg.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n logger/* logger.warn */.kg.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n \n transactionContext,\n customSamplingContext,\n) {\n var client = this.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new esm_transaction/* Transaction */.Y(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n) {\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {};\n\n let transaction = new idletransaction/* IdleTransaction */.io(transactionContext, hub, idleTimeout, finalTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nfunction _addTracingExtensions() {\n var carrier = (0,hub/* getMainCarrier */.cu)();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations() {\n var carrier = (0,hub/* getMainCarrier */.cu)();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n var packageToIntegrationMapping = {\n mongodb() {\n var integration = (0,node/* dynamicRequire */.l$)(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo();\n },\n mongoose() {\n var integration = (0,node/* dynamicRequire */.l$)(module, './integrations/node/mongo') \n\n;\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n var integration = (0,node/* dynamicRequire */.l$)(module, './integrations/node/mysql') \n\n;\n return new integration.Mysql();\n },\n pg() {\n var integration = (0,node/* dynamicRequire */.l$)(module, './integrations/node/postgres') \n\n;\n return new integration.Postgres();\n },\n };\n\n var mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!(0,node/* loadModule */.$y)(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) ;\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nfunction addExtensionMethods() {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if ((0,node/* isNodeEnv */.KV)()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n\n\n//# sourceMappingURL=hubextensions.js.map\n\n\n/***/ }),\n\n/***/ 6458:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"io\": function() { return /* binding */ IdleTransaction; },\n/* harmony export */ \"mg\": function() { return /* binding */ DEFAULT_FINAL_TIMEOUT; },\n/* harmony export */ \"nT\": function() { return /* binding */ DEFAULT_IDLE_TIMEOUT; }\n/* harmony export */ });\n/* unused harmony exports HEARTBEAT_INTERVAL, IdleTransactionSpanRecorder */\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1170);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2343);\n/* harmony import */ var _span_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5334);\n/* harmony import */ var _transaction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3391);\n\n\n\n\nvar DEFAULT_IDLE_TIMEOUT = 1000;\nvar DEFAULT_FINAL_TIMEOUT = 30000;\nvar HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends _span_js__WEBPACK_IMPORTED_MODULE_0__/* .SpanRecorder */ .gB {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId;;\n }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .timestampWithMs */ ._I)();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends _transaction_js__WEBPACK_IMPORTED_MODULE_2__/* .Transaction */ .Y {\n // Activities store a list of active spans\n __init() {this.activities = {};}\n\n // Track state of activities in previous heartbeat\n \n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n __init2() {this._heartbeatCounter = 0;}\n\n // We should not use heartbeat if we finished a transaction\n __init3() {this._finished = false;}\n\n __init4() {this._beforeFinishCallbacks = [];}\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n \n\n constructor(\n transactionContext,\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = DEFAULT_IDLE_TIMEOUT,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = DEFAULT_FINAL_TIMEOUT,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._onScope = _onScope;IdleTransaction.prototype.__init.call(this);IdleTransaction.prototype.__init2.call(this);IdleTransaction.prototype.__init3.call(this);IdleTransaction.prototype.__init4.call(this);;\n\n if (_onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._startIdleTimeout();\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this.finish();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n finish(endTimestamp = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .timestampWithMs */ ._I)()) {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (var callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n var keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('[Tracing] flushing IdleTransaction');\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n if (!this.spanRecorder) {\n var pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n var popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idletimeout, if there is one\n */\n _cancelIdleTimeout() {\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n }\n }\n\n /**\n * Creates an idletimeout\n */\n _startIdleTimeout(endTimestamp) {\n this._cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this.finish(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this._cancelIdleTimeout();\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log(`[Tracing] popActivity ${spanId}`);\n delete this.activities[spanId];\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n var endTimestamp = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .timestampWithMs */ ._I)() + this._idleTimeout / 1000;\n this._startIdleTimeout(endTimestamp);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n var heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .logger.log */ .kg.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, HEARTBEAT_INTERVAL);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub) {\n var scope = hub.getScope();\n if (scope) {\n var transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n}\n\n\n//# sourceMappingURL=idletransaction.js.map\n\n\n/***/ }),\n\n/***/ 5334:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Dr\": function() { return /* binding */ Span; },\n/* harmony export */ \"gB\": function() { return /* binding */ SpanRecorder; }\n/* harmony export */ });\n/* unused harmony export spanStatusfromHttpCode */\n/* harmony import */ var _sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5375);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2844);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1170);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2343);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(535);\n\n\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n __init() {this.spans = [];}\n\n constructor(maxlen = 1000) {;SpanRecorder.prototype.__init.call(this);\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * @inheritDoc\n */\n __init2() {this.traceId = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_0__/* .uuid4 */ .DM)();}\n\n /**\n * @inheritDoc\n */\n __init3() {this.spanId = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_0__/* .uuid4 */ .DM)().substring(16);}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Internal keeper of the status\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * Timestamp in seconds when the span was created.\n */\n __init4() {this.startTimestamp = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .timestampWithMs */ ._I)();}\n\n /**\n * Timestamp in seconds when the span ended.\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n __init5() {this.tags = {};}\n\n /**\n * @inheritDoc\n */\n __init6() {this.data = {};}\n\n /**\n * List of spans that were finalized\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext) {;Span.prototype.__init2.call(this);Span.prototype.__init3.call(this);Span.prototype.__init4.call(this);Span.prototype.__init5.call(this);Span.prototype.__init6.call(this);\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n */\n startChild(\n spanContext,\n ) {\n var childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && childSpan.transaction) {\n var opStr = (spanContext && spanContext.op) || '< unknown op >';\n var nameStr = childSpan.transaction.name || '< unknown name >';\n var idStr = childSpan.transaction.spanId;\n\n var logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n childSpan.transaction.metadata.spanMetadata[childSpan.spanId] = { logMessage };\n _sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .logger.log */ .kg.log(logMessage);\n }\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setData(key, value) {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setHttpStatus(httpStatus) {\n this.setTag('http.status_code', String(httpStatus));\n var spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n isSuccess() {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n if (\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n // Don't call this for transactions\n this.transaction &&\n this.transaction.spanId !== this.spanId\n ) {\n const { logMessage } = this.transaction.metadata.spanMetadata[this.spanId];\n if (logMessage) {\n _sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .logger.log */ .kg.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__/* .timestampWithMs */ ._I)();\n }\n\n /**\n * @inheritDoc\n */\n toTraceparent() {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .dropUndefinedKeys */ .Jr)({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(spanContext) {\n this.data = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__/* ._nullishCoalesce */ .h)(spanContext.data, () => ( {}));\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__/* ._nullishCoalesce */ .h)(spanContext.spanId, () => ( this.spanId));\n this.startTimestamp = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__/* ._nullishCoalesce */ .h)(spanContext.startTimestamp, () => ( this.startTimestamp));\n this.status = spanContext.status;\n this.tags = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__/* ._nullishCoalesce */ .h)(spanContext.tags, () => ( {}));\n this.traceId = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__/* ._nullishCoalesce */ .h)(spanContext.traceId, () => ( this.traceId));\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getTraceContext()\n\n {\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .dropUndefinedKeys */ .Jr)({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n toJSON()\n\n {\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .dropUndefinedKeys */ .Jr)({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction spanStatusfromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\n\n//# sourceMappingURL=span.js.map\n\n\n/***/ }),\n\n/***/ 3391:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Y\": function() { return /* binding */ Transaction; }\n/* harmony export */ });\n/* harmony import */ var _sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5375);\n/* harmony import */ var _sentry_hub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8641);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2343);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(535);\n/* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9181);\n/* harmony import */ var _span_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5334);\n\n\n\n\n\n/** JSDoc */\nclass Transaction extends _span_js__WEBPACK_IMPORTED_MODULE_0__/* .Span */ .Dr {\n \n\n /**\n * The reference to the current hub.\n */\n \n\n __init() {this._measurements = {};}\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(transactionContext, hub) {\n super(transactionContext);Transaction.prototype.__init.call(this);;\n\n this._hub = hub || (0,_sentry_hub__WEBPACK_IMPORTED_MODULE_1__/* .getCurrentHub */ .Gd)();\n\n this._name = transactionContext.name || '';\n\n this.metadata = {\n ...transactionContext.metadata,\n spanMetadata: {},\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n }\n\n /** Getter for `name` property */\n get name() {\n return this._name;\n }\n\n /** Setter for `name` property, which also sets `source` */\n set name(newName) {\n this._name = newName;\n this.metadata.source = 'custom';\n }\n\n /**\n * JSDoc\n */\n setName(name, source = 'custom') {\n this.name = name;\n this.metadata.source = source;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n if (!this.spanRecorder) {\n this.spanRecorder = new _span_js__WEBPACK_IMPORTED_MODULE_0__/* .SpanRecorder */ .gB(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * @inheritDoc\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * @inheritDoc\n */\n setMetadata(newMetadata) {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n finish(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .logger.warn */ .kg.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .logger.log */ .kg.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n var client = this._hub.getClient();\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n var finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev, current) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n var metadata = this.metadata;\n\n var transaction = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n baggage: this.getBaggage(),\n },\n ...(metadata.source && {\n transaction_info: {\n source: metadata.source,\n },\n }),\n };\n\n var hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .logger.log */ .kg.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_2__/* .logger.log */ .kg.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n var spanContext = super.toContext();\n\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .dropUndefinedKeys */ .Jr)({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n super.updateWithContext(transactionContext);\n\n this.name = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__/* ._nullishCoalesce */ .h)(transactionContext.name, () => ( ''));\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n */\n getBaggage() {\n var existingBaggage = this.metadata.baggage;\n\n // Only add Sentry baggage items to baggage, if baggage does not exist yet or it is still\n // empty and mutable\n var finalBaggage =\n !existingBaggage || (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .isBaggageMutable */ .Gp)(existingBaggage)\n ? this._populateBaggageWithSentryValues(existingBaggage)\n : existingBaggage;\n\n // Update the baggage stored on the transaction.\n this.metadata.baggage = finalBaggage;\n\n return finalBaggage;\n }\n\n /**\n * Collects and adds data to the passed baggage object.\n *\n * Note: This function does not explicitly check if the passed baggage object is allowed\n * to be modified. Implicitly, `setBaggageValue` will not make modification to the object\n * if it was already set immutable.\n *\n * After adding the data, the baggage object is set immutable to prevent further modifications.\n *\n * @param baggage\n *\n * @returns modified and immutable baggage object\n */\n _populateBaggageWithSentryValues(baggage = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .createBaggage */ .Hn)({})) {\n var hub = this._hub || (0,_sentry_hub__WEBPACK_IMPORTED_MODULE_1__/* .getCurrentHub */ .Gd)();\n var client = hub && hub.getClient();\n\n if (!client) return baggage;\n\n const { environment, release } = client.getOptions() || {};\n const { publicKey: public_key } = client.getDsn() || {};\n\n var sample_rate =\n this.metadata &&\n this.metadata.transactionSampling &&\n this.metadata.transactionSampling.rate &&\n this.metadata.transactionSampling.rate.toString();\n\n var scope = hub.getScope();\n const { segment: user_segment } = (scope && scope.getUser()) || {};\n\n var source = this.metadata.source;\n var transaction = source && source !== 'url' ? this.name : undefined;\n\n return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .createBaggage */ .Hn)(\n (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__/* .dropUndefinedKeys */ .Jr)({\n environment,\n release,\n transaction,\n user_segment,\n public_key,\n trace_id: this.traceId,\n sample_rate,\n ...(0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__/* .getSentryBaggageItems */ .Hk)(baggage), // keep user-added values\n } ),\n '',\n false, // set baggage immutable\n );\n }\n}\n\n\n//# sourceMappingURL=transaction.js.map\n\n\n/***/ }),\n\n/***/ 3233:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"XL\": function() { return /* binding */ msToSec; },\n/* harmony export */ \"x1\": function() { return /* binding */ getActiveTransaction; },\n/* harmony export */ \"zu\": function() { return /* binding */ hasTracingEnabled; }\n/* harmony export */ });\n/* unused harmony export secToMs */\n/* harmony import */ var _sentry_hub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8641);\n\n\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n var client = (0,_sentry_hub__WEBPACK_IMPORTED_MODULE_0__/* .getCurrentHub */ .Gd)().getClient();\n var options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nfunction getActiveTransaction(maybeHub) {\n var hub = maybeHub || (0,_sentry_hub__WEBPACK_IMPORTED_MODULE_0__/* .getCurrentHub */ .Gd)();\n var scope = hub.getScope();\n return scope && (scope.getTransaction() );\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nfunction msToSec(time) {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nfunction secToMs(time) {\n return time * 1000;\n}\n\n\n//# sourceMappingURL=utils.js.map\n\n\n/***/ }),\n\n/***/ 9181:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Gp\": function() { return /* binding */ isBaggageMutable; },\n/* harmony export */ \"Hk\": function() { return /* binding */ getSentryBaggageItems; },\n/* harmony export */ \"Hn\": function() { return /* binding */ createBaggage; },\n/* harmony export */ \"J8\": function() { return /* binding */ mergeAndSerializeBaggage; },\n/* harmony export */ \"XM\": function() { return /* binding */ parseBaggageHeader; },\n/* harmony export */ \"bU\": function() { return /* binding */ BAGGAGE_HEADER_NAME; },\n/* harmony export */ \"rg\": function() { return /* binding */ parseBaggageSetMutability; }\n/* harmony export */ });\n/* unused harmony exports MAX_BAGGAGE_STRING_LENGTH, SENTRY_BAGGAGE_KEY_PREFIX, SENTRY_BAGGAGE_KEY_PREFIX_REGEX, getBaggageValue, getThirdPartyBaggage, isSentryBaggageEmpty, serializeBaggage, setBaggageImmutable, setBaggageValue */\n/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7597);\n/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2343);\n\n\n\nvar BAGGAGE_HEADER_NAME = 'baggage';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nvar SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nvar MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/** Create an instance of Baggage */\nfunction createBaggage(initItems, baggageString = '', mutable = true) {\n return [{ ...initItems }, baggageString, mutable];\n}\n\n/** Get a value from baggage */\nfunction getBaggageValue(baggage, key) {\n return baggage[0][key];\n}\n\n/** Add a value to baggage */\nfunction setBaggageValue(baggage, key, value) {\n if (isBaggageMutable(baggage)) {\n baggage[0][key] = value;\n }\n}\n\n/** Check if the Sentry part of the passed baggage (i.e. the first element in the tuple) is empty */\nfunction isSentryBaggageEmpty(baggage) {\n return Object.keys(baggage[0]).length === 0;\n}\n\n/** Returns Sentry specific baggage values */\nfunction getSentryBaggageItems(baggage) {\n return baggage[0];\n}\n\n/**\n * Returns 3rd party baggage string of @param baggage\n * @param baggage\n */\nfunction getThirdPartyBaggage(baggage) {\n return baggage[1];\n}\n\n/**\n * Checks if baggage is mutable\n * @param baggage\n * @returns true if baggage is mutable, else false\n */\nfunction isBaggageMutable(baggage) {\n return baggage[2];\n}\n\n/**\n * Sets the passed baggage immutable\n * @param baggage\n */\nfunction setBaggageImmutable(baggage) {\n baggage[2] = false;\n}\n\n/** Serialize a baggage object */\nfunction serializeBaggage(baggage) {\n return Object.keys(baggage[0]).reduce((prev, key) => {\n var val = baggage[0][key] ;\n var baggageEntry = `${SENTRY_BAGGAGE_KEY_PREFIX}${encodeURIComponent(key)}=${encodeURIComponent(val)}`;\n var newVal = prev === '' ? baggageEntry : `${prev},${baggageEntry}`;\n if (newVal.length > MAX_BAGGAGE_STRING_LENGTH) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _logger_js__WEBPACK_IMPORTED_MODULE_0__/* .logger.warn */ .kg.warn(`Not adding key: ${key} with val: ${val} to baggage due to exceeding baggage size limits.`);\n return prev;\n } else {\n return newVal;\n }\n }, baggage[1]);\n}\n\n/**\n * Parse a baggage header from a string or a string array and return a Baggage object\n *\n * If @param includeThirdPartyEntries is set to true, third party baggage entries are added to the Baggage object\n * (This is necessary for merging potentially pre-existing baggage headers in outgoing requests with\n * our `sentry-` values)\n */\nfunction parseBaggageHeader(\n inputBaggageValue,\n includeThirdPartyEntries = false,\n) {\n // Adding this check here because we got reports of this function failing due to the input value\n // not being a string. This debug log might help us determine what's going on here.\n if ((!Array.isArray(inputBaggageValue) && !(0,_is_js__WEBPACK_IMPORTED_MODULE_1__/* .isString */ .HD)(inputBaggageValue)) || typeof inputBaggageValue === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _logger_js__WEBPACK_IMPORTED_MODULE_0__/* .logger.warn */ .kg.warn(\n '[parseBaggageHeader] Received input value of incompatible type: ',\n typeof inputBaggageValue,\n inputBaggageValue,\n );\n\n // Gonna early-return an empty baggage object so that we don't fail later on\n return createBaggage({}, '');\n }\n\n var baggageEntries = ((0,_is_js__WEBPACK_IMPORTED_MODULE_1__/* .isString */ .HD)(inputBaggageValue) ? inputBaggageValue : inputBaggageValue.join(','))\n .split(',')\n .map(entry => entry.trim())\n .filter(entry => entry !== '' && (includeThirdPartyEntries || SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(entry)));\n\n return baggageEntries.reduce(\n ([baggageObj, baggageString], curr) => {\n const [key, val] = curr.split('=');\n if (SENTRY_BAGGAGE_KEY_PREFIX_REGEX.test(key)) {\n var baggageKey = decodeURIComponent(key.split('-')[1]);\n return [\n {\n ...baggageObj,\n [baggageKey]: decodeURIComponent(val),\n },\n baggageString,\n true,\n ];\n } else {\n return [baggageObj, baggageString === '' ? curr : `${baggageString},${curr}`, true];\n }\n },\n [{}, '', true],\n );\n}\n\n/**\n * Merges the baggage header we saved from the incoming request (or meta tag) with\n * a possibly created or modified baggage header by a third party that's been added\n * to the outgoing request header.\n *\n * In case @param headerBaggageString exists, we can safely add the the 3rd party part of @param headerBaggage\n * with our @param incomingBaggage. This is possible because if we modified anything beforehand,\n * it would only affect parts of the sentry baggage (@see Baggage interface).\n *\n * @param incomingBaggage the baggage header of the incoming request that might contain sentry entries\n * @param thirdPartyBaggageHeader possibly existing baggage header string or string[] added from a third\n * party to the request headers\n *\n * @return a merged and serialized baggage string to be propagated with the outgoing request\n */\nfunction mergeAndSerializeBaggage(incomingBaggage, thirdPartyBaggageHeader) {\n if (!incomingBaggage && !thirdPartyBaggageHeader) {\n return '';\n }\n\n var headerBaggage = (thirdPartyBaggageHeader && parseBaggageHeader(thirdPartyBaggageHeader, true)) || undefined;\n var thirdPartyHeaderBaggage = headerBaggage && getThirdPartyBaggage(headerBaggage);\n\n var finalBaggage = createBaggage((incomingBaggage && incomingBaggage[0]) || {}, thirdPartyHeaderBaggage || '');\n return serializeBaggage(finalBaggage);\n}\n\n/**\n * Helper function that takes a raw baggage value (if available) and the processed sentry-trace header\n * data (if available), parses the baggage value and creates a Baggage object. If there is no baggage\n * value, it will create an empty Baggage object.\n *\n * In a second step, this functions determines if the created Baggage object should be set immutable\n * to prevent mutation of the Sentry data. It does this by looking at the processed sentry-trace header.\n *\n * @param rawBaggageValue baggage value from header\n * @param sentryTraceHeader processed Sentry trace header returned from `extractTraceparentData`\n */\nfunction parseBaggageSetMutability(\n rawBaggageValue,\n sentryTraceHeader,\n) {\n var baggage = parseBaggageHeader(rawBaggageValue || '');\n\n // Because we are always creating a Baggage object by calling `parseBaggageHeader` above\n // (either a filled one or an empty one, even if we didn't get a `baggage` header),\n // we only need to check if we have a sentry-trace header or not. As soon as we have it,\n // we set baggage immutable. In case we don't get a sentry-trace header, we can assume that\n // this SDK is the head of the trace and thus we still permit mutation at this time.\n // There is one exception though, which is that we get a baggage-header with `sentry-`\n // items but NO sentry-trace header. In this case we also set the baggage immutable for now\n // but if something like this would ever happen, we should revisit this and determine\n // what this would actually mean for the trace (i.e. is this SDK the head?, what happened\n // before that we don't have a sentry-trace header?, etc)\n (sentryTraceHeader || !isSentryBaggageEmpty(baggage)) && setBaggageImmutable(baggage);\n\n return baggage;\n}\n\n\n//# sourceMappingURL=baggage.js.map\n\n\n/***/ }),\n\n/***/ 8464:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Rt\": function() { return /* binding */ htmlTreeAsString; },\n/* harmony export */ \"l4\": function() { return /* binding */ getLocationHref; },\n/* harmony export */ \"qT\": function() { return /* binding */ getDomElement; }\n/* harmony export */ });\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2991);\n/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7597);\n\n\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction htmlTreeAsString(elem, keyAttrs) {\n \n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem ;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n let height = 0;\n let len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el, keyAttrs) {\n var elem = el \n\n;\n\n var out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n var keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n className = elem.className;\n if (className && (0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isString */ .HD)(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nfunction getLocationHref() {\n var global = (0,_global_js__WEBPACK_IMPORTED_MODULE_1__/* .getGlobalObject */ .R)();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Gets a DOM element by using document.querySelector.\n *\n * This wrapper will first check for the existance of the function before\n * actually calling it so that we don't have to take care of this check,\n * every time we want to access the DOM.\n *\n * Reason: DOM/querySelector is not available in all environments.\n *\n * We have to cast to any because utils can be consumed by a variety of environments,\n * and we don't want to break TS users. If you know what element will be selected by\n * `document.querySelector`, specify it as part of the generic call. For example,\n * `var element = getDomElement('selector');`\n *\n * @param selector the selector string passed on to document.querySelector\n */\nfunction getDomElement(selector) {\n var global = (0,_global_js__WEBPACK_IMPORTED_MODULE_1__/* .getGlobalObject */ .R)();\n if (global.document && global.document.querySelector) {\n return global.document.querySelector(selector) ;\n }\n return null;\n}\n\n\n//# sourceMappingURL=browser.js.map\n\n\n/***/ }),\n\n/***/ 5375:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"h\": function() { return /* binding */ _nullishCoalesce; }\n/* harmony export */ });\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\n\n//# sourceMappingURL=_nullishCoalesce.js.map\n\n\n/***/ }),\n\n/***/ 4307:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"x\": function() { return /* binding */ _optionalChain; }\n/* harmony export */ });\n/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n var op = ops[i] ;\n var fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// var op = ops[i];\n// var fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\n\n//# sourceMappingURL=_optionalChain.js.map\n\n\n/***/ }),\n\n/***/ 2991:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"R\": function() { return /* binding */ getGlobalObject; },\n/* harmony export */ \"Y\": function() { return /* binding */ getGlobalSingleton; }\n/* harmony export */ });\n/* harmony import */ var _node_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2448);\n\n\n/** Internal */\n\nvar fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nfunction getGlobalObject() {\n return (\n (0,_node_js__WEBPACK_IMPORTED_MODULE_0__/* .isNodeEnv */ .KV)()\n ? __webpack_require__.g\n : typeof window !== 'undefined' ? window : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n var global = (obj || getGlobalObject()) ;\n var __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n var singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\n\n//# sourceMappingURL=global.js.map\n\n\n/***/ }),\n\n/***/ 9732:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"o\": function() { return /* binding */ addInstrumentationHandler; }\n/* harmony export */ });\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2991);\n/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7597);\n/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2343);\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(535);\n/* harmony import */ var _stacktrace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(360);\n/* harmony import */ var _supports_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8823);\n\n\n\n\n\n\n\nvar global = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)();\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nvar handlers = {};\nvar instrumented = {};\n\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _logger_js__WEBPACK_IMPORTED_MODULE_1__/* .logger.warn */ .kg.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addInstrumentationHandler(type, callback) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (var handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _logger_js__WEBPACK_IMPORTED_MODULE_1__/* .logger.error */ .kg.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${(0,_stacktrace_js__WEBPACK_IMPORTED_MODULE_2__/* .getFunctionName */ .$P)(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n\n _logger_js__WEBPACK_IMPORTED_MODULE_1__/* .CONSOLE_LEVELS.forEach */ .RU.forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(global.console, level, function (originalConsoleMethod) {\n return function (...args) {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch() {\n if (!(0,_supports_js__WEBPACK_IMPORTED_MODULE_4__/* .supportsNativeFetch */ .t$)()) {\n return;\n }\n\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(global, 'fetch', function (originalFetch) {\n return function (...args) {\n var handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs = []) {\n if ('Request' in global && (0,_is_js__WEBPACK_IMPORTED_MODULE_5__/* .isInstanceOf */ .V9)(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs = []) {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && (0,_is_js__WEBPACK_IMPORTED_MODULE_5__/* .isInstanceOf */ .V9)(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n var xhrproto = XMLHttpRequest.prototype;\n\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(xhrproto, 'open', function (originalOpen) {\n return function ( ...args) {\n var xhr = this;\n var url = args[1];\n var xhrInfo = (xhr.__sentry_xhr__ = {\n method: (0,_is_js__WEBPACK_IMPORTED_MODULE_5__/* .isString */ .HD)(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n if ((0,_is_js__WEBPACK_IMPORTED_MODULE_5__/* .isString */ .HD)(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(xhr, 'onreadystatechange', function (original) {\n return function (...readyStateArgs) {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(xhrproto, 'send', function (originalSend) {\n return function ( ...args) {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref;\n\n/** JSDoc */\nfunction instrumentHistory() {\n if (!(0,_supports_js__WEBPACK_IMPORTED_MODULE_4__/* .supportsHistory */ .Bf)()) {\n return;\n }\n\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function ( ...args) {\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(global.history, 'pushState', historyReplacementFunction);\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(global.history, 'replaceState', historyReplacementFunction);\n}\n\nvar debounceDuration = 1000;\nlet debounceTimerID;\nlet lastCapturedEvent;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous, current) {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event) {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n var target = event.target ;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler, globalListener = false) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n var name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n var triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n var globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n var proto = (global )[target] && (global )[target].prototype;\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(proto, 'addEventListener', function (originalAddEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n var handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n var handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n (0,_object_js__WEBPACK_IMPORTED_MODULE_3__/* .fill */ .hl)(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function (\n \n type,\n listener,\n options,\n ) {\n if (type === 'click' || type == 'keypress') {\n try {\n var el = this ;\n var handlers = el.__sentry_instrumentation_handlers__ || {};\n var handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n\n\n//# sourceMappingURL=instrument.js.map\n\n\n/***/ }),\n\n/***/ 7597:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Cy\": function() { return /* binding */ isSyntheticEvent; },\n/* harmony export */ \"HD\": function() { return /* binding */ isString; },\n/* harmony export */ \"J8\": function() { return /* binding */ isThenable; },\n/* harmony export */ \"Kj\": function() { return /* binding */ isRegExp; },\n/* harmony export */ \"PO\": function() { return /* binding */ isPlainObject; },\n/* harmony export */ \"TX\": function() { return /* binding */ isDOMError; },\n/* harmony export */ \"V9\": function() { return /* binding */ isInstanceOf; },\n/* harmony export */ \"VW\": function() { return /* binding */ isErrorEvent; },\n/* harmony export */ \"VZ\": function() { return /* binding */ isError; },\n/* harmony export */ \"cO\": function() { return /* binding */ isEvent; },\n/* harmony export */ \"fm\": function() { return /* binding */ isDOMException; },\n/* harmony export */ \"i2\": function() { return /* binding */ isNaN; },\n/* harmony export */ \"kK\": function() { return /* binding */ isElement; },\n/* harmony export */ \"pt\": function() { return /* binding */ isPrimitive; }\n/* harmony export */ });\nvar objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\n\n//# sourceMappingURL=is.js.map\n\n\n/***/ }),\n\n/***/ 2343:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Cf\": function() { return /* binding */ consoleSandbox; },\n/* harmony export */ \"RU\": function() { return /* binding */ CONSOLE_LEVELS; },\n/* harmony export */ \"kg\": function() { return /* binding */ logger; }\n/* harmony export */ });\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2991);\n\n\n// TODO: Implement different loggers for different environments\nvar global = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)();\n\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n\nvar CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert', 'trace'] ;\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n var global = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)();\n\n if (!('console' in global)) {\n return callback();\n }\n\n var originalConsole = global.console ;\n var wrappedLevels = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n var originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] ).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] ;\n originalConsole[level] = originalWrappedFunc ;\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level ];\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n var logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger;\nif ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n logger = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalSingleton */ .Y)('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\n\n//# sourceMappingURL=logger.js.map\n\n\n/***/ }),\n\n/***/ 2844:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DM\": function() { return /* binding */ uuid4; },\n/* harmony export */ \"Db\": function() { return /* binding */ addExceptionTypeValue; },\n/* harmony export */ \"EG\": function() { return /* binding */ addExceptionMechanism; },\n/* harmony export */ \"YO\": function() { return /* binding */ checkOrSetAlreadyCaught; },\n/* harmony export */ \"jH\": function() { return /* binding */ getEventDescription; },\n/* harmony export */ \"lE\": function() { return /* binding */ arrayify; }\n/* harmony export */ });\n/* unused harmony exports addContextToFrame, parseSemver */\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2991);\n/* harmony import */ var _object_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(535);\n\n\n\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n var global = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)() ;\n var crypto = (global.crypto || global.msCrypto) ;\n\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n\n var getRandomByte =\n crypto && crypto.getRandomValues ? () => crypto.getRandomValues(new Uint8Array(1))[0] : () => Math.random() * 16;\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n var firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n var exception = (event.exception = event.exception || {});\n var values = (exception.values = exception.values || []);\n var firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n var firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n var defaultMechanism = { type: 'generic', handled: true };\n var currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n var mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n (0,_object_js__WEBPACK_IMPORTED_MODULE_1__/* .addNonEnumerableProperty */ .xp)(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\n\n//# sourceMappingURL=misc.js.map\n\n\n/***/ }),\n\n/***/ 2448:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"l$\": function() { return /* binding */ dynamicRequire; },\n \"KV\": function() { return /* binding */ isNodeEnv; },\n \"$y\": function() { return /* binding */ loadModule; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/env.js\n/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n\n//# sourceMappingURL=env.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/node.js\n/* module decorator */ module = __webpack_require__.hmd(module);\n/* provided dependency */ var process = __webpack_require__(3454);\n\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\n\n//# sourceMappingURL=node.js.map\n\n\n/***/ }),\n\n/***/ 4754:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"Fv\": function() { return /* binding */ normalize; },\n \"Qy\": function() { return /* binding */ normalizeToSize; }\n});\n\n// UNUSED EXPORTS: walk\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/is.js\nvar is = __webpack_require__(7597);\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/memo.js\n/**\n * Helper to decycle json objects\n */\nfunction memoBuilder() {\n var hasWeakSet = typeof WeakSet === 'function';\n var inner = hasWeakSet ? new WeakSet() : [];\n function memoize(obj) {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n for (let i = 0; i < inner.length; i++) {\n var value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj) {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n\n\n//# sourceMappingURL=memo.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/object.js\nvar object = __webpack_require__(535);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/stacktrace.js\nvar stacktrace = __webpack_require__(360);\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/normalize.js\n\n\n\n\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output.\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\nfunction normalize(input, depth = +Infinity, maxProperties = +Infinity) {\n try {\n // since we're at the outermost level, we don't provide a key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nfunction normalizeToSize(\n object,\n // Default Node.js REPL depth\n depth = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize = 100 * 1024,\n) {\n var normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized ;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key,\n value,\n depth = +Infinity,\n maxProperties = +Infinity,\n memo = memoBuilder(),\n) {\n const [memoize, unmemoize] = memo;\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !(0,is/* isNaN */.i2)(value))) {\n return value ;\n }\n\n var stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // From here on, we can assert that `value` is either an object or an array.\n\n // Do not normalize objects that we know have already been normalized. As a general rule, the\n // \"__sentry_skip_normalization__\" property should only be used sparingly and only should only be set on objects that\n // have already been normalized.\n if ((value )['__sentry_skip_normalization__']) {\n return value ;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // If the value has a `toJSON` method, we call it to extract more information\n var valueWithToJSON = value ;\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n var jsonValue = valueWithToJSON.toJSON();\n // We need to normalize the return value of `.toJSON()` in case it has circular references\n return visit('', jsonValue, depth - 1, maxProperties, memo);\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n var normalized = (Array.isArray(value) ? [] : {}) ;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n var visitable = (0,object/* convertToPlainObject */.Sh)(value );\n\n for (var visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n var visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value,\n) {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value )._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof __webpack_require__.g !== 'undefined' && value === __webpack_require__.g) {\n return '[Global]';\n }\n\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if ((0,is/* isSyntheticEvent */.Cy)(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${(0,stacktrace/* getFunctionName */.$P)(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) ).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n\n\n//# sourceMappingURL=normalize.js.map\n\n\n/***/ }),\n\n/***/ 535:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"$Q\": function() { return /* binding */ markFunctionWrapped; },\n/* harmony export */ \"HK\": function() { return /* binding */ getOriginalFunction; },\n/* harmony export */ \"Jr\": function() { return /* binding */ dropUndefinedKeys; },\n/* harmony export */ \"Sh\": function() { return /* binding */ convertToPlainObject; },\n/* harmony export */ \"_j\": function() { return /* binding */ urlEncode; },\n/* harmony export */ \"hl\": function() { return /* binding */ fill; },\n/* harmony export */ \"xp\": function() { return /* binding */ addNonEnumerableProperty; },\n/* harmony export */ \"zf\": function() { return /* binding */ extractExceptionKeysForMessage; }\n/* harmony export */ });\n/* unused harmony export objectify */\n/* harmony import */ var _browser_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8464);\n/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7597);\n/* harmony import */ var _string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7321);\n\n\n\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n var original = source[name] ;\n var wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n var proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if ((0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isError */ .VZ)(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if ((0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isEvent */ .cO)(value)) {\n var newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && (0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isInstanceOf */ .V9)(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return (0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isElement */ .kK)(target) ? (0,_browser_js__WEBPACK_IMPORTED_MODULE_1__/* .htmlTreeAsString */ .Rt)(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n var extractedProps = {};\n for (var property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n var keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return (0,_string_js__WEBPACK_IMPORTED_MODULE_2__/* .truncate */ .$G)(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return (0,_string_js__WEBPACK_IMPORTED_MODULE_2__/* .truncate */ .$G)(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n var memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if ((0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isPlainObject */ .PO)(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (var key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n var memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n var returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\n\n//# sourceMappingURL=object.js.map\n\n\n/***/ }),\n\n/***/ 360:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"$P\": function() { return /* binding */ getFunctionName; },\n/* harmony export */ \"Sq\": function() { return /* binding */ stackParserFromStackParserOptions; },\n/* harmony export */ \"pE\": function() { return /* binding */ createStackParser; }\n/* harmony export */ });\n/* unused harmony exports nodeStackLineParser, stripSentryFramesAndReverse */\n\n\nvar STACKTRACE_LIMIT = 50;\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nfunction createStackParser(...parsers) {\n var sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack, skipFirst = 0) => {\n var frames = [];\n\n for (var line of stack.split('\\n').slice(skipFirst)) {\n // https://github.com/getsentry/sentry-javascript/issues/5459\n // Remove webpack (error: *) wrappers\n var cleanedLine = line.replace(/\\(error: (.*)\\)/, '$1');\n\n for (var parser of sortedParsers) {\n var frame = parser(cleanedLine);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * Gets a stack parser implementation from Options.stackParser\n * @see Options\n *\n * If options contains an array of line parsers, it is converted into a parser\n */\nfunction stackParserFromStackParserOptions(stackParser) {\n if (Array.isArray(stackParser)) {\n return createStackParser(...stackParser);\n }\n return stackParser;\n}\n\n/**\n * @hidden\n */\nfunction stripSentryFramesAndReverse(stack) {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n var firstFrameFunction = localStack[0].function || '';\n var lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nvar defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nfunction getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\nfunction node(getModule) {\n var FILENAME_MATCH = /^\\s*[-]{4,}$/;\n var FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\n\n return (line) => {\n if (line.match(FILENAME_MATCH)) {\n return {\n filename: line,\n };\n }\n\n var lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) {\n return undefined;\n }\n\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n\n let methodStart = functionName.lastIndexOf('.');\n if (functionName[methodStart - 1] === '.') {\n methodStart--;\n }\n\n if (methodStart > 0) {\n object = functionName.substr(0, methodStart);\n method = functionName.substr(methodStart + 1);\n var objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.substr(objectEnd + 1);\n object = object.substr(0, objectEnd);\n }\n }\n typeName = undefined;\n }\n\n if (method) {\n typeName = object;\n methodName = method;\n }\n\n if (method === '') {\n methodName = undefined;\n functionName = undefined;\n }\n\n if (functionName === undefined) {\n methodName = methodName || '';\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n\n var filename = _optionalChain([lineMatch, 'access', _ => _[2], 'optionalAccess', _2 => _2.startsWith, 'call', _3 => _3('file://')]) ? lineMatch[2].substr(7) : lineMatch[2];\n var isNative = lineMatch[5] === 'native';\n var isInternal =\n isNative || (filename && !filename.startsWith('/') && !filename.startsWith('.') && filename.indexOf(':\\\\') !== 1);\n\n // in_app is all that's not an internal Node function or a module within node_modules\n // note that isNative appears to return true even for node core libraries\n // see https://github.com/getsentry/raven-node/issues/176\n var in_app = !isInternal && filename !== undefined && !filename.includes('node_modules/');\n\n return {\n filename,\n module: _optionalChain([getModule, 'optionalCall', _4 => _4(filename)]),\n function: functionName,\n lineno: parseInt(lineMatch[3], 10) || undefined,\n colno: parseInt(lineMatch[4], 10) || undefined,\n in_app,\n };\n };\n}\n\n/**\n * Node.js stack line parser\n *\n * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`.\n * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain\n */\nfunction nodeStackLineParser(getModule) {\n return [90, node(getModule)];\n}\n\n\n//# sourceMappingURL=stacktrace.js.map\n\n\n/***/ }),\n\n/***/ 7321:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"$G\": function() { return /* binding */ truncate; },\n/* harmony export */ \"nK\": function() { return /* binding */ safeJoin; },\n/* harmony export */ \"zC\": function() { return /* binding */ isMatchingPattern; }\n/* harmony export */ });\n/* unused harmony exports escapeStringForRegex, snipLine */\n/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7597);\n\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nfunction truncate(str, max = 0) {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nfunction snipLine(line, colno) {\n let newLine = line;\n var lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nfunction safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n\n var output = [];\n for (let i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nfunction isMatchingPattern(value, pattern) {\n if (!(0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isString */ .HD)(value)) {\n return false;\n }\n\n if ((0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isRegExp */ .Kj)(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nfunction escapeStringForRegex(regexString) {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n\n\n//# sourceMappingURL=string.js.map\n\n\n/***/ }),\n\n/***/ 8823:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Ak\": function() { return /* binding */ supportsFetch; },\n/* harmony export */ \"Bf\": function() { return /* binding */ supportsHistory; },\n/* harmony export */ \"Du\": function() { return /* binding */ isNativeFetch; },\n/* harmony export */ \"t$\": function() { return /* binding */ supportsNativeFetch; }\n/* harmony export */ });\n/* unused harmony exports supportsDOMError, supportsDOMException, supportsErrorEvent, supportsReferrerPolicy, supportsReportingObserver */\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2991);\n/* harmony import */ var _logger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2343);\n\n\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsDOMException() {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsFetch() {\n if (!('fetch' in (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('http://www.example.com');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nfunction supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n\n var global = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)();\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n var doc = global.document;\n if (doc && typeof (doc.createElement ) === 'function') {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n _logger_js__WEBPACK_IMPORTED_MODULE_1__/* .logger.warn */ .kg.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' ,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)();\n var chrome = (global ).chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\n\n//# sourceMappingURL=supports.js.map\n\n\n/***/ }),\n\n/***/ 6893:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"$2\": function() { return /* binding */ rejectedSyncPromise; },\n/* harmony export */ \"WD\": function() { return /* binding */ resolvedSyncPromise; },\n/* harmony export */ \"cW\": function() { return /* binding */ SyncPromise; }\n/* harmony export */ });\n/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7597);\n\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n var PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n var RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n var REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n __init() {this._state = States.PENDING;}\n __init2() {this._handlers = [];}\n \n\n constructor(\n executor,\n ) {;SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);SyncPromise.prototype.__init5.call(this);SyncPromise.prototype.__init6.call(this);\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init3() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init4() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init5() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if ((0,_is_js__WEBPACK_IMPORTED_MODULE_0__/* .isThenable */ .J8)(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init6() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n var cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\n\n//# sourceMappingURL=syncpromise.js.map\n\n\n/***/ }),\n\n/***/ 1170:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Z1\": function() { return /* binding */ browserPerformanceTimeOrigin; },\n/* harmony export */ \"_I\": function() { return /* binding */ timestampWithMs; },\n/* harmony export */ \"ph\": function() { return /* binding */ timestampInSeconds; },\n/* harmony export */ \"yW\": function() { return /* binding */ dateTimestampInSeconds; }\n/* harmony export */ });\n/* unused harmony exports _browserPerformanceTimeOriginMode, usingPerformanceAPI */\n/* harmony import */ var _global_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2991);\n/* harmony import */ var _node_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2448);\n/* module decorator */ module = __webpack_require__.hmd(module);\n\n\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nvar dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n var timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n var perfHooks = (0,_node_js__WEBPACK_IMPORTED_MODULE_1__/* .dynamicRequire */ .l$)(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nvar platformPerformance = (0,_node_js__WEBPACK_IMPORTED_MODULE_1__/* .isNodeEnv */ .KV)() ? getNodePerformance() : getBrowserPerformance();\n\nvar timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nvar dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nvar timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nvar timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nvar usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nvar browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = (0,_global_js__WEBPACK_IMPORTED_MODULE_0__/* .getGlobalObject */ .R)();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n var threshold = 3600 * 1000;\n var performanceNow = performance.now();\n var dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n var timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n var timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n var navigationStart = performance.timing && performance.timing.navigationStart;\n var hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n var navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n var navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\n\n//# sourceMappingURL=time.js.map\n\n\n/***/ }),\n\n/***/ 6956:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"en\": function() { return /* binding */ parseUrl; },\n/* harmony export */ \"rt\": function() { return /* binding */ stripUrlQueryAndFragment; }\n/* harmony export */ });\n/* unused harmony export getNumberOfUrlSegments */\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nfunction parseUrl(url)\n\n {\n if (!url) {\n return {};\n }\n\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nfunction stripUrlQueryAndFragment(urlPath) {\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Returns number of URL segments of a passed string URL.\n */\nfunction getNumberOfUrlSegments(url) {\n // split at '/' or at '\\/' to split regex urls correctly\n return url.split(/\\\\?\\//).filter(s => s.length > 0 && s !== ',').length;\n}\n\n\n//# sourceMappingURL=url.js.map\n\n\n/***/ }),\n\n/***/ 6395:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar _global = (typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof self !== 'undefined' ? self : {}); _global.SENTRY_RELEASE={id:\"FEsgFSTXEZVnn1HB_lPmU\"};\n\n/***/ }),\n\n/***/ 3454:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ref, ref1;\nmodule.exports = ((ref = __webpack_require__.g.process) == null ? void 0 : ref.env) && typeof ((ref1 = __webpack_require__.g.process) == null ? void 0 : ref1.env) === \"object\" ? __webpack_require__.g.process : __webpack_require__(7663);\n\n//# sourceMappingURL=process.js.map\n\n/***/ }),\n\n/***/ 6840:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/_app\",\n function () {\n return __webpack_require__(3847);\n }\n ]);\n if(false) {}\n \n\n/***/ }),\n\n/***/ 3847:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5893);\n/* harmony import */ var _styles_main_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7280);\n/* harmony import */ var _styles_main_scss__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_main_scss__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7294);\n/* harmony import */ var react_gtm_module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1785);\n/* harmony import */ var react_gtm_module__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_gtm_module__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n// import { LiveChatWidget, EventHandlerPayload } from '@livechat/widget-react';\nconst GTM_ID = \"GTM-WJNW7T7\";\nfunction MyApp(param) {\n let { Component , pageProps } = param;\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(()=>{\n // Initialize Google Tag Manager\n if (GTM_ID) {\n react_gtm_module__WEBPACK_IMPORTED_MODULE_3___default().initialize({\n gtmId: GTM_ID\n });\n }\n }, []);\n // // Logs new events from the LiveChat widget, useful for debugging\n // function handleNewEvent(event: EventHandlerPayload<'onNewEvent'>) {\n // console.log('LiveChatWidget.onNewEvent', event);\n // }\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Component, {\n ...pageProps\n })\n });\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (MyApp);\n\n\n/***/ }),\n\n/***/ 5335:\n/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/version.js\nvar SDK_VERSION = '7.12.1';\n\n\n//# sourceMappingURL=version.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/logger.js\nvar esm_logger = __webpack_require__(2343);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/misc.js\nvar misc = __webpack_require__(2844);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/string.js\nvar string = __webpack_require__(7321);\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/integrations/inboundfilters.js\n\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\n\n/** Inbound filters configurable by the user */\nclass InboundFilters {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'InboundFilters';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = InboundFilters.id;}\n\n constructor( _options = {}) {;this._options = _options;InboundFilters.prototype.__init.call(this);}\n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcess = (event) => {\n var hub = getCurrentHub();\n if (hub) {\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n };\n\n eventProcess.id = this.name;\n addGlobalEventProcessor(eventProcess);\n }\n} InboundFilters.__initStatic();\n\n/** JSDoc */\nfunction _mergeOptions(\n internalOptions = {},\n clientOptions = {},\n) {\n return {\n allowUrls: [...(internalOptions.allowUrls || []), ...(clientOptions.allowUrls || [])],\n denyUrls: [...(internalOptions.denyUrls || []), ...(clientOptions.denyUrls || [])],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(event, options) {\n if (options.ignoreInternal && _isSentryError(event)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${(0,misc/* getEventDescription */.jH)(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${(0,misc/* getEventDescription */.jH)(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${(0,misc/* getEventDescription */.jH)(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${(0,misc/* getEventDescription */.jH)(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event, ignoreErrors) {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => (0,string/* isMatchingPattern */.zC)(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event, denyUrls) {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n var url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => (0,string/* isMatchingPattern */.zC)(url, pattern));\n}\n\nfunction _isAllowedUrl(event, allowUrls) {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n var url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => (0,string/* isMatchingPattern */.zC)(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error(`Cannot extract message for event ${(0,misc/* getEventDescription */.jH)(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event) {\n try {\n // @ts-ignore can't be a sentry error if undefined\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames = []) {\n for (let i = frames.length - 1; i >= 0; i--) {\n var frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event) {\n try {\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error(`Cannot extract url for event ${(0,misc/* getEventDescription */.jH)(event)}`);\n return null;\n }\n}\n\n\n//# sourceMappingURL=inboundfilters.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/object.js\nvar object = __webpack_require__(535);\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/integrations/functiontostring.js\n\n\nlet originalFunctionToString;\n\n/** Patch toString calls to return proper name for wrapped functions */\nclass FunctionToString {constructor() { FunctionToString.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'FunctionToString';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = FunctionToString.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n originalFunctionToString = Function.prototype.toString;\n\n Function.prototype.toString = function ( ...args) {\n var context = (0,object/* getOriginalFunction */.HK)(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n} FunctionToString.__initStatic();\n\n\n//# sourceMappingURL=functiontostring.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/hub/esm/scope.js\nvar esm_scope = __webpack_require__(6769);\n// EXTERNAL MODULE: ./node_modules/@sentry/hub/esm/hub.js\nvar esm_hub = __webpack_require__(8641);\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/integration.js\n\n\n\nvar installedIntegrations = [];\n\n/** Map of integrations assigned to a client */\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations) {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] );\n}\n\n/** Gets integration to install */\nfunction getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n var userIntegrations = options.integrations;\n\n let integrations = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(i => i.name);\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nfunction setupIntegrations(integrations) {\n var integrationIndex = {};\n\n integrations.forEach(integration => {\n integrationIndex[integration.name] = integration;\n\n if (installedIntegrations.indexOf(integration.name) === -1) {\n integration.setupOnce(esm_scope/* addGlobalEventProcessor */.c, esm_hub/* getCurrentHub */.Gd);\n installedIntegrations.push(integration.name);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log(`Integration installed: ${integration.name}`);\n }\n });\n\n return integrationIndex;\n}\n\n\n//# sourceMappingURL=integration.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/sdk.js\n\n\n\n/** A class object that can instantiate Client objects. */\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nfunction initAndBind(\n clientClass,\n options,\n) {\n if (options.debug === true) {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n esm_logger/* logger.enable */.kg.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n var hub = (0,esm_hub/* getCurrentHub */.Gd)();\n var scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n\n\n//# sourceMappingURL=sdk.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/global.js\nvar esm_global = __webpack_require__(2991);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/stacktrace.js\nvar stacktrace = __webpack_require__(360);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/supports.js\nvar supports = __webpack_require__(8823);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/instrument.js\nvar instrument = __webpack_require__(9732);\n// EXTERNAL MODULE: ./node_modules/@sentry/hub/esm/session.js\nvar esm_session = __webpack_require__(5771);\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/error.js\n/** An error emitted by Sentry SDKs and related utilities. */\nclass SentryError extends Error {\n /** Display name of this error instance. */\n \n\n constructor( message, logLevel = 'warn') {\n super(message);this.message = message;;\n\n this.name = new.target.prototype.constructor.name;\n // This sets the prototype to be `Error`, not `SentryError`. It's unclear why we do this, but commenting this line\n // out causes various (seemingly totally unrelated) playwright tests consistently time out. FYI, this makes\n // instances of `SentryError` fail `obj instanceof SentryError` checks.\n Object.setPrototypeOf(this, new.target.prototype);\n this.logLevel = logLevel;\n }\n}\n\n\n//# sourceMappingURL=error.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/dsn.js\n\n\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol) {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nfunction dsn_dsnToString(dsn, withPassword = false) {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\n/**\n * Parses a Dsn from a given string.\n *\n * @param str A Dsn as string\n * @returns Dsn as DsnComponents\n */\nfunction dsnFromString(str) {\n var match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() ;\n }\n\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol , publicKey });\n}\n\nfunction dsnFromComponents(components) {\n return {\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn) {\n if (!(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n var requiredComponents = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nfunction dsn_makeDsn(from) {\n var components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n validateDsn(components);\n return components;\n}\n\n\n//# sourceMappingURL=dsn.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/is.js\nvar is = __webpack_require__(7597);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/syncpromise.js\nvar syncpromise = __webpack_require__(6893);\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/envelope.js\n\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction createEnvelope(headers, items = []) {\n return [headers, items] ;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nfunction addItemToEnvelope(envelope, newItem) {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] ;\n}\n\n/**\n * Convenience function to loop through the items and item types of an envelope.\n * (This function was mostly created because working with envelope types is painful at the moment)\n */\nfunction forEachEnvelopeItem(\n envelope,\n callback,\n) {\n var envelopeItems = envelope[1];\n envelopeItems.forEach((envelopeItem) => {\n var envelopeItemType = envelopeItem[0].type;\n callback(envelopeItem, envelopeItemType);\n });\n}\n\nfunction encodeUTF8(input, textEncoder) {\n var utf8 = textEncoder || new TextEncoder();\n return utf8.encode(input);\n}\n\n/**\n * Serializes an envelope.\n */\nfunction serializeEnvelope(envelope, textEncoder) {\n const [envHeaders, items] = envelope;\n\n // Initially we construct our envelope as a string and only convert to binary chunks if we encounter binary data\n let parts = JSON.stringify(envHeaders);\n\n function append(next) {\n if (typeof parts === 'string') {\n parts = typeof next === 'string' ? parts + next : [encodeUTF8(parts, textEncoder), next];\n } else {\n parts.push(typeof next === 'string' ? encodeUTF8(next, textEncoder) : next);\n }\n }\n\n for (var item of items) {\n const [itemHeaders, payload] = item ;\n append(`\\n${JSON.stringify(itemHeaders)}\\n`);\n append(typeof payload === 'string' || payload instanceof Uint8Array ? payload : JSON.stringify(payload));\n }\n\n return typeof parts === 'string' ? parts : concatBuffers(parts);\n}\n\nfunction concatBuffers(buffers) {\n var totalLength = buffers.reduce((acc, buf) => acc + buf.length, 0);\n\n var merged = new Uint8Array(totalLength);\n let offset = 0;\n for (var buffer of buffers) {\n merged.set(buffer, offset);\n offset += buffer.length;\n }\n\n return merged;\n}\n\n/**\n * Creates attachment envelope items\n */\nfunction createAttachmentEnvelopeItem(\n attachment,\n textEncoder,\n) {\n var buffer = typeof attachment.data === 'string' ? encodeUTF8(attachment.data, textEncoder) : attachment.data;\n\n return [\n (0,object/* dropUndefinedKeys */.Jr)({\n type: 'attachment',\n length: buffer.length,\n filename: attachment.filename,\n content_type: attachment.contentType,\n attachment_type: attachment.attachmentType,\n }),\n buffer,\n ];\n}\n\nvar ITEM_TYPE_TO_DATA_CATEGORY_MAP = {\n session: 'session',\n sessions: 'session',\n attachment: 'attachment',\n transaction: 'transaction',\n event: 'error',\n client_report: 'internal',\n user_report: 'default',\n};\n\n/**\n * Maps the type of an envelope item to a data category.\n */\nfunction envelopeItemTypeToDataCategory(type) {\n return ITEM_TYPE_TO_DATA_CATEGORY_MAP[type];\n}\n\n\n//# sourceMappingURL=envelope.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/time.js\nvar time = __webpack_require__(1170);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/normalize.js + 1 modules\nvar normalize = __webpack_require__(4754);\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/api.js\n\n\nvar SENTRY_API_VERSION = '7';\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn) {\n var protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n var port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn) {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/envelope/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn, sdkInfo) {\n return (0,object/* urlEncode */._j)({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n ...(sdkInfo && { sentry_client: `${sdkInfo.name}/${sdkInfo.version}` }),\n });\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nfunction getEnvelopeEndpointWithUrlEncodedAuth(\n dsn,\n // TODO (v8): Remove `tunnelOrOptions` in favor of `options`, and use the substitute code below\n // options: ClientOptions = {} as ClientOptions,\n tunnelOrOptions = {} ,\n) {\n // TODO (v8): Use this code instead\n // const { tunnel, _metadata = {} } = options;\n // return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, _metadata.sdk)}`;\n\n var tunnel = typeof tunnelOrOptions === 'string' ? tunnelOrOptions : tunnelOrOptions.tunnel;\n var sdkInfo =\n typeof tunnelOrOptions === 'string' || !tunnelOrOptions._metadata ? undefined : tunnelOrOptions._metadata.sdk;\n\n return tunnel ? tunnel : `${_getIngestEndpoint(dsn)}?${_encodedAuth(dsn, sdkInfo)}`;\n}\n\n/** Returns the url to the report dialog endpoint. */\nfunction api_getReportDialogEndpoint(\n dsnLike,\n dialogOptions\n\n,\n) {\n var dsn = makeDsn(dsnLike);\n var endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (var key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n var user = dialogOptions.user;\n if (!user) {\n continue;\n }\n if (user.name) {\n encodedOptions += `&name=${encodeURIComponent(user.name)}`;\n }\n if (user.email) {\n encodedOptions += `&email=${encodeURIComponent(user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] )}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n\n\n//# sourceMappingURL=api.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/baggage.js\nvar esm_baggage = __webpack_require__(9181);\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/envelope.js\n\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(metadata) {\n if (!metadata || !metadata.sdk) {\n return;\n }\n const { name, version } = metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event, sdkInfo) {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nfunction createSessionEnvelope(\n session,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsn_dsnToString(dsn) }),\n };\n\n var envelopeItem =\n 'aggregates' in session ? [{ type: 'sessions' }, session] : [{ type: 'session' }, session];\n\n return createEnvelope(envelopeHeaders, [envelopeItem]);\n}\n\n/**\n * Create an Envelope from an event.\n */\nfunction createEventEnvelope(\n event,\n dsn,\n metadata,\n tunnel,\n) {\n var sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);\n var eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n enhanceEventWithSdkInfo(event, metadata && metadata.sdk);\n\n var envelopeHeaders = createEventEnvelopeHeaders(event, sdkInfo, tunnel, dsn);\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete event.sdkProcessingMetadata;\n\n var eventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\nfunction createEventEnvelopeHeaders(\n event,\n sdkInfo,\n tunnel,\n dsn,\n) {\n var baggage = event.sdkProcessingMetadata && event.sdkProcessingMetadata.baggage;\n var dynamicSamplingContext = baggage && (0,esm_baggage/* getSentryBaggageItems */.Hk)(baggage);\n\n return {\n event_id: event.event_id ,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!tunnel && { dsn: dsn_dsnToString(dsn) }),\n ...(event.type === 'transaction' &&\n dynamicSamplingContext && {\n trace: (0,object/* dropUndefinedKeys */.Jr)({ ...dynamicSamplingContext }) ,\n }),\n };\n}\n\n\n//# sourceMappingURL=envelope.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/baseclient.js\n\n\n\n\n\n\nvar ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n \n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n \n\n /** Array of set up integrations. */\n __init() {this._integrations = {};}\n\n /** Indicates whether this client's integrations have been set up. */\n __init2() {this._integrationsInitialized = false;}\n\n /** Number of calls being processed */\n __init3() {this._numProcessing = 0;}\n\n /** Holds flushable */\n __init4() {this._outcomes = {};}\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {;BaseClient.prototype.__init.call(this);BaseClient.prototype.__init2.call(this);BaseClient.prototype.__init3.call(this);BaseClient.prototype.__init4.call(this);\n this._options = options;\n if (options.dsn) {\n this._dsn = dsn_makeDsn(options.dsn);\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, options);\n this._transport = options.transport({\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn('No DSN provided, client will not do anything.');\n }\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n // ensure we haven't captured this very object before\n if ((0,misc/* checkOrSetAlreadyCaught */.YO)(exception)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this.eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n scope,\n ) {\n let eventId = hint && hint.event_id;\n\n var promisedEvent = (0,is/* isPrimitive */.pt)(message)\n ? this.eventFromMessage(String(message), level, hint)\n : this.eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, scope) {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && (0,misc/* checkOrSetAlreadyCaught */.YO)(hint.originalException)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!this._isEnabled()) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n (0,esm_session/* updateSession */.CT)(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n var transport = this._transport;\n if (transport) {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return (0,syncpromise/* resolvedSyncPromise */.WD)(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n setupIntegrations() {\n if (this._isEnabled() && !this._integrationsInitialized) {\n this._integrations = setupIntegrations(this._options.integrations);\n this._integrationsInitialized = true;\n }\n }\n\n /**\n * Gets an installed integration by its `id`.\n *\n * @returns The installed integration or `undefined` if no integration with that `id` was installed.\n */\n getIntegrationById(integrationId) {\n return this._integrations[integrationId];\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n try {\n return (this._integrations[integration.id] ) || null;\n } catch (_oO) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n if (this._dsn) {\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (var attachment of hint.attachments || []) {\n env = addItemToEnvelope(\n env,\n createAttachmentEnvelopeItem(\n attachment,\n this._options.transportOptions && this._options.transportOptions.textEncoder,\n ),\n );\n }\n\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n if (this._dsn) {\n var env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n this._sendEnvelope(env);\n }\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category) {\n if (this._options.sendClientReports) {\n // We want to track each category (error, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n var key = `${reason}:${category}`;\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log(`Adding outcome: \"${key}\"`);\n\n // The following works because undefined + 1 === NaN and NaN is falsy\n this._outcomes[key] = this._outcomes[key] + 1 || 1;\n }\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n var exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (var ex of exceptions) {\n var mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n var sessionNonTerminal = session.status === 'ok';\n var shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n (0,esm_session/* updateSession */.CT)(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new syncpromise/* SyncPromise */.cW(resolve => {\n let ticked = 0;\n var tick = 1;\n\n var interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(event, hint, scope) {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1000 } = this.getOptions();\n var prepared = {\n ...event,\n event_id: event.event_id || hint.event_id || (0,misc/* uuid4 */.DM)(),\n timestamp: event.timestamp || (0,time/* dateTimestampInSeconds */.yW)(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint.captureContext) {\n finalScope = esm_scope/* Scope.clone */.s.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = (0,syncpromise/* resolvedSyncPromise */.WD)(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // Collect attachments from the hint and scope\n var attachments = [...(hint.attachments || []), ...finalScope.getAttachments()];\n\n if (attachments.length) {\n hint.attachments = attachments;\n }\n\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n _normalizeEvent(event, depth, maxBreadth) {\n if (!event) {\n return null;\n }\n\n var normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: (0,normalize/* normalize */.Fv)(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: (0,normalize/* normalize */.Fv)(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: (0,normalize/* normalize */.Fv)(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: (0,normalize/* normalize */.Fv)(event.extra, depth, maxBreadth),\n }),\n };\n\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace && normalized.contexts) {\n normalized.contexts.trace = event.contexts.trace;\n\n // event.contexts.trace.data may contain circular/dangerous data so we need to normalize it\n if (event.contexts.trace.data) {\n normalized.contexts.trace.data = (0,normalize/* normalize */.Fv)(event.contexts.trace.data, depth, maxBreadth);\n }\n }\n\n // event.spans[].data may contain circular/dangerous data so we need to normalize it\n if (event.spans) {\n normalized.spans = event.spans.map(span => {\n // We cannot use the spread operator here because `toJSON` on `span` is non-enumerable\n if (span.data) {\n span.data = (0,normalize/* normalize */.Fv)(span.data, depth, maxBreadth);\n }\n return span;\n });\n }\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n _applyClientOptions(event) {\n var options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = (0,string/* truncate */.$G)(event.message, maxValueLength);\n }\n\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = (0,string/* truncate */.$G)(exception.value, maxValueLength);\n }\n\n var request = event.request;\n if (request && request.url) {\n request.url = (0,string/* truncate */.$G)(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n _applyIntegrationsMetadata(event) {\n var integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n var sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n esm_logger/* logger.log */.kg.log(sentryError.message);\n } else {\n esm_logger/* logger.warn */.kg.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, scope) {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return (0,syncpromise/* rejectedSyncPromise */.$2)(new SentryError('SDK not enabled, will not capture event.', 'log'));\n }\n\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n this.recordDroppedEvent('sample_rate', 'error');\n return (0,syncpromise/* rejectedSyncPromise */.$2)(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n return this._prepareEvent(event, hint, scope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', event.type || 'error');\n throw new SentryError('An event processor returned null, will not send event.', 'log');\n }\n\n var isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n var beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', event.type || 'error');\n throw new SentryError('`beforeSend` returned `null`, will not send event.', 'log');\n }\n\n var session = scope && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason ,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n\n /**\n * @inheritdoc\n */\n _sendEnvelope(envelope) {\n if (this._transport && this._dsn) {\n this._transport.send(envelope).then(null, reason => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error('Error while sending event:', reason);\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error('Transport disabled');\n }\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n var outcomes = this._outcomes;\n this._outcomes = {};\n return Object.keys(outcomes).map(key => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n });\n }\n\n /**\n * @inheritDoc\n */\n \n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv) {\n var nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if ((0,is/* isThenable */.J8)(rv)) {\n return rv.then(\n event => {\n if (!((0,is/* isPlainObject */.PO)(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!((0,is/* isPlainObject */.PO)(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n\n\n//# sourceMappingURL=baseclient.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/clientreport.js\n\n\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n var clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || (0,time/* dateTimestampInSeconds */.yW)(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\n\n//# sourceMappingURL=clientreport.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/eventbuilder.js\n\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n var frames = parseStackFrames(stackParser, ex);\n\n var exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n var event = {\n exception: {\n values: [\n {\n type: (0,is/* isEvent */.cO)(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${(0,object/* extractExceptionKeysForMessage */.zf)(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: (0,normalize/* normalizeToSize */.Qy)(exception),\n },\n };\n\n if (syntheticException) {\n var frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace || ex.stack || '';\n\n var popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n (0,misc/* addExceptionMechanism */.EG)(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return (0,syncpromise/* resolvedSyncPromise */.WD)(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n level = 'info',\n hint,\n attachStacktrace,\n) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return (0,syncpromise/* resolvedSyncPromise */.WD)(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if ((0,is/* isErrorEvent */.VW)(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if ((0,is/* isDOMError */.TX)(exception ) || (0,is/* isDOMException */.fm)(exception )) {\n var domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n var name = domException.name || ((0,is/* isDOMError */.TX)(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n (0,misc/* addExceptionTypeValue */.Db)(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if ((0,is/* isError */.VZ)(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if ((0,is/* isPlainObject */.PO)(exception) || (0,is/* isEvent */.cO)(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n var objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n (0,misc/* addExceptionMechanism */.EG)(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n (0,misc/* addExceptionTypeValue */.Db)(event, `${exception}`, undefined);\n (0,misc/* addExceptionMechanism */.EG)(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n input,\n syntheticException,\n attachStacktrace,\n) {\n var event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n var frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: input, stacktrace: { frames } }],\n };\n }\n }\n\n return event;\n}\n\n\n//# sourceMappingURL=eventbuilder.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/browser.js\nvar browser = __webpack_require__(8464);\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/severity.js\n// Note: Ideally the `SeverityLevel` type would be derived from `validSeverityLevels`, but that would mean either\n//\n// a) moving `validSeverityLevels` to `@sentry/types`,\n// b) moving the`SeverityLevel` type here, or\n// c) importing `validSeverityLevels` from here into `@sentry/types`.\n//\n// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would\n// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the\n// type, reminding anyone who changes it to change this list also, will have to do.\n\nvar validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug'];\n\n/**\n * Converts a string-based level into a member of the deprecated {@link Severity} enum.\n *\n * @deprecated `severityFromString` is deprecated. Please use `severityLevelFromString` instead.\n *\n * @param level String representation of Severity\n * @returns Severity\n */\nfunction severityFromString(level) {\n return severityLevelFromString(level) ;\n}\n\n/**\n * Converts a string-based level into a `SeverityLevel`, normalizing it along the way.\n *\n * @param level String representation of desired `SeverityLevel`.\n * @returns The `SeverityLevel` corresponding to the given string, or 'log' if the string isn't a valid level.\n */\nfunction severityLevelFromString(level) {\n return (level === 'warn' ? 'warning' : validSeverityLevels.includes(level) ? level : 'log') ;\n}\n\n\n//# sourceMappingURL=severity.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/url.js\nvar esm_url = __webpack_require__(6956);\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js\n\n\n\n/** JSDoc */\n\nvar BREADCRUMB_INTEGRATION_ID = 'Breadcrumbs';\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nclass Breadcrumbs {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = BREADCRUMB_INTEGRATION_ID;}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Breadcrumbs.id;}\n\n /**\n * Options of the breadcrumbs integration.\n */\n // This field is public, because we use it in the browser client to check if the `sentry` option is enabled.\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;Breadcrumbs.prototype.__init.call(this);\n this.options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n setupOnce() {\n if (this.options.console) {\n (0,instrument/* addInstrumentationHandler */.o)('console', _consoleBreadcrumb);\n }\n if (this.options.dom) {\n (0,instrument/* addInstrumentationHandler */.o)('dom', _domBreadcrumb(this.options.dom));\n }\n if (this.options.xhr) {\n (0,instrument/* addInstrumentationHandler */.o)('xhr', _xhrBreadcrumb);\n }\n if (this.options.fetch) {\n (0,instrument/* addInstrumentationHandler */.o)('fetch', _fetchBreadcrumb);\n }\n if (this.options.history) {\n (0,instrument/* addInstrumentationHandler */.o)('history', _historyBreadcrumb);\n }\n }\n} Breadcrumbs.__initStatic();\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\nfunction _domBreadcrumb(dom) {\n function _innerDomBreadcrumb(handlerData) {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? (0,browser/* htmlTreeAsString */.Rt)(handlerData.event.target , keyAttrs)\n : (0,browser/* htmlTreeAsString */.Rt)(handlerData.event , keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n (0,esm_hub/* getCurrentHub */.Gd)().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\nfunction _consoleBreadcrumb(handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityLevelFromString(handlerData.level),\n message: (0,string/* safeJoin */.nK)(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${(0,string/* safeJoin */.nK)(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n (0,esm_hub/* getCurrentHub */.Gd)().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\nfunction _xhrBreadcrumb(handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n (0,esm_hub/* getCurrentHub */.Gd)().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\nfunction _fetchBreadcrumb(handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n (0,esm_hub/* getCurrentHub */.Gd)().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: 'error',\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n (0,esm_hub/* getCurrentHub */.Gd)().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\nfunction _historyBreadcrumb(handlerData) {\n var global = (0,esm_global/* getGlobalObject */.R)();\n let from = handlerData.from;\n let to = handlerData.to;\n var parsedLoc = (0,esm_url/* parseUrl */.en)(global.location.href);\n let parsedFrom = (0,esm_url/* parseUrl */.en)(from);\n var parsedTo = (0,esm_url/* parseUrl */.en)(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n (0,esm_hub/* getCurrentHub */.Gd)().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n\n\n//# sourceMappingURL=breadcrumbs.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/transports/utils.js\n\n\nvar global = (0,esm_global/* getGlobalObject */.R)();\nlet cachedFetchImpl;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * var f = window.fetch;\n * window.fetch = function () {\n * var p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction getNativeFetchImplementation() {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n // Fast path to avoid DOM I/O\n if ((0,supports/* isNativeFetch */.Du)(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n var document = global.document;\n let fetchImpl = global.fetch;\n if (document && typeof document.createElement === 'function') {\n try {\n var sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n var contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n }\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nfunction sendReport(url, body) {\n var isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n var hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n var sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n sendBeacon(url, body);\n } else if ((0,supports/* supportsFetch */.Ak)()) {\n var fetch = getNativeFetchImplementation();\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }).then(null, error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error(error);\n });\n }\n}\n\n\n//# sourceMappingURL=utils.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/client.js\n\n\n\n\n\n\nvar globalObject = (0,esm_global/* getGlobalObject */.R)();\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(options);\n\n if (options.sendClientReports && globalObject.document) {\n globalObject.document.addEventListener('visibilitychange', () => {\n if (globalObject.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint) {\n // We only want to add the sentry event breadcrumb when the user has the breadcrumb integration installed and\n // activated its `sentry` option.\n // We also do not want to use the `Breadcrumbs` class here directly, because we do not want it to be included in\n // bundles, if it is not used by the SDK.\n // This all sadly is a bit ugly, but we currently don't have a \"pre-send\" hook on the integrations so we do it this\n // way for now.\n var breadcrumbIntegration = this.getIntegrationById(BREADCRUMB_INTEGRATION_ID) ;\n if (\n breadcrumbIntegration &&\n // We check for definedness of `options`, even though it is not strictly necessary, because that access to\n // `.sentry` below does not throw, in case users provided their own integration with id \"Breadcrumbs\" that does\n // not have an`options` field\n breadcrumbIntegration.options &&\n breadcrumbIntegration.options.sentry\n ) {\n (0,esm_hub/* getCurrentHub */.Gd)().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: (0,misc/* getEventDescription */.jH)(event),\n },\n {\n event,\n },\n );\n }\n\n super.sendEvent(event, hint);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n var outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('No outcomes to send');\n return;\n }\n\n if (!this._dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('No dsn provided, will not send outcomes');\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('Sending outcomes:', outcomes);\n\n var url = getEnvelopeEndpointWithUrlEncodedAuth(this._dsn, this._options);\n var envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsn_dsnToString(this._dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error(e);\n }\n }\n}\n\n\n//# sourceMappingURL=client.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/stack-parsers.js\n\n\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n\nvar OPERA10_PRIORITY = 10;\nvar OPERA11_PRIORITY = 20;\nvar CHROME_PRIORITY = 30;\nvar WINJS_PRIORITY = 40;\nvar GECKO_PRIORITY = 50;\n\nfunction createFrame(filename, func, lineno, colno) {\n var frame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chromeRegex =\n /^\\s*at (?:(.*\\).*?|.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/)?.*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nvar chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nvar chrome = line => {\n var parts = chromeRegex.exec(line);\n\n if (parts) {\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n var subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nvar chromeStackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|safari-extension|safari-web-extension|capacitor)?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nvar gecko = line => {\n var parts = geckoREgex.exec(line);\n\n if (parts) {\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n var subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nvar geckoStackLineParser = [GECKO_PRIORITY, gecko];\n\nvar winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nvar winjs = line => {\n var parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nvar winjsStackLineParser = [WINJS_PRIORITY, winjs];\n\nvar opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nvar opera10 = line => {\n var parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nvar opera10StackLineParser = [OPERA10_PRIORITY, opera10];\n\nvar opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nvar opera11 = line => {\n var parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nvar opera11StackLineParser = [OPERA11_PRIORITY, opera11];\n\nvar defaultStackLineParsers = [chromeStackLineParser, geckoStackLineParser, winjsStackLineParser];\n\nvar defaultStackParser = (0,stacktrace/* createStackParser */.pE)(...defaultStackLineParsers);\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nvar extractSafariExtensionDetails = (func, filename) => {\n var isSafariExtension = func.indexOf('safari-extension') !== -1;\n var isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n\n\n//# sourceMappingURL=stack-parsers.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/hub/esm/exports.js\nvar esm_exports = __webpack_require__(2876);\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/helpers.js\n\n\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n ) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n var wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if ((0,object/* getOriginalFunction */.HK)(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n var wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n (0,esm_exports/* withScope */.$e)((scope) => {\n scope.addEventProcessor((event) => {\n if (options.mechanism) {\n (0,misc/* addExceptionTypeValue */.Db)(event, undefined, undefined);\n (0,misc/* addExceptionMechanism */.EG)(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n (0,esm_exports/* captureException */.Tb)(ex);\n });\n\n throw ex;\n }\n };\n \n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} \n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n (0,object/* markFunctionWrapped */.$Q)(sentryWrapped, fn);\n\n (0,object/* addNonEnumerableProperty */.xp)(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\n\n\n//# sourceMappingURL=helpers.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/integrations/trycatch.js\n\n\n\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nclass TryCatch {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'TryCatch';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = TryCatch.id;}\n\n /** JSDoc */\n \n\n /**\n * @inheritDoc\n */\n constructor(options) {;TryCatch.prototype.__init.call(this);\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n setupOnce() {\n var global = (0,esm_global/* getGlobalObject */.R)();\n\n if (this._options.setTimeout) {\n (0,object/* fill */.hl)(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n (0,object/* fill */.hl)(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n (0,object/* fill */.hl)(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n (0,object/* fill */.hl)(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n var eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n var eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n} TryCatch.__initStatic();\n\n/** JSDoc */\nfunction _wrapTimeFunction(original) {\n return function ( ...args) {\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: (0,stacktrace/* getFunctionName */.$P)(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapRAF(original) {\n return function ( callback) {\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: (0,stacktrace/* getFunctionName */.$P)(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend) {\n return function ( ...args) {\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n (0,object/* fill */.hl)(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: (0,stacktrace/* getFunctionName */.$P)(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n var originalFunction = (0,object/* getOriginalFunction */.HK)(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = (0,stacktrace/* getFunctionName */.$P)(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target) {\n var global = (0,esm_global/* getGlobalObject */.R)() ;\n var proto = global[target] && global[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n (0,object/* fill */.hl)(proto, 'addEventListener', function (original)\n\n {\n return function (\n \n eventName,\n fn,\n options,\n ) {\n try {\n if (typeof fn.handleEvent === 'function') {\n // ESlint disable explanation:\n // First, it is generally safe to call `wrap` with an unbound function. Furthermore, using `.bind()` would\n // introduce a bug here, because bind returns a new function that doesn't have our\n // flags(like __sentry_original__) attached. `wrap` checks for those flags to avoid unnecessary wrapping.\n // Without those flags, every call to addEventListener wraps the function again, causing a memory leak.\n fn.handleEvent = wrap(fn.handleEvent, {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: (0,stacktrace/* getFunctionName */.$P)(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n wrap(fn , {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: (0,stacktrace/* getFunctionName */.$P)(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n (0,object/* fill */.hl)(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener,\n ) {\n return function (\n \n eventName,\n fn,\n options,\n ) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n var wrappedEventHandler = fn ;\n try {\n var originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n\n\n//# sourceMappingURL=trycatch.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/integrations/globalhandlers.js\n\n\n\n\n\n/** Global handlers */\nclass GlobalHandlers {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'GlobalHandlers';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = GlobalHandlers.id;}\n\n /** JSDoc */\n \n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n __init2() {this._installFunc = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };}\n\n /** JSDoc */\n constructor(options) {;GlobalHandlers.prototype.__init.call(this);GlobalHandlers.prototype.__init2.call(this);\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n setupOnce() {\n Error.stackTraceLimit = 50;\n var options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n for (var key in options) {\n var installFunc = this._installFunc[key ];\n if (installFunc && options[key ]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key ] = undefined;\n }\n }\n }\n} GlobalHandlers.__initStatic();\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler() {\n (0,instrument/* addInstrumentationHandler */.o)(\n 'error',\n (data) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n var event =\n error === undefined && (0,is/* isString */.HD)(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(stackParser, error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler() {\n (0,instrument/* addInstrumentationHandler */.o)(\n 'unhandledrejection',\n (e) => {\n const [hub, stackParser, attachStacktrace] = getHubAndOptions();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n var event = (0,is/* isPrimitive */.pt)(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(stackParser, error, undefined, attachStacktrace, true);\n\n event.level = 'error';\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\nfunction _eventFromIncompleteOnError(msg, url, line, column) {\n var ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = (0,is/* isErrorEvent */.VW)(msg) ? msg.message : msg;\n let name = 'Error';\n\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n var event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\nfunction _enhanceEventWithInitialFrame(event, url, line, column) {\n // event.exception\n var e = (event.exception = event.exception || {});\n // event.exception.values\n var ev = (e.values = e.values || []);\n // event.exception.values[0]\n var ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n var ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n var ev0sf = (ev0s.frames = ev0s.frames || []);\n\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = (0,is/* isString */.HD)(url) && url.length > 0 ? url : (0,browser/* getLocationHref */.l4)();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub, error, event, type) {\n (0,misc/* addExceptionMechanism */.EG)(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndOptions() {\n var hub = (0,esm_hub/* getCurrentHub */.Gd)();\n var client = hub.getClient();\n var options = (client && client.getOptions()) || {\n stackParser: () => [],\n attachStacktrace: false,\n };\n return [hub, options.stackParser, options.attachStacktrace];\n}\n\n\n//# sourceMappingURL=globalhandlers.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/integrations/linkederrors.js\n\n\n\n\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nclass LinkedErrors {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'LinkedErrors';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = LinkedErrors.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n constructor(options = {}) {;LinkedErrors.prototype.__init.call(this);\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n var client = (0,esm_hub/* getCurrentHub */.Gd)().getClient();\n if (!client) {\n return;\n }\n (0,esm_scope/* addGlobalEventProcessor */.c)((event, hint) => {\n var self = (0,esm_hub/* getCurrentHub */.Gd)().getIntegration(LinkedErrors);\n return self ? _handler(client.getOptions().stackParser, self._key, self._limit, event, hint) : event;\n });\n }\n} LinkedErrors.__initStatic();\n\n/**\n * @inheritDoc\n */\nfunction _handler(\n parser,\n key,\n limit,\n event,\n hint,\n) {\n if (!event.exception || !event.exception.values || !hint || !(0,is/* isInstanceOf */.V9)(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = _walkErrorTree(parser, limit, hint.originalException , key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nfunction _walkErrorTree(\n parser,\n limit,\n error,\n key,\n stack = [],\n) {\n if (!(0,is/* isInstanceOf */.V9)(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n var exception = exceptionFromError(parser, error[key]);\n return _walkErrorTree(parser, limit, error[key], key, [exception, ...stack]);\n}\n\n\n//# sourceMappingURL=linkederrors.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/integrations/dedupe.js\n\n\n/** Deduplication filter */\nclass Dedupe {constructor() { Dedupe.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Dedupe';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = Dedupe.id;}\n\n /**\n * @inheritDoc\n */\n \n\n /**\n * @inheritDoc\n */\n setupOnce(addGlobalEventProcessor, getCurrentHub) {\n var eventProcessor = currentEvent => {\n var self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (dedupe_shouldDropEvent(currentEvent, self._previousEvent)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n };\n\n eventProcessor.id = this.name;\n addGlobalEventProcessor(eventProcessor);\n }\n} Dedupe.__initStatic();\n\n/** JSDoc */\nfunction dedupe_shouldDropEvent(currentEvent, previousEvent) {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent, previousEvent) {\n var currentMessage = currentEvent.message;\n var previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent, previousEvent) {\n var previousException = _getExceptionFromEvent(previousEvent);\n var currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent, previousEvent) {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames ;\n previousFrames = previousFrames ;\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n var frameA = previousFrames[i];\n var frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent, previousEvent) {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint ;\n previousFingerprint = previousFingerprint ;\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event) {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event) {\n var exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n }\n return undefined;\n}\n\n\n//# sourceMappingURL=dedupe.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/integrations/httpcontext.js\n\n\n\nvar httpcontext_global = (0,esm_global/* getGlobalObject */.R)();\n\n/** HttpContext integration collects information about HTTP request headers */\nclass HttpContext {constructor() { HttpContext.prototype.__init.call(this); }\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'HttpContext';}\n\n /**\n * @inheritDoc\n */\n __init() {this.name = HttpContext.id;}\n\n /**\n * @inheritDoc\n */\n setupOnce() {\n (0,esm_scope/* addGlobalEventProcessor */.c)((event) => {\n if ((0,esm_hub/* getCurrentHub */.Gd)().getIntegration(HttpContext)) {\n // if none of the information we want exists, don't bother\n if (!httpcontext_global.navigator && !httpcontext_global.location && !httpcontext_global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n var url = (event.request && event.request.url) || (httpcontext_global.location && httpcontext_global.location.href);\n const { referrer } = httpcontext_global.document || {};\n const { userAgent } = httpcontext_global.navigator || {};\n\n var headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n var request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n} HttpContext.__initStatic();\n\n\n//# sourceMappingURL=httpcontext.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/promisebuffer.js\n\n\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nfunction makePromiseBuffer(limit) {\n var buffer = [];\n\n function isReady() {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task) {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer) {\n if (!isReady()) {\n return (0,syncpromise/* rejectedSyncPromise */.$2)(new SentryError('Not adding Promise because buffer limit was reached.'));\n }\n\n // start the task and add its promise to the queue\n var task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout) {\n return new syncpromise/* SyncPromise */.cW((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n var capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void (0,syncpromise/* resolvedSyncPromise */.WD)(item).then(() => {\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n\n\n//# sourceMappingURL=promisebuffer.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/ratelimit.js\n// Intentionally keeping the key broad, as we don't know for sure what rate limit headers get returned from backend\n\nvar DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nfunction parseRetryAfterHeader(header, now = Date.now()) {\n var headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n var headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nfunction disabledUntil(limits, category) {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nfunction isRateLimited(limits, category, now = Date.now()) {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nfunction updateRateLimits(\n limits,\n { statusCode, headers },\n now = Date.now(),\n) {\n var updatedRateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n var rateLimitHeader = headers && headers['x-sentry-rate-limits'];\n var retryAfterHeader = headers && headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (var limit of rateLimitHeader.trim().split(',')) {\n const [retryAfter, categories] = limit.split(':', 2);\n var headerDelay = parseInt(retryAfter, 10);\n var delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!categories) {\n updatedRateLimits.all = now + delay;\n } else {\n for (var category of categories.split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n } else if (statusCode === 429) {\n updatedRateLimits.all = now + 60 * 1000;\n }\n\n return updatedRateLimits;\n}\n\n\n//# sourceMappingURL=ratelimit.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/core/esm/transports/base.js\n\n\nvar DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates an instance of a Sentry `Transport`\n *\n * @param options\n * @param makeRequest\n */\nfunction createTransport(\n options,\n makeRequest,\n buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n) {\n let rateLimits = {};\n\n var flush = (timeout) => buffer.drain(timeout);\n\n function send(envelope) {\n var filteredEnvelopeItems = [];\n\n // Drop rate limited items from envelope\n forEachEnvelopeItem(envelope, (item, type) => {\n var envelopeItemDataCategory = envelopeItemTypeToDataCategory(type);\n if (isRateLimited(rateLimits, envelopeItemDataCategory)) {\n options.recordDroppedEvent('ratelimit_backoff', envelopeItemDataCategory);\n } else {\n filteredEnvelopeItems.push(item);\n }\n });\n\n // Skip sending if envelope is empty after filtering out rate limited events\n if (filteredEnvelopeItems.length === 0) {\n return (0,syncpromise/* resolvedSyncPromise */.WD)();\n }\n\n var filteredEnvelope = createEnvelope(envelope[0], filteredEnvelopeItems );\n\n // Creates client report for each item in an envelope\n var recordEnvelopeLoss = (reason) => {\n forEachEnvelopeItem(filteredEnvelope, (_, type) => {\n options.recordDroppedEvent(reason, envelopeItemTypeToDataCategory(type));\n });\n };\n\n var requestTask = () =>\n makeRequest({ body: serializeEnvelope(filteredEnvelope, options.textEncoder) }).then(\n response => {\n // We don't want to throw on NOK responses, but we want to at least log them\n if (response.statusCode !== undefined && (response.statusCode < 200 || response.statusCode >= 300)) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn(`Sentry responded with status code ${response.statusCode} to sent event.`);\n }\n\n rateLimits = updateRateLimits(rateLimits, response);\n },\n error => {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error('Failed while sending event:', error);\n recordEnvelopeLoss('network_error');\n },\n );\n\n return buffer.add(requestTask).then(\n result => result,\n error => {\n if (error instanceof SentryError) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.error */.kg.error('Skipped sending event because buffer is full.');\n recordEnvelopeLoss('queue_overflow');\n return (0,syncpromise/* resolvedSyncPromise */.WD)();\n } else {\n throw error;\n }\n },\n );\n }\n\n return {\n send,\n flush,\n };\n}\n\n\n//# sourceMappingURL=base.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/transports/fetch.js\n\n\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nfunction makeFetchTransport(\n options,\n nativeFetch = getNativeFetchImplementation(),\n) {\n function makeRequest(request) {\n var requestOptions = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n headers: options.headers,\n ...options.fetchOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => ({\n statusCode: response.status,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n }));\n }\n\n return createTransport(options, makeRequest);\n}\n\n\n//# sourceMappingURL=fetch.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/transports/xhr.js\n\n\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nvar XHR_READYSTATE_DONE = 4;\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nfunction makeXHRTransport(options) {\n function makeRequest(request) {\n return new syncpromise/* SyncPromise */.cW((resolve, reject) => {\n var xhr = new XMLHttpRequest();\n\n xhr.onerror = reject;\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n resolve({\n statusCode: xhr.status,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n });\n }\n };\n\n xhr.open('POST', options.url);\n\n for (var header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport(options, makeRequest);\n}\n\n\n//# sourceMappingURL=xhr.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/browser/esm/sdk.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar defaultIntegrations = [\n new InboundFilters(),\n new FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new HttpContext(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nfunction init(options = {}) {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window = (0,esm_global/* getGlobalObject */.R)();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n var clientOptions = {\n ...options,\n stackParser: (0,stacktrace/* stackParserFromStackParserOptions */.Sq)(options.stackParser || defaultStackParser),\n integrations: getIntegrationsToSetup(options),\n transport: options.transport || ((0,supports/* supportsFetch */.Ak)() ? makeFetchTransport : makeXHRTransport),\n };\n\n initAndBind(BrowserClient, clientOptions);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nfunction showReportDialog(options = {}, hub = getCurrentHub()) {\n // doesn't work without a document (React Native)\n var global = getGlobalObject();\n if (!global.document) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Global document not defined in showReportDialog call');\n return;\n }\n\n const { client, scope } = hub.getStackTop();\n var dsn = options.dsn || (client && client.getDsn());\n if (!dsn) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('DSN not configured for showReportDialog call');\n return;\n }\n\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n\n var script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(dsn, options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n var injectionPoint = global.document.head || global.document.body;\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Not injecting report dialog. No injection point found in HTML');\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction forceLoad() {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nfunction onLoad(callback) {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nfunction sdk_close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nfunction sdk_wrap(fn) {\n return wrap$1(fn)();\n}\n\nfunction startSessionOnHub(hub) {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking() {\n var window = (0,esm_global/* getGlobalObject */.R)();\n var document = window.document;\n\n if (typeof document === 'undefined') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n var hub = (0,esm_hub/* getCurrentHub */.Gd)();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n (0,instrument/* addInstrumentationHandler */.o)('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub((0,esm_hub/* getCurrentHub */.Gd)());\n }\n });\n}\n\n\n//# sourceMappingURL=sdk.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/react/esm/sdk.js\n\n\n/**\n * Inits the React SDK\n */\nfunction sdk_init(options) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.react',\n packages: [\n {\n name: 'npm:@sentry/react',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n init(options);\n}\n\n\n//# sourceMappingURL=sdk.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/tracing/esm/hubextensions.js + 1 modules\nvar hubextensions = __webpack_require__(2758);\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js\nvar _optionalChain = __webpack_require__(4307);\n;// CONCATENATED MODULE: ./node_modules/@sentry/utils/esm/tracing.js\nvar TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nfunction extractTraceparentData(traceparent) {\n var matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n\n\n//# sourceMappingURL=tracing.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/tracing/esm/idletransaction.js\nvar idletransaction = __webpack_require__(6458);\n// EXTERNAL MODULE: ./node_modules/@sentry/tracing/esm/utils.js\nvar utils = __webpack_require__(3233);\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/backgroundtab.js\n\n\n\nvar backgroundtab_global = (0,esm_global/* getGlobalObject */.R)();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nfunction registerBackgroundTabDetection() {\n if (backgroundtab_global && backgroundtab_global.document) {\n backgroundtab_global.document.addEventListener('visibilitychange', () => {\n var activeTransaction = (0,utils/* getActiveTransaction */.x1)() ;\n if (backgroundtab_global.document.hidden && activeTransaction) {\n var statusType = 'cancelled';\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.log */.kg.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.finish();\n }\n });\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n\n\n//# sourceMappingURL=backgroundtab.js.map\n\n// EXTERNAL MODULE: ./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js\nvar _nullishCoalesce = __webpack_require__(5375);\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/bindReporter.js\nvar bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n\n\n//# sourceMappingURL=bindReporter.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/generateUniqueID.js\n/*\n * Copyright 2020 Google LLC\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 * https://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\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nvar generateUniqueID = () => {\n return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\n\n//# sourceMappingURL=generateUniqueID.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/initMetric.js\n\n\n\nvar initMetric = (name, value) => {\n return {\n name,\n value: (0,_nullishCoalesce/* _nullishCoalesce */.h)(value, () => ( -1)),\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n };\n};\n\n\n//# sourceMappingURL=initMetric.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/observe.js\n/*\n * Copyright 2020 Google LLC\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 * https://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\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nvar observe = (type, callback) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n\n var po = new PerformanceObserver(l => l.getEntries().map(callback));\n\n po.observe({ type, buffered: true });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\n\n//# sourceMappingURL=observe.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/onHidden.js\n\n\n/*\n * Copyright 2020 Google LLC\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 * https://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 onHidden = (cb, once) => {\n var onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || (0,esm_global/* getGlobalObject */.R)().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n\n\n//# sourceMappingURL=onHidden.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/getCLS.js\n\n\n\n\n\n/*\n * Copyright 2020 Google LLC\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 * https://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\n// https://wicg.github.io/layout-instability/#sec-layout-shift\n\nvar getCLS = (onReport, reportAllChanges) => {\n var metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n var entryHandler = (entry) => {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n var firstSessionEntry = sessionEntries[0];\n var lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n\n var po = observe('layout-shift', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n report(true);\n });\n }\n};\n\n\n//# sourceMappingURL=getCLS.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js\n\n\n\n/*\n * Copyright 2020 Google LLC\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 * https://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\nlet firstHiddenTime = -1;\n\nvar initHiddenTime = () => {\n return (0,esm_global/* getGlobalObject */.R)().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nvar trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nvar getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\n\n//# sourceMappingURL=getVisibilityWatcher.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/getFID.js\n\n\n\n\n\n\n/*\n * Copyright 2020 Google LLC\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 * https://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 getFID = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('FID');\n let report;\n\n var entryHandler = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n var po = observe('first-input', entryHandler );\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(() => {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n }, true);\n }\n};\n\n\n//# sourceMappingURL=getFID.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/web-vitals/getLCP.js\n\n\n\n\n\n\n/*\n * Copyright 2020 Google LLC\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 * https://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\n// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\n\nvar reportedMetricIDs = {};\n\nvar getLCP = (onReport, reportAllChanges) => {\n var visibilityWatcher = getVisibilityWatcher();\n var metric = initMetric('LCP');\n let report;\n\n var entryHandler = (entry) => {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n var value = entry.startTime;\n\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n\n if (report) {\n report();\n }\n };\n\n var po = observe('largest-contentful-paint', entryHandler);\n\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n var stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n\n\n//# sourceMappingURL=getLCP.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/metrics/utils.js\n/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value) {\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nfunction _startChild(transaction, { startTimestamp, ...ctx }) {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\n\n//# sourceMappingURL=utils.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/metrics/index.js\n\n\n\n\n\n\n\n\n\n\nvar metrics_global = (0,esm_global/* getGlobalObject */.R)();\n\nfunction getBrowserPerformanceAPI() {\n return metrics_global && metrics_global.addEventListener && metrics_global.performance;\n}\n\nlet _performanceCursor = 0;\n\nlet _measurements = {};\nlet _lcpEntry;\nlet _clsEntry;\n\n/**\n * Start tracking web vitals\n */\nfunction startTrackingWebVitals(reportAllChanges = false) {\n var performance = getBrowserPerformanceAPI();\n if (performance && time/* browserPerformanceTimeOrigin */.Z1) {\n if (performance.mark) {\n metrics_global.performance.mark('sentry-tracing-init');\n }\n _trackCLS();\n _trackLCP(reportAllChanges);\n _trackFID();\n }\n}\n\n/**\n * Start tracking long tasks.\n */\nfunction startTrackingLongTasks() {\n var entryHandler = (entry) => {\n var transaction = (0,utils/* getActiveTransaction */.x1)() ;\n if (!transaction) {\n return;\n }\n var startTime = (0,utils/* msToSec */.XL)((time/* browserPerformanceTimeOrigin */.Z1 ) + entry.startTime);\n var duration = (0,utils/* msToSec */.XL)(entry.duration);\n transaction.startChild({\n description: 'Main UI thread blocked',\n op: 'ui.long-task',\n startTimestamp: startTime,\n endTimestamp: startTime + duration,\n });\n };\n\n observe('longtask', entryHandler);\n}\n\n/** Starts tracking the Cumulative Layout Shift on the current page. */\nfunction _trackCLS() {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding CLS');\n _measurements['cls'] = { value: metric.value, unit: '' };\n _clsEntry = entry ;\n });\n}\n\n/** Starts tracking the Largest Contentful Paint on the current page. */\nfunction _trackLCP(reportAllChanges) {\n getLCP(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding LCP');\n _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };\n _lcpEntry = entry ;\n }, reportAllChanges);\n}\n\n/** Starts tracking the First Input Delay on the current page. */\nfunction _trackFID() {\n getFID(metric => {\n var entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n var timeOrigin = (0,utils/* msToSec */.XL)(time/* browserPerformanceTimeOrigin */.Z1 );\n var startTime = (0,utils/* msToSec */.XL)(entry.startTime);\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding FID');\n _measurements['fid'] = { value: metric.value, unit: 'millisecond' };\n _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };\n });\n}\n\n/** Add performance related spans to a transaction */\nfunction addPerformanceEntries(transaction) {\n var performance = getBrowserPerformanceAPI();\n if (!performance || !metrics_global.performance.getEntries || !time/* browserPerformanceTimeOrigin */.Z1) {\n // Gatekeeper if performance API not available\n return;\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Tracing] Adding & adjusting spans using Performance API');\n var timeOrigin = (0,utils/* msToSec */.XL)(time/* browserPerformanceTimeOrigin */.Z1);\n\n var performanceEntries = performance.getEntries();\n\n let responseStartTimestamp;\n let requestStartTimestamp;\n\n performanceEntries.slice(_performanceCursor).forEach((entry) => {\n var startTime = (0,utils/* msToSec */.XL)(entry.startTime);\n var duration = (0,utils/* msToSec */.XL)(entry.duration);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n _addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + (0,utils/* msToSec */.XL)(entry.responseStart);\n requestStartTimestamp = timeOrigin + (0,utils/* msToSec */.XL)(entry.requestStart);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n\n // capture web vitals\n var firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n var shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding FP');\n _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding FCP');\n _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };\n }\n break;\n }\n case 'resource': {\n var resourceName = (entry.name ).replace(metrics_global.location.origin, '');\n _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n _performanceCursor = Math.max(performanceEntries.length - 1, 0);\n\n _trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding TTFB');\n _measurements['ttfb'] = {\n value: (responseStartTimestamp - transaction.startTimestamp) * 1000,\n unit: 'millisecond',\n };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n _measurements['ttfb.requestTime'] = {\n value: (responseStartTimestamp - requestStartTimestamp) * 1000,\n unit: 'millisecond',\n };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n var oldValue = _measurements[name].value;\n var measurementTimestamp = timeOrigin + (0,utils/* msToSec */.XL)(oldValue);\n\n // normalizedValue should be in milliseconds\n var normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n var delta = normalizedValue - oldValue;\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.log */.kg.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n _measurements[name].value = normalizedValue;\n });\n\n var fidMark = _measurements['mark.fid'];\n if (fidMark && _measurements['fid']) {\n // create span for FID\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: fidMark.value + (0,utils/* msToSec */.XL)(_measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: fidMark.value,\n });\n\n // Delete mark.fid as we don't want it to be part of final payload\n delete _measurements['mark.fid'];\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in _measurements)) {\n delete _measurements.cls;\n }\n\n Object.keys(_measurements).forEach(measurementName => {\n transaction.setMeasurement(\n measurementName,\n _measurements[measurementName].value,\n _measurements[measurementName].unit,\n );\n });\n\n _tagMetricInfo(transaction);\n }\n\n _lcpEntry = undefined;\n _clsEntry = undefined;\n _measurements = {};\n}\n\n/** Create measure related spans */\nfunction _addMeasureSpans(\n transaction,\n entry,\n startTime,\n duration,\n timeOrigin,\n) {\n var measureStartTimestamp = timeOrigin + startTime;\n var measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name ,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType ,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\n/** Instrument navigation entries */\nfunction _addNavigationSpans(transaction, entry, timeOrigin) {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n _addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n _addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n _addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n _addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n _addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create performance navigation related spans */\nfunction _addPerformanceNavigationTiming(\n transaction,\n entry,\n event,\n timeOrigin,\n description,\n eventEnd,\n) {\n var end = eventEnd ? (entry[eventEnd] ) : (entry[`${event}End`] );\n var start = entry[`${event}Start`] ;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: (0,_nullishCoalesce/* _nullishCoalesce */.h)(description, () => ( event)),\n startTimestamp: timeOrigin + (0,utils/* msToSec */.XL)(start),\n endTimestamp: timeOrigin + (0,utils/* msToSec */.XL)(end),\n });\n}\n\n/** Create request and response related spans */\nfunction _addRequest(transaction, entry, timeOrigin) {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + (0,utils/* msToSec */.XL)(entry.requestStart ),\n endTimestamp: timeOrigin + (0,utils/* msToSec */.XL)(entry.responseEnd ),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + (0,utils/* msToSec */.XL)(entry.responseStart ),\n endTimestamp: timeOrigin + (0,utils/* msToSec */.XL)(entry.responseEnd ),\n });\n}\n\n/** Create resource-related spans */\nfunction _addResourceSpans(\n transaction,\n entry,\n resourceName,\n startTime,\n duration,\n timeOrigin,\n) {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n var data = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n var startTimestamp = timeOrigin + startTime;\n var endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n startTimestamp,\n data,\n });\n}\n\n/**\n * Capture the information of the user agent.\n */\nfunction _trackNavigator(transaction) {\n var navigator = metrics_global.navigator ;\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n var connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n _measurements['connection.rtt'] = { value: connection.rtt, unit: 'millisecond' };\n }\n\n if (isMeasurementValue(connection.downlink)) {\n _measurements['connection.downlink'] = { value: connection.downlink, unit: '' }; // unit is empty string for now, while relay doesn't support download speed units\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', `${navigator.deviceMemory} GB`);\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction _tagMetricInfo(transaction) {\n if (_lcpEntry) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (_lcpEntry.element) {\n transaction.setTag('lcp.element', (0,browser/* htmlTreeAsString */.Rt)(_lcpEntry.element));\n }\n\n if (_lcpEntry.id) {\n transaction.setTag('lcp.id', _lcpEntry.id);\n }\n\n if (_lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', _lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', _lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (_clsEntry && _clsEntry.sources) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log('[Measurements] Adding CLS Data');\n _clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, (0,browser/* htmlTreeAsString */.Rt)(source.node)),\n );\n }\n}\n\n\n//# sourceMappingURL=index.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/request.js\n\n\n\nvar DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\n\nvar defaultRequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nfunction instrumentOutgoingRequests(_options) {\n const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n var urlMap = {};\n\n var defaultShouldCreateSpan = (url) => {\n if (urlMap[url]) {\n return urlMap[url];\n }\n var origins = tracingOrigins;\n urlMap[url] =\n origins.some((origin) => (0,string/* isMatchingPattern */.zC)(url, origin)) &&\n !(0,string/* isMatchingPattern */.zC)(url, 'sentry_key');\n return urlMap[url];\n };\n\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n let shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = (url) => {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n\n var spans = {};\n\n if (traceFetch) {\n (0,instrument/* addInstrumentationHandler */.o)('fetch', (handlerData) => {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n\n if (traceXHR) {\n (0,instrument/* addInstrumentationHandler */.o)('xhr', (handlerData) => {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nfunction fetchCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (!(0,utils/* hasTracingEnabled */.zu)() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n var spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n var activeTransaction = (0,utils/* getActiveTransaction */.x1)();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n var request = (handlerData.args[0] = handlerData.args[0] );\n var options = (handlerData.args[1] = (handlerData.args[1] ) || {});\n options.headers = addTracingHeaders(request, activeTransaction.getBaggage(), span, options);\n }\n}\n\nfunction addTracingHeaders(\n request,\n incomingBaggage,\n span,\n options,\n) {\n let headers = options.headers;\n\n if ((0,is/* isInstanceOf */.V9)(request, Request)) {\n headers = (request ).headers;\n }\n\n if (headers) {\n if (typeof headers.append === 'function') {\n headers.append('sentry-trace', span.toTraceparent());\n headers.append(esm_baggage/* BAGGAGE_HEADER_NAME */.bU, (0,esm_baggage/* mergeAndSerializeBaggage */.J8)(incomingBaggage, headers.get(esm_baggage/* BAGGAGE_HEADER_NAME */.bU)));\n } else if (Array.isArray(headers)) {\n const [, headerBaggageString] = headers.find(([key, _]) => key === esm_baggage/* BAGGAGE_HEADER_NAME */.bU);\n headers = [\n ...headers,\n ['sentry-trace', span.toTraceparent()],\n [esm_baggage/* BAGGAGE_HEADER_NAME */.bU, (0,esm_baggage/* mergeAndSerializeBaggage */.J8)(incomingBaggage, headerBaggageString)],\n ];\n } else {\n headers = {\n ...headers,\n 'sentry-trace': span.toTraceparent(),\n baggage: (0,esm_baggage/* mergeAndSerializeBaggage */.J8)(incomingBaggage, headers.baggage),\n };\n }\n } else {\n headers = { 'sentry-trace': span.toTraceparent(), baggage: (0,esm_baggage/* mergeAndSerializeBaggage */.J8)(incomingBaggage) };\n }\n return headers;\n}\n\n/**\n * Create and track xhr request spans\n */\nfunction xhrCallback(\n handlerData,\n shouldCreateSpan,\n spans,\n) {\n if (\n !(0,utils/* hasTracingEnabled */.zu)() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n var xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n var spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n var span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n var activeTransaction = (0,utils/* getActiveTransaction */.x1)();\n if (activeTransaction) {\n var span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n\n var headerBaggageString =\n handlerData.xhr.getRequestHeader && handlerData.xhr.getRequestHeader(esm_baggage/* BAGGAGE_HEADER_NAME */.bU);\n\n handlerData.xhr.setRequestHeader(\n esm_baggage/* BAGGAGE_HEADER_NAME */.bU,\n (0,esm_baggage/* mergeAndSerializeBaggage */.J8)(activeTransaction.getBaggage(), headerBaggageString),\n );\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n\n\n//# sourceMappingURL=request.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/router.js\n\n\nvar router_global = (0,esm_global/* getGlobalObject */.R)();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nfunction instrumentRoutingWithDefaults(\n customStartTransaction,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n if (!router_global || !router_global.location) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl = router_global.location.href;\n\n let activeTransaction;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({\n name: router_global.location.pathname,\n op: 'pageload',\n metadata: { source: 'url' },\n });\n }\n\n if (startTransactionOnLocationChange) {\n (0,instrument/* addInstrumentationHandler */.o)('history', ({ to, from }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({\n name: router_global.location.pathname,\n op: 'navigation',\n metadata: { source: 'url' },\n });\n }\n });\n }\n}\n\n\n//# sourceMappingURL=router.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/browser/browsertracing.js\n\n\n\n\n\n\n\n\n\n\nvar BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';\n\n/** Options for Browser Tracing integration */\n\nvar DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: idletransaction/* DEFAULT_IDLE_TIMEOUT */.nT,\n finalTimeout: idletransaction/* DEFAULT_FINAL_TIMEOUT */.mg,\n markBackgroundTransactions: true,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n _experiments: { enableLongTask: true },\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nclass BrowserTracing {\n // This class currently doesn't have a static `id` field like the other integration classes, because it prevented\n // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.\n // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all\n // integrations.\n\n /** Browser Tracing integration options */\n \n\n /**\n * @inheritDoc\n */\n __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}\n\n constructor(_options) {;BrowserTracing.prototype.__init.call(this);\n let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins)) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && (this._emitOptionsWarning = true);\n }\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n tracingOrigins,\n };\n\n const { _metricOptions } = this.options;\n startTrackingWebVitals(_metricOptions && _metricOptions._reportAllChanges);\n if ((0,_optionalChain/* _optionalChain */.x)([this, 'access', _2 => _2.options, 'access', _3 => _3._experiments, 'optionalAccess', _4 => _4.enableLongTask])) {\n startTrackingLongTasks();\n }\n }\n\n /**\n * @inheritDoc\n */\n setupOnce(_, getCurrentHub) {\n this._getCurrentHub = getCurrentHub;\n\n if (this._emitOptionsWarning) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn(\n '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n );\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn(\n `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n );\n }\n\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n _createRouteTransaction(context) {\n if (!this._getCurrentHub) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.warn */.kg.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n const { beforeNavigate, idleTimeout, finalTimeout } = this.options;\n\n var parentContextFromHeader = context.op === 'pageload' ? extractTraceDataFromMetaTags() : undefined;\n\n var expandedContext = {\n ...context,\n ...parentContextFromHeader,\n ...(parentContextFromHeader && {\n metadata: {\n ...context.metadata,\n ...parentContextFromHeader.metadata,\n },\n }),\n trimEnd: true,\n };\n var modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n var finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n // If `beforeNavigate` set a custom name, record that fact\n finalContext.metadata =\n finalContext.name !== expandedContext.name\n ? { ...finalContext.metadata, source: 'custom' }\n : finalContext.metadata;\n\n if (finalContext.sampled === false) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&\n esm_logger/* logger.log */.kg.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.log */.kg.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n var hub = this._getCurrentHub();\n const { location } = (0,esm_global/* getGlobalObject */.R)() ;\n\n var idleTransaction = (0,hubextensions/* startIdleTransaction */.lb)(\n hub,\n finalContext,\n idleTimeout,\n finalTimeout,\n true,\n { location }, // for use in the tracesSampler\n );\n idleTransaction.registerBeforeFinishCallback(transaction => {\n addPerformanceEntries(transaction);\n transaction.setTag(\n 'sentry_reportAllChanges',\n Boolean(this.options._metricOptions && this.options._metricOptions._reportAllChanges),\n );\n });\n\n return idleTransaction ;\n }\n}\n\n/**\n * Gets transaction context data from `sentry-trace` and `baggage` tags.\n * @returns Transaction context data or undefined neither tag exists or has valid data\n */\nfunction extractTraceDataFromMetaTags() {\n var sentrytraceValue = getMetaContent('sentry-trace');\n var baggageValue = getMetaContent('baggage');\n\n var sentrytraceData = sentrytraceValue ? extractTraceparentData(sentrytraceValue) : undefined;\n var baggage = (0,esm_baggage/* parseBaggageSetMutability */.rg)(baggageValue, sentrytraceValue);\n\n // TODO more extensive checks for baggage validity/emptyness?\n if (sentrytraceData || baggage) {\n return {\n ...(sentrytraceData && sentrytraceData),\n ...(baggage && { metadata: { baggage } }),\n };\n }\n\n return undefined;\n}\n\n/** Returns the value of a meta tag */\nfunction getMetaContent(metaName) {\n // Can't specify generic to `getDomElement` because tracing can be used\n // in a variety of environments, have to disable `no-unsafe-member-access`\n // as a result.\n var metaTag = (0,browser/* getDomElement */.qT)(`meta[name=${metaName}]`);\n return metaTag ? metaTag.getAttribute('content') : null;\n}\n\n\n//# sourceMappingURL=browsertracing.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/tracing/esm/index.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n;\n;\n\n// Treeshakable guard to remove all code related to tracing\n\n// Guard for tree\nif (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // We are patching the global object with our hub extension methods\n (0,hubextensions/* addExtensionMethods */.ro)();\n}\n//# sourceMappingURL=index.js.map\n\n// EXTERNAL MODULE: ./node_modules/next/router.js\nvar router = __webpack_require__(1163);\nvar router_default = /*#__PURE__*/__webpack_require__.n(router);\n;// CONCATENATED MODULE: ./node_modules/@sentry/nextjs/esm/performance/client.js\n\n\n\n\nvar client_global = (0,esm_global/* getGlobalObject */.R)();\n\n/**\n * Every Next.js page (static and dynamic ones) comes with a script tag with the id \"__NEXT_DATA__\". This script tag\n * contains a JSON object with data that was either generated at build time for static pages (`getStaticProps`), or at\n * runtime with data fetchers like `getServerSideProps.`.\n *\n * We can use this information to:\n * - Always get the parameterized route we're in when loading a page.\n * - Send trace information (trace-id, baggage) from the server to the client.\n *\n * This function extracts this information.\n */\nfunction extractNextDataTagInformation() {\n let nextData;\n // Let's be on the safe side and actually check first if there is really a __NEXT_DATA__ script tag on the page.\n // Theoretically this should always be the case though.\n var nextDataTag = client_global.document.getElementById('__NEXT_DATA__');\n if (nextDataTag && nextDataTag.innerHTML) {\n try {\n nextData = JSON.parse(nextDataTag.innerHTML);\n } catch (e) {\n (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && esm_logger/* logger.warn */.kg.warn('Could not extract __NEXT_DATA__');\n }\n }\n\n if (!nextData) {\n return {};\n }\n\n var nextDataTagInfo = {};\n\n const { page, query, props } = nextData;\n\n // `nextData.page` always contains the parameterized route - except for when an error occurs in a data fetching\n // function, then it is \"/_error\", but that isn't a problem since users know which route threw by looking at the\n // parent transaction\n nextDataTagInfo.route = page;\n nextDataTagInfo.params = query;\n\n if (props && props.pageProps) {\n if (props.pageProps._sentryBaggage) {\n nextDataTagInfo.baggage = props.pageProps._sentryBaggage;\n }\n\n if (props.pageProps._sentryTraceData) {\n nextDataTagInfo.traceParentData = extractTraceparentData(props.pageProps._sentryTraceData);\n }\n }\n\n return nextDataTagInfo;\n}\n\nvar DEFAULT_TAGS = {\n 'routing.instrumentation': 'next-router',\n} ;\n\nlet activeTransaction = undefined;\nlet startTransaction = undefined;\n\n// We keep track of the previous page location so we can avoid creating transactions when navigating to the same page.\n// This variable should always contain a pathname. (without query string or fragment)\n// We are making a tradeoff by not starting transactions when just the query string changes. One could argue that we\n// should in fact start transactions when the query changes, however, in some cases (for example when typing in a search\n// box) the query might change multiple times a second, resulting in way too many transactions.\n// Because we currently don't have a real way of preventing transactions to be created in this case (except for the\n// shotgun approach `startTransactionOnLocationChange: false`), we won't start transactions when *just* the query changes.\nlet previousLocation = undefined;\n\n// We keep track of the previous transaction name so we can set the `from` field on navigation transactions.\nlet prevTransactionName = undefined;\n\nvar client = (0,esm_hub/* getCurrentHub */.Gd)().getClient();\n\n/**\n * Creates routing instrumention for Next Router. Only supported for\n * client side routing. Works for Next >= 10.\n *\n * Leverages the SingletonRouter from the `next/router` to\n * generate pageload/navigation transactions and parameterize\n * transaction names.\n */\nfunction nextRouterInstrumentation(\n startTransactionCb,\n startTransactionOnPageLoad = true,\n startTransactionOnLocationChange = true,\n) {\n startTransaction = startTransactionCb;\n\n if (startTransactionOnPageLoad) {\n const { route, traceParentData, baggage, params } = extractNextDataTagInformation();\n\n prevTransactionName = route || client_global.location.pathname;\n previousLocation = client_global.location.pathname;\n\n var source = route ? 'route' : 'url';\n\n activeTransaction = startTransactionCb({\n name: prevTransactionName,\n op: 'pageload',\n tags: DEFAULT_TAGS,\n ...(params && client && client.getOptions().sendDefaultPii && { data: params }),\n ...traceParentData,\n metadata: {\n source,\n ...(baggage && { baggage: (0,esm_baggage/* parseBaggageHeader */.XM)(baggage) }),\n },\n });\n }\n\n router_default().ready(() => {\n // Spans that aren't attached to any transaction are lost; so if transactions aren't\n // created (besides potentially the onpageload transaction), no need to wrap the router.\n if (!startTransactionOnLocationChange) return;\n\n // `withRouter` uses `useRouter` underneath:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/with-router.tsx#L21\n // Router events also use the router:\n // https://github.com/vercel/next.js/blob/de42719619ae69fbd88e445100f15701f6e1e100/packages/next/client/router.ts#L92\n // `Router.changeState` handles the router state changes, so it may be enough to only wrap it\n // (instead of wrapping all of the Router's functions).\n var routerPrototype = Object.getPrototypeOf((router_default()).router);\n (0,object/* fill */.hl)(routerPrototype, 'changeState', changeStateWrapper);\n });\n}\n\n/**\n * Wraps Router.changeState()\n * https://github.com/vercel/next.js/blob/da97a18dafc7799e63aa7985adc95f213c2bf5f3/packages/next/next-server/lib/router/router.ts#L1204\n * Start a navigation transaction every time the router changes state.\n */\nfunction changeStateWrapper(originalChangeStateWrapper) {\n return function wrapper(\n \n method,\n // The parameterized url, ex. posts/[id]/[comment]\n url,\n // The actual url, ex. posts/85/my-comment\n as,\n options,\n // At the moment there are no additional arguments (meaning the rest parameter is empty).\n // This is meant to protect from future additions to Next.js API, especially since this is an\n // internal API.\n ...args\n ) {\n var newTransactionName = (0,esm_url/* stripUrlQueryAndFragment */.rt)(url);\n\n // do not start a transaction if it's from the same page\n if (startTransaction !== undefined && previousLocation !== as) {\n previousLocation = as;\n\n if (activeTransaction) {\n activeTransaction.finish();\n }\n\n var tags = {\n ...DEFAULT_TAGS,\n method,\n ...options,\n };\n\n if (prevTransactionName) {\n tags.from = prevTransactionName;\n }\n\n prevTransactionName = newTransactionName;\n activeTransaction = startTransaction({\n name: prevTransactionName,\n op: 'navigation',\n tags,\n metadata: { source: 'route' },\n });\n }\n return originalChangeStateWrapper.call(this, method, url, as, options, ...args);\n };\n}\n\n\n//# sourceMappingURL=client.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/nextjs/esm/utils/metadata.js\n\n\nvar PACKAGE_NAME_PREFIX = 'npm:@sentry/';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n * @param options sdk options object that gets mutated\n * @param names list of package names\n */\nfunction buildMetadata(options, names) {\n options._metadata = options._metadata || {};\n options._metadata.sdk =\n options._metadata.sdk ||\n ({\n name: 'sentry.javascript.nextjs',\n packages: names.map(name => ({\n name: `${PACKAGE_NAME_PREFIX}${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n } );\n}\n\n\n//# sourceMappingURL=metadata.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/nextjs/esm/utils/userIntegrations.js\n/**\n * Recursively traverses an object to update an existing nested key.\n * Note: The provided key path must include existing properties,\n * the function will not create objects while traversing.\n *\n * @param obj An object to update\n * @param value The value to update the nested key with\n * @param keyPath The path to the key to update ex. fizz.buzz.foo\n */\nfunction setNestedKey(obj, keyPath, value) {\n // Ex. foo.bar.zoop will extract foo and bar.zoop\n var match = keyPath.match(/([a-z]+)\\.(.*)/i);\n if (match === null) {\n obj[keyPath] = value;\n } else {\n setNestedKey(obj[match[1]], match[2], value);\n }\n}\n\n/**\n * Retrieves the patched integrations with the provided integration.\n *\n * The integration must be present in the final user integrations, and they are compared\n * by integration name. If the user has defined one, there's nothing to patch; if not,\n * the provided integration is added.\n *\n * @param integration The integration to patch, if necessary.\n * @param userIntegrations Integrations defined by the user.\n * @param options options to update for a particular integration\n * @returns Final integrations, patched if necessary.\n */\nfunction addIntegration(\n integration,\n userIntegrations,\n options = {},\n) {\n if (Array.isArray(userIntegrations)) {\n return addIntegrationToArray(integration, userIntegrations, options);\n } else {\n return addIntegrationToFunction(integration, userIntegrations, options);\n }\n}\n\nfunction addIntegrationToArray(\n integration,\n userIntegrations,\n options,\n) {\n let includesName = false;\n for (let x = 0; x < userIntegrations.length; x++) {\n if (userIntegrations[x].name === integration.name) {\n includesName = true;\n }\n\n var op = options[userIntegrations[x].name];\n if (op) {\n setNestedKey(userIntegrations[x], op.keyPath, op.value);\n }\n }\n\n if (includesName) {\n return userIntegrations;\n }\n return [...userIntegrations, integration];\n}\n\nfunction addIntegrationToFunction(\n integration,\n userIntegrationsFunc,\n options,\n) {\n var wrapper = defaultIntegrations => {\n var userFinalIntegrations = userIntegrationsFunc(defaultIntegrations);\n return addIntegrationToArray(integration, userFinalIntegrations, options);\n };\n return wrapper;\n}\n\n\n//# sourceMappingURL=userIntegrations.js.map\n\n;// CONCATENATED MODULE: ./node_modules/@sentry/nextjs/esm/index.client.js\n\n\n\n\n\n\n\n\n\n\n\n// Treeshakable guard to remove all code related to tracing\n\n/** Inits the Sentry NextJS SDK on the browser with the React SDK. */\nfunction index_client_init(options) {\n buildMetadata(options, ['nextjs', 'react']);\n options.environment = options.environment || \"production\";\n\n let integrations = options.integrations;\n\n // Guard below evaluates to true unless __SENTRY_TRACING__ is text-replaced with \"false\"\n if (typeof __SENTRY_TRACING__ === 'undefined' || __SENTRY_TRACING__) {\n // Only add BrowserTracing if a tracesSampleRate or tracesSampler is set\n if (options.tracesSampleRate !== undefined || options.tracesSampler !== undefined) {\n integrations = createClientIntegrations(options.integrations);\n }\n }\n\n sdk_init({\n ...options,\n integrations,\n });\n\n (0,esm_exports/* configureScope */.e)(scope => {\n scope.setTag('runtime', 'browser');\n var filterTransactions = event =>\n event.type === 'transaction' && event.transaction === '/404' ? null : event;\n filterTransactions.id = 'NextClient404Filter';\n scope.addEventProcessor(filterTransactions);\n });\n}\n\nfunction createClientIntegrations(integrations) {\n var defaultBrowserTracingIntegration = new BrowserTracing({\n tracingOrigins: [...defaultRequestInstrumentationOptions.tracingOrigins, /^(api\\/)/],\n routingInstrumentation: nextRouterInstrumentation,\n });\n\n if (integrations) {\n return addIntegration(defaultBrowserTracingIntegration, integrations, {\n BrowserTracing: { keyPath: 'options.routingInstrumentation', value: nextRouterInstrumentation },\n });\n } else {\n return [defaultBrowserTracingIntegration];\n }\n}\n\n\n//# sourceMappingURL=index.client.js.map\n\n;// CONCATENATED MODULE: ./sentry.client.config.js\n/* provided dependency */ var process = __webpack_require__(3454);\n// This file configures the initialization of Sentry on the browser.\n// The config you add here will be used whenever a page is visited.\n// https://docs.sentry.io/platforms/javascript/guides/nextjs/\n\nconst SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN;\nindex_client_init({\n dsn: SENTRY_DSN || \"https://76c11b094776943f873280b496a37139@o379043.ingest.sentry.io/4505938675171328\",\n // ...\n // Note: if you want to override the automatic release value, do not set a\n // `release` value here - use the environment variable `SENTRY_RELEASE`, so\n // that it will also get attached to your source maps\n environment: \"uat\",\n ignoreErrors: [\n // These errors are caused by the user cancelling the request.\n // Reference: https://forum.sentry.io/t/typeerror-failed-to-fetch-reported-over-and-overe/8447/2\n // either when they click the \"X\" button or when they navigate away from the page too quickly.\n // unfortunately with fetch API, we don't have a clean way to detect whether an error\n // is due to the request being cancelled or not.\n // So I have checked this https://request-cancellation-test.vercel.app/ for the error message\n // that is thrown when the request is cancelled and added it to the ignoreErrors list.\n \"TypeError: Failed to fetch\",\n \"TypeError: NetworkError when attempting to fetch resource.\",\n \"TypeError: Load failed\",\n \"TypeError: cancelled\"\n ]\n});\n\n\n/***/ }),\n\n/***/ 7280:\n/***/ (function() {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ 7663:\n/***/ (function(module) {\n\nvar __dirname = \"/\";\n(function(){var e={229:function(e){var t=e.exports={};var r;var n;function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}(function(){try{if(typeof setTimeout===\"function\"){r=setTimeout}else{r=defaultSetTimout}}catch(e){r=defaultSetTimout}try{if(typeof clearTimeout===\"function\"){n=clearTimeout}else{n=defaultClearTimeout}}catch(e){n=defaultClearTimeout}})();function runTimeout(e){if(r===setTimeout){return setTimeout(e,0)}if((r===defaultSetTimout||!r)&&setTimeout){r=setTimeout;return setTimeout(e,0)}try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}function runClearTimeout(e){if(n===clearTimeout){return clearTimeout(e)}if((n===defaultClearTimeout||!n)&&clearTimeout){n=clearTimeout;return clearTimeout(e)}try{return n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}var i=[];var o=false;var u;var a=-1;function cleanUpNextTick(){if(!o||!u){return}o=false;if(u.length){i=u.concat(i)}else{a=-1}if(i.length){drainQueue()}}function drainQueue(){if(o){return}var e=runTimeout(cleanUpNextTick);o=true;var t=i.length;while(t){u=i;i=[];while(++a1){for(var r=1;r';\n\n var script = '\\n (function(w,d,s,l,i){w[l]=w[l]||[];\\n w[l].push({\\'gtm.start\\': new Date().getTime(),event:\\'gtm.js\\', ' + JSON.stringify(events).slice(1, -1) + '});\\n var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\\'dataLayer\\'?\\'&l=\\'+l:\\'\\';\\n j.async=true;j.src=\\'https://www.googletagmanager.com/gtm.js?id=\\'+i+dl+\\'' + gtm_auth + gtm_preview + '>m_cookies_win=x\\';\\n f.parentNode.insertBefore(j,f);\\n })(window,document,\\'script\\',\\'' + dataLayerName + '\\',\\'' + id + '\\');';\n\n var dataLayerVar = this.dataLayer(dataLayer, dataLayerName);\n\n return {\n iframe: iframe,\n script: script,\n dataLayerVar: dataLayerVar\n };\n },\n dataLayer: function dataLayer(_dataLayer, dataLayerName) {\n return '\\n window.' + dataLayerName + ' = window.' + dataLayerName + ' || [];\\n window.' + dataLayerName + '.push(' + JSON.stringify(_dataLayer) + ')';\n }\n};\n\nmodule.exports = Snippets;\n\n/***/ }),\n\n/***/ 8676:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _Snippets = __webpack_require__(6421);\n\nvar _Snippets2 = _interopRequireDefault(_Snippets);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagManager = {\n dataScript: function dataScript(dataLayer) {\n var script = document.createElement('script');\n script.innerHTML = dataLayer;\n return script;\n },\n gtm: function gtm(args) {\n var snippets = _Snippets2.default.tags(args);\n\n var noScript = function noScript() {\n var noscript = document.createElement('noscript');\n noscript.innerHTML = snippets.iframe;\n return noscript;\n };\n\n var script = function script() {\n var script = document.createElement('script');\n script.innerHTML = snippets.script;\n return script;\n };\n\n var dataScript = this.dataScript(snippets.dataLayerVar);\n\n return {\n noScript: noScript,\n script: script,\n dataScript: dataScript\n };\n },\n initialize: function initialize(_ref) {\n var gtmId = _ref.gtmId,\n _ref$events = _ref.events,\n events = _ref$events === undefined ? {} : _ref$events,\n dataLayer = _ref.dataLayer,\n _ref$dataLayerName = _ref.dataLayerName,\n dataLayerName = _ref$dataLayerName === undefined ? 'dataLayer' : _ref$dataLayerName,\n _ref$auth = _ref.auth,\n auth = _ref$auth === undefined ? '' : _ref$auth,\n _ref$preview = _ref.preview,\n preview = _ref$preview === undefined ? '' : _ref$preview;\n\n var gtm = this.gtm({\n id: gtmId,\n events: events,\n dataLayer: dataLayer || undefined,\n dataLayerName: dataLayerName,\n auth: auth,\n preview: preview\n });\n if (dataLayer) document.head.appendChild(gtm.dataScript);\n document.head.insertBefore(gtm.script(), document.head.childNodes[0]);\n document.body.insertBefore(gtm.noScript(), document.body.childNodes[0]);\n },\n dataLayer: function dataLayer(_ref2) {\n var _dataLayer = _ref2.dataLayer,\n _ref2$dataLayerName = _ref2.dataLayerName,\n dataLayerName = _ref2$dataLayerName === undefined ? 'dataLayer' : _ref2$dataLayerName;\n\n if (window[dataLayerName]) return window[dataLayerName].push(_dataLayer);\n var snippets = _Snippets2.default.dataLayer(_dataLayer, dataLayerName);\n var dataScript = this.dataScript(snippets);\n document.head.insertBefore(dataScript, document.head.childNodes[0]);\n }\n};\n\nmodule.exports = TagManager;\n\n/***/ }),\n\n/***/ 1785:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _TagManager = __webpack_require__(8676);\n\nvar _TagManager2 = _interopRequireDefault(_TagManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _TagManager2.default;\n\n/***/ }),\n\n/***/ 6425:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar warn = function warn(s) {\n console.warn('[react-gtm]', s);\n};\n\nexports[\"default\"] = warn;\n\n/***/ })\n\n},\n/******/ function(__webpack_require__) { // webpackRuntimeModules\n/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }\n/******/ __webpack_require__.O(0, [774,179], function() { return __webpack_exec__(6395), __webpack_exec__(5335), __webpack_exec__(6840), __webpack_exec__(880); });\n/******/ var __webpack_exports__ = __webpack_require__.O();\n/******/ _N_E = __webpack_exports__;\n/******/ }\n]);"],"names":["self","push","__unused_webpack_module","__webpack_exports__","__webpack_require__","d","withScope","captureException","configureScope","_hub_js__WEBPACK_IMPORTED_MODULE_0__","exception","captureContext","Gd","callback","getCurrentHub","getMainCarrier","_sentry_utils__WEBPACK_IMPORTED_MODULE_1__","_sentry_utils__WEBPACK_IMPORTED_MODULE_2__","_sentry_utils__WEBPACK_IMPORTED_MODULE_3__","_sentry_utils__WEBPACK_IMPORTED_MODULE_5__","_sentry_utils__WEBPACK_IMPORTED_MODULE_6__","_scope_js__WEBPACK_IMPORTED_MODULE_0__","_session_js__WEBPACK_IMPORTED_MODULE_4__","Hub","__init","_stack","constructor","client","scope","s","_version","prototype","call","getStackTop","bindClient","isOlderThan","version","top","setupIntegrations","pushScope","clone","getScope","getStack","getClient","popScope","length","pop","hint","eventId","_lastEventId","event_id","DM","syntheticException","_withClient","originalException","captureMessage","message","level","captureEvent","event","type","lastEventId","addBreadcrumb","breadcrumb","beforeBreadcrumb","maxBreadcrumbs","getOptions","timestamp","yW","mergedBreadcrumb","finalBreadcrumb","Cf","setUser","user","setTags","tags","setExtras","extras","setTag","key","value","setExtra","extra","setContext","name","context","run","oldHub","makeMain","getIntegration","integration","_oO","__SENTRY_DEBUG__","kg","warn","id","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","captureSession","endSession","_sendSessionUpdate","layer","session","getSession","RJ","setSession","startSession","release","environment","global","R","userAgent","navigator","Hv","getUser","currentSession","status","CT","shouldSendDefaultPii","options","Boolean","sendDefaultPii","method","args","sentry","carrier","__SENTRY__","extensions","apply","hub","undefined","registry","getHubFromCarrier","setHubOnCarrier","hasHubOnCarrier","KV","getHubFromActiveDomain","activeDomain","domain","active","registryHubTopStack","_Oo","Y","addGlobalEventProcessor","Scope","_sentry_utils__WEBPACK_IMPORTED_MODULE_4__","_session_js__WEBPACK_IMPORTED_MODULE_0__","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","_notifyScopeListeners","getRequestSession","setRequestSession","requestSession","setFingerprint","fingerprint","setLevel","setTransactionName","setSpan","span","getSpan","getTransaction","transaction","update","updatedScope","Object","keys","PO","contexts","clear","maxCrumbs","Math","min","slice","clearBreadcrumbs","addAttachment","attachment","getAttachments","clearAttachments","applyToEvent","trace","getTraceContext","transactionName","_applyFingerprint","breadcrumbs","sdkProcessingMetadata","_notifyEventProcessors","getGlobalEventProcessors","setSDKProcessingMetadata","newData","processors","index","cW","resolve","reject","processor","result","log","J8","then","final","forEach","lE","concat","updateSession","makeSession","closeSession","_sentry_utils__WEBPACK_IMPORTED_MODULE_0__","startingTime","ph","sid","init","started","duration","errors","ignoreDuration","toJSON","Jr","Date","toISOString","did","attrs","ip_address","ipAddress","user_agent","email","username","module","addExtensionMethods","startIdleTransaction","logger","is","node","instrument","utils","errorCallback","activeTransaction","x1","setStatus","idletransaction","esm_transaction","toTraceparent","sample","samplingContext","rate","sampleRate","zu","sampled","setMetadata","transactionSampling","tracesSampler","Number","parentSampled","tracesSampleRate","i2","JSON","stringify","random","op","_startTransaction","transactionContext","initSpanRecorder","_experiments","maxSpans","idleTimeout","finalTimeout","onScope","io","cu","_autoloadDatabaseIntegrations","packageToIntegrationMapping","mongodb","l$","Mongo","mongoose","mysql","Mysql","pg","Postgres","mappedPackages","filter","moduleName","$y","map","pkg","e","p","integrations","o","hmd","IdleTransaction","DEFAULT_FINAL_TIMEOUT","DEFAULT_IDLE_TIMEOUT","_span_js__WEBPACK_IMPORTED_MODULE_0__","_transaction_js__WEBPACK_IMPORTED_MODULE_2__","IdleTransactionSpanRecorder","gB","_pushActivity","_popActivity","transactionSpanId","maxlen","add","spanId","finish","endTimestamp","_I","activities","__init2","_heartbeatCounter","__init3","_finished","__init4","_beforeFinishCallbacks","_idleHub","_idleTimeout","_finalTimeout","_onScope","clearActiveTransaction","_startIdleTimeout","setTimeout","spanRecorder","spans","keepSpan","startTimestamp","registerBeforeFinishCallback","pushActivity","popActivity","_pingHeartbeat","_cancelIdleTimeout","_idleTimeoutID","clearTimeout","_beat","heartbeatString","join","_prevHeartbeatString","Span","SpanRecorder","_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__","_maxlen","traceId","substring","__init5","__init6","data","spanContext","parentSpanId","description","startChild","childSpan","logMessage","metadata","spanMetadata","setData","setHttpStatus","httpStatus","String","spanStatus","spanStatusfromHttpCode","isSuccess","replace","sampledString","toContext","updateWithContext","h","parent_span_id","span_id","trace_id","start_timestamp","Transaction","_sentry_hub__WEBPACK_IMPORTED_MODULE_1__","Dr","_measurements","_hub","_name","_trimEnd","trimEnd","newName","source","setName","setMeasurement","unit","newMetadata","recordDroppedEvent","finishedSpans","reduce","prev","current","baggage","getBaggage","transaction_info","measurements","existingBaggage","finalBaggage","Gp","_populateBaggageWithSentryValues","Hn","publicKey","public_key","getDsn","sample_rate","toString","segment","user_segment","Hk","msToSec","getActiveTransaction","hasTracingEnabled","_sentry_hub__WEBPACK_IMPORTED_MODULE_0__","maybeOptions","maybeHub","time","isBaggageMutable","getSentryBaggageItems","createBaggage","mergeAndSerializeBaggage","parseBaggageHeader","BAGGAGE_HEADER_NAME","parseBaggageSetMutability","_is_js__WEBPACK_IMPORTED_MODULE_1__","_logger_js__WEBPACK_IMPORTED_MODULE_0__","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","initItems","baggageString","mutable","inputBaggageValue","includeThirdPartyEntries","isArray","HD","baggageEntries","split","entry","trim","test","baggageObj","curr","val","baggageKey","decodeURIComponent","incomingBaggage","thirdPartyBaggageHeader","headerBaggage","thirdPartyHeaderBaggage","baggageEntry","encodeURIComponent","newVal","rawBaggageValue","sentryTraceHeader","htmlTreeAsString","getLocationHref","getDomElement","_global_js__WEBPACK_IMPORTED_MODULE_1__","_is_js__WEBPACK_IMPORTED_MODULE_0__","elem","keyAttrs","nextStr","currentElem","out","height","len","_htmlElementAsString","el","className","classes","attr","i","tagName","toLowerCase","keyAttrPairs","keyAttr","getAttribute","keyAttrPair","allowedAttrs","parentNode","reverse","document","location","href","oO","selector","querySelector","_nullishCoalesce","lhs","rhsFn","_optionalChain","ops","lastAccessLHS","fn","getGlobalObject","getGlobalSingleton","_node_js__WEBPACK_IMPORTED_MODULE_0__","fallbackGlobalObject","g","window","creator","obj","lastHref","debounceTimerID","lastCapturedEvent","addInstrumentationHandler","_global_js__WEBPACK_IMPORTED_MODULE_0__","_is_js__WEBPACK_IMPORTED_MODULE_5__","_logger_js__WEBPACK_IMPORTED_MODULE_1__","_object_js__WEBPACK_IMPORTED_MODULE_3__","_stacktrace_js__WEBPACK_IMPORTED_MODULE_2__","_supports_js__WEBPACK_IMPORTED_MODULE_4__","handlers","instrumented","RU","console","hl","originalConsoleMethod","triggerHandlers","instrumentDOM","triggerDOMHandler","bind","globalDOMEventHandler","makeDOMEventHandler","addEventListener","proto","target","hasOwnProperty","originalAddEventListener","listener","__sentry_instrumentation_handlers__","handlerForType","refCount","handler","originalRemoveEventListener","instrumentXHR","xhrproto","XMLHttpRequest","originalOpen","xhr","url","xhrInfo","__sentry_xhr__","toUpperCase","match","__sentry_own_request__","onreadystatechangeHandler","readyState","status_code","now","onreadystatechange","original","readyStateArgs","originalSend","body","t$","originalFetch","handlerData","fetchData","getFetchMethod","fetchArgs","V9","Request","getFetchUrl","response","error","instrumentHistory","Bf","oldOnPopState","onpopstate","to","from","history","historyReplacementFunction","originalHistoryFunction","_oldOnErrorHandler","onerror","msg","line","column","arguments","_oldOnUnhandledRejectionHandler","onunhandledrejection","$P","globalListener","shouldSkipDOMEvent","isContentEditable","shouldShortcircuitPreviousDebounce","previous","isSyntheticEvent","isString","isThenable","isRegExp","isPlainObject","isDOMError","isInstanceOf","isErrorEvent","isError","isEvent","isDOMException","isNaN","isElement","isPrimitive","objectToString","wat","Error","isBuiltin","Event","Element","base","_e","consoleSandbox","CONSOLE_LEVELS","originalConsole","wrappedLevels","originalWrappedFunc","__sentry_original__","makeLogger","enabled","uuid4","addExceptionTypeValue","addExceptionMechanism","checkOrSetAlreadyCaught","getEventDescription","arrayify","_object_js__WEBPACK_IMPORTED_MODULE_1__","crypto","msCrypto","randomUUID","getRandomByte","getRandomValues","Uint8Array","c","getFirstException","values","firstException","newMechanism","currentMechanism","mechanism","handled","mergedData","__sentry_captured__","xp","err","maybeArray","Array","dynamicRequire","isNodeEnv","loadModule","process","__SENTRY_BROWSER_BUNDLE__","mod","request","require","cwd","normalize","normalizeToSize","object","depth","maxSize","normalized","encodeURI","hasWeakSet","inner","stacktrace","input","maxProperties","visit","memo","WeakSet","has","delete","splice","memoize","unmemoize","includes","stringified","stringifyValue","_events","Cy","getPrototypeOf","startsWith","valueWithToJSON","jsonValue","numAdded","visitable","Sh","visitKey","visitValue","ERROR","markFunctionWrapped","getOriginalFunction","dropUndefinedKeys","convertToPlainObject","urlEncode","fill","addNonEnumerableProperty","extractExceptionKeysForMessage","_browser_js__WEBPACK_IMPORTED_MODULE_1__","_string_js__WEBPACK_IMPORTED_MODULE_2__","replacementFactory","wrapped","defineProperty","writable","configurable","func","VZ","stack","getOwnProperties","cO","newObj","serializeEventTarget","currentTarget","CustomEvent","detail","kK","Rt","extractedProps","property","maxLength","sort","$G","includedKeys","serialized","inputValue","_dropUndefinedKeys","memoizationMap","memoVal","get","returnValue","set","item","Map","createStackParser","parsers","sortedParsers","a","b","skipFirst","frames","cleanedLine","parser","frame","stripSentryFramesAndReverse","localStack","firstFrameFunction","function","lastFrameFunction","indexOf","filename","stackParserFromStackParserOptions","stackParser","getFunctionName","defaultFunctionName","truncate","safeJoin","isMatchingPattern","str","max","substr","delimiter","output","pattern","Kj","supportsFetch","supportsHistory","isNativeFetch","supportsNativeFetch","Headers","Response","fetch","doc","createElement","sandbox","hidden","head","appendChild","contentWindow","removeChild","chrome","isChromePackagedApp","app","runtime","hasHistoryApi","pushState","replaceState","rejectedSyncPromise","resolvedSyncPromise","SyncPromise","States","reason","_","_state","PENDING","_handlers","executor","_resolve","_reject","onfulfilled","onrejected","_executeHandlers","catch","finally","onfinally","isRejected","_setResult","RESOLVED","REJECTED","state","_value","cachedHandlers","browserPerformanceTimeOrigin","timestampWithMs","timestampInSeconds","dateTimestampInSeconds","_node_js__WEBPACK_IMPORTED_MODULE_1__","dateTimestampSource","nowSeconds","platformPerformance","getNodePerformance","perfHooks","performance","getBrowserPerformance","timeOrigin","timestampSource","performanceNow","dateNow","timeOriginDelta","abs","navigationStart","timing","navigationStartDelta","hasNavigationStart","parseUrl","query","fragment","host","path","protocol","relative","stripUrlQueryAndFragment","urlPath","__unused_webpack_exports","_global","SENTRY_RELEASE","ref","ref1","exports","env","__NEXT_P","r","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_2__","react_gtm_module__WEBPACK_IMPORTED_MODULE_3__","react_gtm_module__WEBPACK_IMPORTED_MODULE_3___default","n","GTM_ID","param","Component","pageProps","useEffect","initialize","gtmId","jsx","Fragment","children","__unused_webpack___webpack_exports__","originalFunctionToString","cachedFetchImpl","_lcpEntry","_clsEntry","previousLocation","prevTransactionName","defaultBrowserTracingIntegration","SDK_VERSION","esm_logger","misc","string","DEFAULT_IGNORE_ERRORS","InboundFilters","__initStatic","_options","setupOnce","eventProcess","ignoreErrors","clientOptions","_shouldDropEvent","_mergeOptions","internalOptions","allowUrls","denyUrls","ignoreInternal","_isSentryError","jH","_getPossibleEventMessages","some","zC","_isDeniedUrl","_getEventFilterUrl","_isAllowedUrl","_getLastValidUrl","FunctionToString","Function","HK","esm_scope","esm_hub","installedIntegrations","filterDuplicates","acc","every","accIntegration","esm_global","supports","esm_session","SentryError","logLevel","setPrototypeOf","DSN_REGEX","dsn_dsnToString","dsn","withPassword","pass","port","projectId","dsnFromComponents","components","syncpromise","createEnvelope","headers","items","forEachEnvelopeItem","envelope","envelopeItems","envelopeItemType","envelopeItem","encodeUTF8","textEncoder","utf8","TextEncoder","encode","serializeEnvelope","envHeaders","parts","append","next","itemHeaders","payload","concatBuffers","buffers","totalLength","buf","merged","offset","buffer","ITEM_TYPE_TO_DATA_CATEGORY_MAP","sessions","client_report","user_report","getEnvelopeEndpointWithUrlEncodedAuth","tunnelOrOptions","tunnel","sdkInfo","_metadata","sdk","_j","sentry_key","sentry_version","sentry_client","esm_baggage","getSdkMetadataForEnvelopeHeader","ALREADY_SEEN_ERROR","BaseClient","_integrations","_integrationsInitialized","_numProcessing","_outcomes","_dsn","validateDsn","requiredComponents","component","parseInt","dsnFromString","exec","lastPath","projectMatch","_transport","transport","transportOptions","YO","_process","eventFromException","_captureEvent","promisedEvent","pt","eventFromMessage","_isEnabled","sendSession","getTransport","flush","timeout","_isClientDoneProcessing","clientFinished","transportFlushed","WD","close","integrationIndex","getIntegrationById","integrationId","sendEvent","createEventEnvelope","dynamicSamplingContext","eventType","samplingMethod","packages","envelopeHeaders","sent_at","sample_rates","attachments","addItemToEnvelope","newItem","createAttachmentEnvelopeItem","content_type","contentType","attachment_type","attachmentType","_sendEnvelope","category","sendClientReports","_updateSessionFromEvent","crashed","errored","exceptions","ex","sessionNonTerminal","ticked","interval","setInterval","clearInterval","_prepareEvent","normalizeDepth","normalizeMaxBreadth","prepared","_applyClientOptions","_applyIntegrationsMetadata","finalScope","evt","_normalizeEvent","maxBreadth","Fv","dist","maxValueLength","integrationsArray","_processEvent","finalEvent","sentryError","beforeSend","$2","isTransaction","__sentry__","_ensureBeforeSendRv","rv","nullErr","processedEvent","promise","send","_clearOutcomes","outcomes","quantity","exceptionFromError","parseStackFrames","eventFromError","popSize","getPopSize","framesToPop","reactMinifiedRegexp","eventFromUnknownInput","attachStacktrace","isUnhandledRejection","VW","errorEvent","TX","fm","domException","eventFromString","Db","code","eventFromPlainObject","zf","__serialized__","Qy","EG","synthetic","browser","validSeverityLevels","esm_url","BREADCRUMB_INTEGRATION_ID","Breadcrumbs","dom","_consoleBreadcrumb","serializeAttribute","_xhrBreadcrumb","_fetchBreadcrumb","_historyBreadcrumb","nK","parsedLoc","en","parsedFrom","parsedTo","getNativeFetchImplementation","Du","fetchImpl","globalObject","BrowserClient","visibilityState","_flushOutcomes","breadcrumbIntegration","platform","discarded_events","isRealNavigator","sendBeacon","Ak","credentials","keepalive","createFrame","lineno","colno","in_app","chromeRegex","chromeEvalRegex","subMatch","extractSafariExtensionDetails","geckoREgex","geckoEvalRegex","gecko","winjsRegex","winjs","defaultStackParser","pE","isSafariExtension","isSafariWebExtension","esm_exports","ignoreOnError","wrap","before","wrapper","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","$e","Tb","$Q","descriptor","getOwnPropertyDescriptor","DEFAULT_EVENT_TARGET","TryCatch","eventTarget","requestAnimationFrame","_wrapTimeFunction","_wrapRAF","_wrapXHR","eventTargetOption","_wrapEventTarget","originalCallback","xmlHttpRequestProps","prop","wrapOptions","originalFunction","eventName","handleEvent","originalEventHandler","wrappedEventHandler","GlobalHandlers","_installFunc","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","stackTraceLimit","installFunc","getHubAndOptions","shouldIgnoreOnError","groups","_enhanceEventWithInitialFrame","addMechanismAndCapture","ev","ev0","ev0s","ev0sf","l4","LinkedErrors","_key","_limit","limit","_handler","linkedErrors","_walkErrorTree","Dedupe","eventProcessor","currentEvent","previousEvent","currentMessage","previousMessage","previousException","currentException","_previousEvent","_isSameFingerprint","_isSameStacktrace","_getExceptionFromEvent","currentFrames","_getFramesFromEvent","previousFrames","frameA","frameB","currentFingerprint","previousFingerprint","httpcontext_global","HttpContext","referrer","Referer","createTransport","makeRequest","makePromiseBuffer","remove","task","$","taskProducer","drain","counter","capturedSetTimeout","bufferSize","rateLimits","filteredEnvelopeItems","envelopeItemDataCategory","isRateLimited","limits","disabledUntil","all","filteredEnvelope","recordEnvelopeLoss","requestTask","statusCode","updateRateLimits","updatedRateLimits","rateLimitHeader","retryAfterHeader","retryAfter","categories","headerDelay","delay","parseRetryAfterHeader","header","headerDate","parse","makeFetchTransport","nativeFetch","requestOptions","referrerPolicy","fetchOptions","makeXHRTransport","getResponseHeader","open","setRequestHeader","defaultIntegrations","startSessionOnHub","hubextensions","TRACEPARENT_REGEXP","extractTraceparentData","traceparent","matches","backgroundtab_global","bindReporter","metric","reportAllChanges","prevValue","forceReport","delta","generateUniqueID","floor","initMetric","entries","observe","PerformanceObserver","supportedEntryTypes","po","l","getEntries","buffered","onHidden","cb","once","onHiddenOrPageHide","removeEventListener","getCLS","onReport","report","sessionValue","sessionEntries","entryHandler","hadRecentInput","firstSessionEntry","lastSessionEntry","startTime","takeRecords","firstHiddenTime","initHiddenTime","Infinity","trackChanges","timeStamp","getVisibilityWatcher","getFID","visibilityWatcher","processingStart","disconnect","reportedMetricIDs","getLCP","stopListening","capture","isMeasurementValue","isFinite","_startChild","ctx","metrics_global","getBrowserPerformanceAPI","_performanceCursor","_addPerformanceNavigationTiming","eventEnd","end","start","XL","defaultRequestInstrumentationOptions","traceFetch","traceXHR","tracingOrigins","router_global","DEFAULT_BROWSER_TRACING_OPTIONS","nT","mg","markBackgroundTransactions","routingInstrumentation","customStartTransaction","startTransactionOnPageLoad","startTransactionOnLocationChange","startingUrl","pathname","enableLongTask","BrowserTracing","_emitOptionsWarning","_metricOptions","startTrackingWebVitals","Z1","mark","_reportAllChanges","x","_2","_3","_4","_getCurrentHub","instrumentRouting","shouldCreateSpanForRequest","_createRouteTransaction","statusType","instrumentOutgoingRequests","urlMap","defaultShouldCreateSpan","origins","origin","shouldCreateSpan","fetchCallback","__span","addTracingHeaders","bU","headerBaggageString","find","xhrCallback","__sentry_xhr_span_id__","getRequestHeader","beforeNavigate","parentContextFromHeader","extractTraceDataFromMetaTags","sentrytraceValue","getMetaContent","baggageValue","sentrytraceData","rg","expandedContext","modifiedContext","finalContext","idleTransaction","lb","addPerformanceEntries","responseStartTimestamp","requestStartTimestamp","performanceEntries","entryType","requestStart","responseEnd","responseStart","measureStartTimestamp","firstHidden","shouldRecord","resourceName","_addResourceSpans","initiatorType","transferSize","encodedBodySize","decodedBodySize","_trackNavigator","connection","effectiveType","rtt","downlink","deviceMemory","hardwareConcurrency","oldValue","normalizedValue","measurementTimestamp","fidMark","cls","measurementName","element","size","sources","metaName","metaTag","qT","__SENTRY_TRACING__","ro","router","router_default","client_global","DEFAULT_TAGS","nextRouterInstrumentation","startTransactionCb","route","traceParentData","params","extractNextDataTagInformation","nextData","nextDataTag","getElementById","innerHTML","nextDataTagInfo","page","props","_sentryBaggage","_sentryTraceData","XM","ready","routerPrototype","changeStateWrapper","originalChangeStateWrapper","as","newTransactionName","rt","addIntegrationToArray","userIntegrations","includesName","setNestedKey","keyPath","SENTRY_DSN","NEXT_PUBLIC_SENTRY_DSN","names","addIntegration","userIntegrationsFunc","integrationsNames","alwaysLastToRun","autoSessionTracking","Sq","userIntegration","debug","enable","initialScope","startSessionTracking","filterTransactions","u","t","defaultSetTimout","defaultClearTimeout","runTimeout","cleanUpNextTick","drainQueue","runClearTimeout","Item","fun","array","noop","nextTick","title","argv","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","chdir","umask","__nccwpck_require__","ab","__dirname","_warn2","__esModule","default","_ref","events","dataLayer","dataLayerName","preview","gtm_auth","auth","gtm_preview","script","iframe","dataLayerVar","_dataLayer","_Snippets2","dataScript","gtm","snippets","noScript","noscript","_ref$events","_ref$dataLayerName","_ref$auth","_ref$preview","insertBefore","childNodes","_ref2","_ref2$dataLayerName","_TagManager2","__webpack_exec__","moduleId","O","_N_E"],"sourceRoot":""}